Я часто использую несколько вызовов, forward-word
за которыми следует один, backward-word
чтобы переместить точку в начало слова в строке. Я думаю, я никогда не привык к тому, что он forward-word
отличается от Vim, w
и даже после многих лет использования Emacs я не могу привыкнуть к разнице.
Есть ли функция, которую я мог бы использовать вместо того, forward-word
чтобы не перепрыгивать через слова, а останавливается также в начале слова? Существуют ли другие стратегии перехода к началу слова при перемещении точки вперед, которые не требуют многократного выполнения forward-char
?
Ответы:
misc
Пакет (поставляется с Emacs) имеет встроенную функциюforward-to-word
, которая делает то , что я думаю , что вы хотите:Чтобы использовать его, сначала добавьте
(require 'misc)
в ваш файл конфигурации.источник
w
. Насколько я вижу, существует почти идеальное отображение vim-to-emacs:w
=forward-to-word
;e
=forward-word
;b
=backward-word
;ge
=backward-to-word
. Но я не опытный пользователь vim, так что, может быть, мне не хватает какой-то тонкости.w
,e
иb
просто размываю, и я просто передвигаюсь. Weird. Я был уверен, чтоw
остановился в обеих точках! Итак, я приму ваш ответ, потому что он точно соответствует моему вопросу :)Вы можете привязать приведенную ниже функцию к
M-f
и привязать оригиналforward-word
кM-F
. Эта функция просто принимаетarg
и передает ееforward-word
функции. Таким образом, универсальные аргументы будут работать так же хорошо, как и с исходной функцией.Слово предостережения, хотя, что вышеупомянутая функция не всегда может делать правильные вещи ; это очень сильно зависит от того, находится ли точка в начале слова или нет.
Вот еще один способ реализации описанного выше, где граница слова не соответствует синтаксической таблице, а строго разделена пробелами:
Кредит идет на @glucas для этой идеи.
источник
После долгого и мучительного поиска идеальных функций «вперед / назад» я нашел следующее, чем я теперь очень доволен:
источник
Если вы готовы к использованию
evil
,w
в нормальном состоянии привязанevil-forward-word-begin
, что является функциональностью в стиле Vim, к которой вы стремитесь.источник
evil
давно, но с тех пор я используюgod-mode
и обычные привязки Emacs.Как вы упомянули, хитрость заключается в том, чтобы идти вперед на два слова, а затем на одно слово назад.
Следующее должно сделать трюк и должно уважать другие режимы, такие как режим подслов.
Это элементарная версия /emacs//a/4272/508 , которая не охватывает некоторые случаи, но проще для понимания.
источник