VIM学习笔记 增减数值(CTRL-A/CTRL-X)

常规模式下的CTRL-A/CTRL-X

Vim可以对文本进行简单的算术运算。在常规模式下,使用CTRL-A快捷键,可以将当前光标下的数字加1;使用CTRL-X快捷键,可以将当前光标下的数字减1。

通过在命令之前指定次数,可以增加或减少指定的数字。例如当前光标下数字为1,依次输入5Ctrl-A,数字将变为6(=1+5)。

如果在当前光标下未发现数值,那么将继续在本行内向后查找并执行增减操作。

使用以下命令,可以查看相关帮助信息:

:help CTRL-A

其它模式下的CTRL-A/CTRL-X

自Vim8以后,在可视化模式和选择模式下,也可以使用CTRL-ACTRL-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'选项

'nrformats'选项,用于控制CTRL-A和CTRL-X所识别的数字格式。

使用以下默认设置,Vim可以正确识别二进制和十六进制数;而十进制数,在所有设置下都可以被正确识别:

:set nrformats=bin,hex

使用以下命令清空选项,将所有数字识别为十进制:

:set nrformats=

如果希望只识别八进制数,那么可以使用以下命令:

:set nrformats=octal

如果在选项中增加"alpha",那么也可以选择上一个和下一个字母:

:set nrformats+=alpha

以下表格,列示了针对“原始值”,分别点击CTRL-ACTRL-X所产生的效果:

选项值CTRL-X原始值CTRL-A说明
十进制012以1-9开头的数值
-2-10
二进制bin0b01110b10000b1001以"0b"或"0B"开头的数值
八进制octal006007010以0开头的数值
十六进制hex0x0ff0x1000x101以"0x"或"0X"开头的数值
字母alphaBCD
AAB针对第一个字母"A"执行CTRL-X无作用
YZZ针对最后一个字母"Z"执行CTRL-A无作用

使用以下命令,可以查看相关帮助信息:

:help 'nrformats'

自定义CTRL-A/CTRL-X键盘映射

在Windows下的Vim中,使用以下命令可以看到vimrc自动加载了mswin.vim文件,CTRL-A已经被映射为选择全部,而CTRL-X则被映射为剪切:

:verbose map <C-a>

verbose_map_CTRL-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所识别的数字格式

Ver: 2.0 | YYQ<上一篇 | 目录 下一篇>