Когда я нахожусь в середине Looooong строки, как следующий
(setq Emacs-beta "Which keyboard shortcut to use for navigating out of a string")
Могу ли я пропустить это, прямо перед первым "
(после Emacs-бета) с ярлыком?
key-bindings
string
Dieter.Wilhelm
источник
источник
C-r " C-b
.Ответы:
Emacs 25 или новее
Вы хотите,
C-M-u
который запускает командуbackward-up-list
.источник
Emacs-24.5 -Q
в строке, но я получаю с КУМ:up-list: Scan error: "Unbalanced parentheses"
?Это выполнимо так:
В режиме lispy нажатие [приведет вас к началу списка содержимого, выходя из любой строки. Как только вы окажетесь в начале списка, вы можете легко добраться до других частей, например, до конца
Emacs-beta
печати 2m.источник
На самом деле это очень интересный вопрос программирования Emacs Lisp. Мы можем держать forward-char или backward-char, пока не обнаружим, что символ под курсором не является частью строки.
Вы можете использовать шрифт, чтобы решить, находится ли символ внутри строки. Это отличный трюк, который я узнал из flyspell. Теоретически он не идеален, но в реальном мире он работает практически с основными режимами любого языка программирования на Emacs23, Emacs24, Emacs25 .
Вот полный код:
Применение:
(goto-edge-by-comparing-font-face 1)
перейти к правому краю,(goto-edge-by-comparing-font-face -1)
перейти к левому краюbackward-up-list
не очень надежен с точки зрения пользователя, потому что он разработан как общая команда, основанная наscan-sexps
. Например, для кодаif (true) { return 'hello world'; }
в режиме js2 он переместит фокус на{
символ вместо первого символа одинарных кавычек. Для кодаprintf("hello world")
в режиме c ++ - он не будет работать. Я тестировал с Emacs 24.5источник
backward-char
или,forward-char
если вы переместите курсор за пределы края.)
. Таким образом, в зависимости от режимов, ваш код имеет различное поведение.Вот еще один способ (который я использую чаще) только для разнообразия. Решение не относится только к строкам, но оно работает и для этого варианта использования.
iy-go-to-char
(также доступно на Melpa).iy-go-to-char-backward
иiy-go-to-char
ваши предпочтительные привязки. Ради этого объяснения, скажем, вы связаныiy-go-to-char-backward
сC-c C-,
иiy-go-to-char
кC-c C-.
.Теперь, если вы находитесь внутри строки, вы должны позвонить
iy-go-to-char-backward
и напечатать"
.Это будет выглядеть так
C-c C-, "
. Если выiy-go-to-char-continue-when-repeating
установилиt
(по умолчанию),"
повторное нажатие приведет вас к появлению"
символа до этого и так далее.Если вы находитесь внутри строки и хотите перейти к концу строки, вы должны позвонить
iy-go-to-char
и набрать"
.Это будет выглядеть так
C-c C-. "
. Если выiy-go-to-char-continue-when-repeating
установилиt
(по умолчанию),"
повторное нажатие приведет вас к следующему"
появлению символа.источник