Vim可以对文本进行简单的算术运算。在常规模式下,使用CTRL-A快捷键,可以将当前光标下的数字加1;使用CTRL-X快捷键,可以将当前光标下的数字减1。
通过在命令之前指定次数,可以增加或减少指定的数字。例如当前光标下数字为1,依次输入5Ctrl-A,数字将变为6(=1+5)。
如果在当前光标下未发现数值,那么将继续在本行内向后查找并执行增减操作。
使用以下命令,可以查看相关帮助信息:
:help CTRL-A
自Vim8以后,在可视化模式和选择模式下,也可以使用CTRL-A和CTRL-X来增减数值(:help new-items-8
)。
例如希望在第1条之后插入一个新的条目,那么就意味着需要调整后续各个条目的序号:
Article 1: 3 Steps To Enable Thesaurus Option Article 2: Steps to Add Custom Header Article 3: Automatic Word Completion Article 4: How To Record and Play Macro Article 5: Make Vim as Your C IDE
进入可视化模式,或者直接选择2-5行,然后点击CTRL-A即可对选中各行中的序号分别加1:
Article 1: 3 Steps To Enable Thesaurus Option Article 3: Steps to Add Custom Header Article 4: Automatic Word Completion Article 5: How To Record and Play Macro Article 6: Make Vim as Your C ID
在命令行中执行CTRL-A,也可以将第2行及之后各行中的序号分别加1:
:2,$g/\d\+/exe "normal! \<C-a>"
另外,您也可以使用替换字符串中的submatch()功能,实现相同的效果。
使用以下命令,可以查看相关帮助信息:
:help v_CTRL-A
'nrformats'选项,用于控制CTRL-A和CTRL-X所识别的数字格式。
使用以下默认设置,Vim可以正确识别二进制和十六进制数;而十进制数,在所有设置下都可以被正确识别:
:set nrformats=bin,hex
使用以下命令清空选项,将所有数字识别为十进制:
:set nrformats=
如果希望只识别八进制数,那么可以使用以下命令:
:set nrformats=octal
如果在选项中增加"alpha",那么也可以选择上一个和下一个字母:
:set nrformats+=alpha
以下表格,列示了针对“原始值”,分别点击CTRL-A和CTRL-X所产生的效果:
选项值 | CTRL-X | 原始值 | CTRL-A | 说明 | |
---|---|---|---|---|---|
十进制 | 0 | 1 | 2 | 以1-9开头的数值 | |
-2 | -1 | 0 | |||
二进制 | bin | 0b0111 | 0b1000 | 0b1001 | 以"0b"或"0B"开头的数值 |
八进制 | octal | 006 | 007 | 010 | 以0开头的数值 |
十六进制 | hex | 0x0ff | 0x100 | 0x101 | 以"0x"或"0X"开头的数值 |
字母 | alpha | B | C | D | |
A | A | B | 针对第一个字母"A"执行CTRL-X无作用 | ||
Y | Z | Z | 针对最后一个字母"Z"执行CTRL-A无作用 |
使用以下命令,可以查看相关帮助信息:
:help 'nrformats'
在Windows下的Vim中,使用以下命令可以看到vimrc自动加载了mswin.vim文件,CTRL-A已经被映射为选择全部,而CTRL-X则被映射为剪切:
:verbose map <C-a>
使用以下命令,可以取消针对CTRL-A的键盘映射,以恢复其增加数值的功能:
:unmap <C-a>
如果希望保留当前Windows习惯的键盘映射,那么可以新增以下基于前缀键(leader)的定义:
:vnoremap <leader>a <C-a>
:vnoremap <leader>x <C-x>
CTRL-A | 增加数值 |
CTRL-X | 减少数值 |
:set nrformats | 控制CTRL-A和CTRL-X所识别的数字格式 |