如何设置 Vim 键盘映射以启动命令

如何设置 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

但是,如果我we输入中间命令行;例如,:s/answer/42/扩展为:s/answ|er/42/we只有当它出现在开始命令?

答案1

这里是使用缩写的好地方。从: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"

相关内容