Как пометить текст в скобках в Emacs? - PullRequest
18 голосов
/ 04 марта 2011

Любая такая функция или сценарий elisp?Я хочу эквивалентную функцию как последовательность vi в vim.

Ответы [ 4 ]

23 голосов
/ 04 марта 2011

Попробуйте последовательность клавиш CMu CM-SPC (то есть, удерживая клавиши Control и Meta , нажмите u и Пробел в последовательности), который выполняет команды backward-up-sexp и mark-sexp.

Редактировать:

Я допустил ошибку: 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)
7 голосов
/ 07 марта 2014

расширенный регион (который связан с C- =) прекрасно работает.

1 голос
/ 18 января 2019

При связывании клавиш Emacs M-m v прекрасно работает.

0 голосов
/ 24 июля 2016

Xah Lee имеет функцию emacs-lisp, которая выполняет эту функцию, которая называется xah-select-text-in-quote. Он доступен на его сайте :

Выберите текст между ближайшими левым и правым разделителями.Разделители здесь включают следующие символы: \ "<> () {} []« »''› «» 「」 »» ») 〈)) (). Эта команда неправильно обрабатывает вложенные символыскобки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...