如何在Windows下的Vim中递增(在CTRL-A不起作用的情况下…)

如何在Windows下的Vim中递增(在CTRL-A不起作用的情况下…)

How to increment in vim under windows (where CTRL-A does not work…)

虽然CtrlX在Windows下的vim中可以正常工作,但CtrlA选择所有(duh)。

在Windows下是否可以通过击键来增加数字?


您可以通过在vim目录中打开\\'mswin.vim \\'文件并找到如下所示的部分来使CtrlA在Windows中递增:

1
2
3
4
5
6
7
" CTRL-A is Select all
noremap <C-A> gggH<C-O>G
inoremap <C-A> <C-O>gg<C-O>gH<C-O>G
cnoremap <C-A> <C-C>gggH<C-O>G
onoremap <C-A> <C-C>gggH<C-O>G
snoremap <C-A> <C-C>gggH<C-O>G
xnoremap <C-A> <C-C>ggVG

注释所有这些行,如下所示:

1
2
3
4
5
6
7
" CTRL-A is Select all
"noremap <C-A> gggH<C-O>G

"inoremap <C-A> <C-O>gg<C-O>gH<C-O>G

"cnoremap <C-A> <C-C>gggH<C-O>G

"onoremap <C-A> <C-C>gggH<C-O>G

"snoremap <C-A> <C-C>gggH<C-O>G

"xnoremap <C-A> <C-C>ggVG

CtrlA击键将增加。

当您的键盘没有实号键盘时,这是一个非常不错的选择。


我意识到这是一个古老的问题,但是我今天基于以下问题遇到了另一个选择。使gvim像在Linux上那样运行,将使CTRL-A可以按您期望的那样工作:

如何使Windows上的gvim表现得像Linux控制台vim一样?

_vimrc的一部分包含以下各项。这些导致许多控制字符的行为像在Windows上一样。

1
2
3
4
set nocompatible
source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
behave mswin

我用"注释掉了mswin行和set nocompatible行。从那里,我添加了set compatible。这会导致gvim像在Linux上那样工作。因此,我的样子如下:

1
2
3
4
5
set compatible
source $VIMRUNTIME/vimrc_example.vim
"set nocompatible

"source $VIMRUNTIME/mswin.vim

"behave mswin

我今天刚刚学到了这个技巧,所以如果我对信息的理解不完全正确,请告诉我。


尝试使用Ctrl-NumPad吗?

(从这里开始)


我修改了TMealy的解决方案,以便CtrlA仍然全选(我觉得这很有用),而CtrlI递增(也很有用)。

1
2
3
4
5
6
7
8
9
noremap <C-I> <C-A>

" CTRL-A is Select all

noremap <C-A> gggH<C-O>G
inoremap <C-A> <C-O>gg<C-O>gH<C-O>G
cnoremap <C-A> <C-C>gggH<C-O>G
onoremap <C-A> <C-C>gggH<C-O>G
snoremap <C-A> <C-C>gggH<C-O>G
xnoremap <C-A> <C-C>ggVG

将Vim与mswin.vim一起使用时,在GNU / Linux下也会发生类似的问题。
在唤起mswin.vim之前将Alt X重映射到Ctrl A解决了我的问题。

1
2
3
4
execute"set <A-x>=\\ex"
noremap <A-x> <C-A>
source $VIMRUNTIME/mswin.vim
behave mswin

现在,Alt XCtrl X分别在Vim中增加和减少。

映射到Alt组合键在Vim中通常不明显;在此处阅读有关此内容的更多信息。


似乎CtrlA在启动时已映射到某处。
如前所述,使用:

取消映射

我会使用unmap,而不是nunmap。


我正在使用cygwin终端屏幕,因此被终端多路复用器捕获。我使用了此映射:

:noremap


推荐阅读