繁体   English   中英

为什么<Ca>(CTRL + A)在Windows下的gvim下不起作用?

[英]Why does < C-a> (CTRL+A) not work under gvim on windows?

我正在尝试使用vim下的<Ca>( CTRL + A )shorcut来增加光标下的变量。 这在Linux上运行的vim下工作正常。 然而,当我尝试在windows下的gvim中执行此操作时,它“选择所有”(即突出显示或在视觉上选择当前窗口中的所有文本)。 如何更改此行为,或者如何恢复增量变量功能(例如,可能使用不同的键映射)?

这是因为mswin.vim是由安装vim时生成的默认_vimrc提供的。 只需使用* nix下使用的.vimrc覆盖_vimrc,或删除mswin.vim。

我知道我迟到了,但我想我会分享以下内容:

nnoremap <kPlus> <C-a>
nnoremap <kMinus> <C-x>

这会将增量重新映射到数字小键盘上的+键,然后递减到-键。 这是我在Windows上自己的_vimrc文件中使用的解决方案。 它保持了Windows兼容性,并且比原始的Ctrl + A / Ctrl + X更容易记忆。

Windows上的Vim默认具有专门的键映射,使快捷键更具“windows-y”。 它们在$ VIMRUNTIME \\ mswin.vim文件中指定,该文件通过vimrc加载,除非您禁用它。 您可以编辑mswin.vim文件(您可能希望编辑副本,更改您的vimrc以使用您编辑的副本)。

我不完全确定它是默认的Vim映射,因为我在帮助文件中的Ctrl + A上找到的唯一引用就是这个,这似乎不是你所指的:

*c_CTRL-A*
CTRL-A      All names that match the pattern in front of the cursor are
              inserted.

因此,您可能需要检查Linux框以查看是否有任何插件或任何内容更改了键映射。 (当然,可能是因为我找不到Vim帮助的相应部分。)

在随gvim提供的当前版本的mswin.vim中,该文件检查名为skip_loading_mswin的全局值; 如果设置,则跳过文件的其余部分; 因此添加就足够了

let skip_loading_mswin=1

$HOME/_vimrc并且下次启动vim时将恢复正常的vim绑定。

如果你只是不喜欢Ctrl A行为,但对VIM中的其他Windows行为(如Ctrl Z for undo)没问题,只需禁用该特定行:

  1. 编辑所述文件( c:\\Program Files\\Vim\\vim73\\mswin.vim
  2. 找到以CTRL-A is Select all开头的段落CTRL-A is Select all
  3. 在该段落的所有(6)行前面加上左括号( "
  4. 重新打开GVIM窗口。

您仍然可以通过键入ggVG (在第一行放置光标,选择整行,选择直到文档的最后一行)来“全选”。

快乐递增!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM