禁用加密:在vim中使用X.

时间:2013-07-22 16:01:18

标签: vim

当我打算输入:X

时,我发现自己正在点击:x

有没有办法禁用:X加密,以便在vim中输入:X无效?

我假设有一个命令可以放在.vimrc文件中?

4 个答案:

答案 0 :(得分:10)

有一种使用cnoreabbrev / cnoremap的标准方法:在用X替换x之前检查它是否是命令行中的唯一字符:

cnoremap <expr> X (getcmdtype() is# ':' && empty(getcmdline())) ? 'x' : 'X'

cnoreabbrev <expr> X (getcmdtype() is# ':' && getcmdline() is# 'X') ? 'x' : 'X'

。不同之处在于,首先会阻止您输入:Xfoo(将转换为:xfoo),第二个不会,但会阻止输入:X!(将转换为:x!确实有道理,不像:X!)。

搜索(/X很好),input()提示符等等没有区别,如果键入的X不是第一个,则没有区别。

答案 1 :(得分:5)

使用:cnoreabbrev覆盖:X,其功能与:x相同:

cnoreabbrev X x

:cnoreabbrev首选:cabbrev,因为:x可能已经重新映射到其他内容。

请注意,通常使用cabbrev会影响命令行中的所有单字母单词X,例如:X X会转换为:x x,可能不是预期的。请参阅@ ZyX的答案以解决此问题。

答案 2 :(得分:1)

你可以使用:cmap将X映射到x,但是有副作用,比如无法在任何地方使用字母X

:cmap X x

对于稍微不那么具有侵入性的版本

:cmap X^M x^M

只会在您之后立即按Enter键时将X映射到x。

答案 3 :(得分:1)

cmdalias.vim - Create aliases for Vim commands插件提供了更强大的ZyX答案实现。如果您不介意安装插件,那么您可以通过一种舒适且可扩展的方式来定义缩写:

:Alias X x