VIM学习笔记 增减数值(CTRL-A/CTRL-X)
source link: http://yyq123.blogspot.com/2020/06/vim-CtrlA-CtrlX.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
常规模式下的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-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'选项
'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
说明
十进制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>
使用以下命令,可以取消针对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所识别的数字格式
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK