Любая такая функция или elisp script? Я хочу, чтобы эквивалентная функция представляла собой последовательность vi в vim.
Как пометить текст между круглыми скобками в Emacs?
Ответ 1
Попробуйте последовательность клавиш C-M-u C-M-SPC (т.е. удерживая клавиши Control и Meta, последовательно нажмите u и Space), которая выполняет команды backward-up-sexp
и mark-sexp
.
Edit:
Я допустил ошибку: backward-up-sexp
не существует в стандартном Emacs. Я написал это точно из-за проблемы, упомянутой в комментарии lkahtz, что существующая функция backward-up-list
не будет работать, если точка находится между двойными кавычками.
(defun backward-up-sexp (arg) (interactive "p") (let ((ppss (syntax-ppss))) (cond ((elt ppss 3) (goto-char (elt ppss 8)) (backward-up-sexp (1- arg))) ((backward-up-list arg))))) (global-set-key [remap backward-up-list] 'backward-up-sexp)
Ответ 2
expand-region (который связан с C- =) отлично работает.
Ответ 3
Xah Lee имеет функцию emacs- lisp, которая достигает этого с помощью xah-select-text-in-quote
. Он доступен на его веб-сайте:
Выберите текст между ближайшими левыми и правыми разделителями. Разделители здесь включают следующие символы:\ "< > () {} []" "< > " "「 」「 」【】 〖〗" "< > 〔〕(). Эта команда неправильно обрабатывает вложенные скобки.
Ответ 4
С Emacs связывание клавиш Mm v
отлично работает.