vim - 取消映射预定义命令,特别是 X

问题描述 投票:0回答:1

相当简单,我从来不想使用 vim 加密文件(如果我这样做,我可以暂时恢复它),所以我想在尝试输入

:X
时删除
:x
作为可能的操作(这需要我键盘上的 Shift 键是第一个键,但不是第二个键)。要么重新映射它来复制
:x
,要么什么都不做,即找不到命令或其他什么。

unmap
命令不起作用,它不是映射,并且我无法使用
command X x
来做我想要的事情,因为
X
保留名称

vim
1个回答
0
投票

:X
不是映射,因此尝试“取消映射”它是没有意义的。

不过,您可以做两件事中的任何一个。

普通模式映射

由于

:x
:X
都是在正常模式下输入的,因此您可以创建一个正常模式映射,当您执行
:x
时,它也会执行
:X
:

nnoremap :X :x

命令行模式映射

或者您可以创建命令行模式映射:

cnoremap X x

问题是,Vim 将在命令行中将

X
扩展为
x
anywhere,例如,如果您想在文件名中使用
X
,这可能会很麻烦。通过检查光标的位置可以轻松解决此问题:

cnoremap <expr> X getcmdpos() == 1 ? 'x' : 'X'

参考:

:help mapmode-c
:help :map-<expr>
:help getcmdpos()
:help ternary
© www.soinside.com 2019 - 2024. All rights reserved.