在vim中有没有一种方法可以让:W做与:W相同的事情?

在vim中有没有一种方法可以让:W做与:W相同的事情?,vim,Vim,对于:q和:q也是一样。我几乎总是不会很快地停止轮班,而且看到:q和:W没有被使用,我想让它们和小写的对应物一样做会很好。是的,你可以在你的.vimrc中重新映射它们,就像这样: cabb W w cabb Q q 或 缺点是,在这两种情况下,“W”将扩展为“W”(cmap显示更改,cabb不显示) 在Vim中,通常很容易重新映射密钥以满足您的需要。请尝试阅读以下教程: 编辑: 正如@IngoKarkat所指出的,这是一个黑客式的解决方案。我把它留在这里是因为它又快又容易。然而,缺点是显而易见

对于:q和:q也是一样。我几乎总是不会很快地停止轮班,而且看到:q和:W没有被使用,我想让它们和小写的对应物一样做会很好。

是的,你可以在你的.vimrc中重新映射它们,就像这样:

cabb W w
cabb Q q

缺点是,在这两种情况下,“W”将扩展为“W”(
cmap
显示更改,
cabb
不显示)

在Vim中,通常很容易重新映射密钥以满足您的需要。请尝试阅读以下教程:

编辑:
正如@IngoKarkat所指出的,这是一个黑客式的解决方案。我把它留在这里是因为它又快又容易。然而,缺点是显而易见的;它会干扰其他用途。

黑客是通过
:cmap
:cabb
进行的,但这些都有副作用(即,其他实例也会被无意中转换)

这项工作做得更好

但我认为对于您的用例,最好定义您自己的大写命令变体。主要挑战是支持原始版本的所有选项:

command! -bang -range=% -complete=file -nargs=* W <line1>,<line2>write<bang> <args>
command! -bang Q quit<bang>
命令-bang-range=%-complete=file-nargs=*W,write
命令-bang Q退出

noremap对我有效,没有已知的副作用

noremap :W :w

这不是对你问题的回答,而是对你问题的一种解决办法——“我几乎总是不能足够快地放松轮班”。交换冒号和分号的含义。然后不需要移位,因为您将使用
;w
;q

nnoremap ; :
nnoremap : ;
vnoremap ; :
vnoremap : ;
假设您正在寻找一种更快的方法来执行
:wq
实际上,这是ESC的组合,然后:(它本身就是Shift+;)然后w,然后q,然后回车。五次击键,如果你算上六次:等于两次


相反,请尝试ESC,然后(按住)按住Shift键,然后再次按Z键(否:根本不按)。它将立即保存并退出文件。少一次击键(或两次,取决于你如何计算),再加上更难搞糟。

这会产生不良副作用;e、 那么你如何搜索大写的“威利”或“女王”呢?谢谢。我是vimrc的新手,所以在查看wiki和帮助时,我很难理解关键映射。我不确定我是否找到了你链接的页面,但该页面似乎很好地解释了一切。再次感谢!这确实是一个不切实际的解决方案@IngoKarkat的解决方案更好,我建议您接受他的方案。不要这样做-它会阻止在命令行中输入大写字母W和Q谢谢。另外,如何取消映射命令?我想对:x和:x做同样的事情,因为我从来没有使用过加密。另外,你写的和:command有区别吗!Q命令!Ww@dwcanillas::X是特殊的;通常Vim命令是小写的。您必须使用cmdalias来执行该操作。@dwcanillas:simple
命令!W
不会传递范围或文件名。命令并不像映射那样被简单地替换!Ingo:为什么定义大写命令变体比使用cmdalias插件更好?我的处境与OP相同:我不断发现自己输入的是:W而不是:W。这种方法的副作用是,在输入
之后,命令行模式变为活动状态之前,现在有一个延迟。这是最低限度的,但我发现这种缺乏即时反馈的情况令人恼火。是的,我想如果我只键入
,但我几乎从不键入
,然后在键入命令之前等待命令模式变为活动状态,这样我就不会感到困扰。@IngoKarkat
nnoremap:W:W,它将消除滞后
,虽然这本身不是问题的答案,但它是根本问题的解决方案。一个大的+1。但是,“shift+z+z”不是
:wq
的快捷方式,而是
:x
的快捷方式。区别在这里解释如下:
nnoremap ; :
nnoremap : ;
vnoremap ; :
vnoremap : ;