Как установить сопоставление клавиатуры Vim для начала команды

Я часто пишу активный буфер Vim с помощью :w , затем перезагружаю буфер с помощью :e чтобы сбросить историю отмены / повтора. Я делаю это так часто, я обновил файл .vimrc с помощью сопоставления команд для :we , чтобы сделать оба за один шаг:

 " Reset undo/redo buffer on reload set undoreload=0 " Write and clear undo/redo buffer cnoremap we w\|e 

Однако это сопоставление все еще выполняется, если я вхожу в середину командной строки; например :s/answer/42/ расширяется до :s/answ|er/42/ . Можно ли отобразить we только в том случае, если оно появляется в начале команды?

Здесь хорошее место для использования сокращений. От :h abbreviations

 2. Abbreviations *abbreviations* *Abbreviations* Abbreviations are used in Insert mode, Replace mode and Command-line mode. If you enter a word that is an abbreviation, it is replaced with the word it stands for. This can be used to save typing for often used long words. And you can use it to automatically correct obvious spelling errors. Examples: :iab ms Microsoft :iab tihs this 

Удобная вещь об аббревиатурах вместо сопоставлений заключается в том, что они будут срабатывать только в том случае, если все слово является вашей аббревиатурой.

Я бы рекомендовал запустить:

 :cnoreabbrev we w\|e 

Я проверил это, и я могу подтвердить, что замена:

 :s/answer/42 

по-прежнему не может быть расширена до :s/answ|er/42 . Однако будьте осторожны, этот подход не является полностью надежным! Иногда вы можете столкнуться с проблемами. Например, гостиницы

 :let foo = "we" 

расширяется до

 :let foo = "w|e"