Изменение поведения emacs forward-word/backward-ward (как в vi/vim)

Каким будет самый простой способ иметь такое же поведение, что и в vim для навигации по словам и назад? В vim, когда вы нажимаете "w", он перемещает курсор вперед на одно слово, где слово состоит из последовательности букв, цифр и символов подчеркивания или последовательности других непустых символов, разделенных пробелом (пробелы, EOL). С другой стороны, в emacs он пропускает до конца следующего слова, а слово определяется для каждого режима в таблице синтаксиса.

Например: имея курсор в начале строки, следующий показывает, где vim помещает курсор, когда вы выполняете операцию forward-word ( "w" ):

opt1.arg = opt2.arg
^   ^^   ^ ^   ^^  ^

В emacs это похоже на:

opt1.arg = opt2.arg
^   ^   ^      ^   ^

Это действительно зависит от одного предпочтения, но я предпочитаю стиль vim лучше, и мне было интересно, какой самый простой способ иметь то же самое в emacs. Я думаю, что я не один, кто переключился с vim на emacs, так что, возможно, у кого-то уже есть решение, идеально для kill-word и backward-kill-word:)

Я знаю, что вы можете получить что-то подобное комбинацией M-f, M-b и т.д., но это не главное. Я также не хочу начинать обсуждение, какой подход лучше - topis хорошо обсуждается в здесь.

Ответ 1

Фактически вы можете использовать 'viper-forward-word

(require 'viper)
(global-set-key (kbd "M-f") 'viper-forward-word)
(global-set-key (kbd "M-b") 'viper-backward-word)

Ответ 2

В основном дубликат этого, в котором говорится:

(require 'misc)

Затем привяжите все ключи, которые вы хотите, к forward-to-word и backward-to-word. Для убийства создайте несколько простых функций, которые обертывают эти функции и убивают.

Ответ 3

Я не знаю, почему ответ jpkotta был удален, но здесь он снова:

У меня есть второстепенный режим, который изменяет текстовые команды для работы с изменениями синтаксиса (а также CamelCaseSubwords). Это может быть немного слишком мелкозернистым для некоторых вкусов, но я считаю, что я в основном когда-либо использовал одно движение символов.

https://bitbucket.org/jpkotta/syntax-subword

@mods, я не знаю, почему этот ответ будет удален, поэтому, если вы также захотите удалить этот ответ, я буду благодарен за объяснение.