最近被要求改用vim写代码,感觉自己的一些操作非常笨拙,完全浪费了vim的强大功能,下定决心从头学习vim的各种操作和技巧,顺便把学到的内容整理出来,内容持续更新中,包括各种基础操作和一些提高生产力的小技巧,适合和我一样刚接触vim或者想要系统练习vim操作的友友们,一起成为vim高手!
(二)Vim 普通模式下的常用操作和技巧:移动,编辑,查找与替换
(三) Vim 可视模式下的常用操作和技巧:选择高亮区,批量快速的操作
......
更新中
3. 可视模式下操作
可视模式下可以选中一块文本区域进行操作。可视模式有三种操作方式,可以分别对字符文本,行文本和列文本进行操作。在可视模式中,普通模式下很多命令仍然适用于可视模式,例如光标移动,查找跳转,使用 . 命令重复执行命令的方法也依然有效。
可视模式和普通模式命令的区别主要在于,可视模式下往往先选择区域再出发命令,而普通模式正好相反,例如:普通模式下的 cw 先选择c(删除)操作,再选择范围w(到下个单词开头)。
3.1 进入可视模式
模式 | 按键 | 功能 |
普通模式 | v | 进入/退出面向字符的可视模式 |
V | 进入/退出面向行的可视模式 | |
Ctrl+v | 进入/退出面向列的可视模式 | |
gv | 重选上次的高亮区域 |
可视模式退出可以直接使用 Esc键或Ctrl+[ 返回普通模式,也可以重复使用进入命令进行切换。
3.2 更改高亮选区
在可视模式下也是通过各种光标移动方式更改选区,普通模式下的各种移动方式基本都是用于可视模式,可以在可视模式下多尝试一下各种普通模式下的命令,会产生各种有趣的效果。
模式 | 按键 | 功能 |
可视模式 | o | 切换选区的活动端 |
3.3 可视模式下的操作技巧
3.3.1 缩进
在可视模式下使用 < 和 > 可以快速更改当前选中行代码的缩进。首先需要确定vim的配置文件中shiftwidth 和 softtabstop 的值设为4,且 expandtab 已开启,也可以直接用我的 .vimrc 文件。
模式 | 按键 | 功能 |
可视模式 | [num]< | 减少[num]级缩进 |
[num]> | 增加[num]级缩进 |
执行完缩进修改命令后会直接返回普通模式,如果需要重复修改可以使用 . 命令或者在执行缩进命令时直接使用[num]一步到位。
3.3.2 修改大小写
模式 | 按键 | 功能 |
可视模式 | U | 将高亮区域字母转大写 |
u | 将高亮区域字母转小写 |
执行后将自动返回普通模式。
3.3.3 面向列块可视模式操作
对于刚开始用vim的人来说,面向列的操作可能会比较少见,但在一些情况下会很有用,操作更加灵活。面向列的各种基础操作和面向字符、行的操作其实没什么区别,大家可以在列可视模式下多尝试一些操作,加深印象。
例如想要添加一列标识符分割文本内容,就可以进入列可视模式下,使用移动命令选中需要加入的列位置,然后使用 r| 命令将这一列内容变成 | 符号。
对于长短不一的行文本,如果我们想在每一行后增加内容,可以在列模式下使用 $ 把选区扩展到行尾:
此外,在列块可视模式下还可以实现批量的修改:
模式 | 按键 | 功能 |
可视模式 | r{char} | 将高亮区域内字符全修改为{char} |
c{文本内容} | 将高亮区域内每行都修改成同样的内容 |
在对行进行批量修改时,c 命令会进入插入模式,光标转到首行,这里不要慌,在完成对首行的修改并回到普通模式后,修改将作用在选中的每行,实现批量修改。
3.3.4 精准的文本对象选择
进入可视模式,可以用 i+范围 的命令精准选择一定范围的文本并实现光标的快速移动。
模式 | 按键 | 功能 |
可视模式 | i ) | ( )内部 |
i } | { }内部 | |
i > | < >内部 | |
i ] | [ ]内部 | |
i ‘ | ‘ ‘内部 | |
i “ | “ “内部 | |
i ` | ` `内部 | |
it | XML标签内部 |
使用 i 进行的文本选择并不包括两侧的范围符号,如果想把范围符号一并选中的话,可以将i改成a,其他内容不变:
模式 | 按键 | 功能 |
可视模式 | a ) | ( )及其内部内容 |
a} | { }及其内部内容 | |
a> | < >及其内部内容 | |
a] | [ ] 及其内部内容 | |
a‘ | ‘ ‘及其内部内容 | |
a “ | “ “及其内部内容 | |
a` | ` `及其内部内容 | |
a | XML标签及其内部内容 |
除了选择分隔符内的文本,也可以直接对文本块进行选择:
模式 | 按键 | 功能 |
可视模式 | iw | 当前单词 |
iW | 当前字串 | |
is | 当前句子 | |
ip | 当前段落 |
同样的,使用 a 命令可以扩展范围到单词前面或后面的空格:
模式 | 按键 | 功能 |
可视模式 | aw | 当前单词及一个空格 |
aW | 当前字串及一个空格 | |
as | 当前句子及一个空格 | |
ap | 当前段落及一个空行 |
这一系列文本的选择可以和基础操作相结合,例如 daw – 删除此单词外加一个空格。可以尝试一下用不同命令和范围选择操作相结合,实现不同的效果。
3.3.5 切换选择模式
使用 Ctrl+g 可以在可视模式和选择模式之间切换。在选择模式中输入字符将直接替换所选内容并进入插入模式,而在可视模式下还是要用 c 来修改所选内容
总结:在选择模式下,普通模式的很多操作仍然有效,因此在掌握普通模式命令的基础下学习可视模式会简单很多。此外可视模式提供了可以对列块进行操作以及批量修改的方法,在一些特定情况下会大大提高效率。
标签:可视,Linux,模式,vim,命令,常用命令,操作,文本 From: https://blog.csdn.net/weixin_43749168/article/details/144742600