本篇文章介绍 vim 的一些使用技巧:
- 在插入模式下直接执行命令
- 快速转换大小写
在插入模式下直接执行命令
在 vim 的插入模式下编辑文件,可能临时需要执行某个命令来完成一些操作,例如要跳转到第 100 行进行编辑。常见的做法是,按 Esc 键退出插入模式,执行 100G
命令跳转光标到第 100 行,再按 i
命令重新进入插入模式,开始编辑。
其实,有一个更快的方法是,在插入模式下,按 CTRL-O 键,之后就可以输入普通模式的命令,按回车执行该命令。执行命令后,还是保持在插入模式下。
注意:CTRL-O 键指的是同时按下 CTRL 键和小写字母 o 键,不需要按 Shift 键。
在插入模式按下 CTRL-O 键后,可以执行不带冒号的命令,例如执行 100G
命令跳转光标到第 100 行。也可以执行带冒号的命令,例如执行 :100
命令跳转光标到第 100 行。
具体可以查看 :help usr_24
的 Normal mode commands 小节,部分说明如下:
With CTRL-O {command} you can execute any Normal
mode command from Insert mode. For example,
to delete from the cursor to the end of the line:
CTRL-O D
You can execute only one Normal mode command this way.
也可以查看 :help i_CTRL-o
的说明,具体描述如下:
CTRL-O execute one command, return to Insert mode *i_CTRL-O*
即,CTRL-O 可以在插入模式下执行一个命令,执行之后还是保持在插入模式下。
快速转换大小写
在 vim 中,有很多命令可以用于快速转换大小写。查看 :help case
的说明,就会看到所有可以转换大小写的命令。下面对常用的几个命令进行说明。
把大写转换成小写
使用 gu{motion}
命令把 {motion}
选中的文本转换为小写。{motion}
可以是 vim 任意移动光标的操作。部分操作举例说明如下。
- guw
后面的 w 表示把光标移动到下一个单词开头。guw 会把光标下的字符、以及直到当前单词末尾的字符都转换成小写。但是光标保持不动。
如果光标在单词开头,就是转换整个单词成小写。
如果光标在单词前面的空白字符,不会进行转换。 - gu3w
后面的 3w 表示把光标移动到后面第三个单词开头。gu3w 会把光标下的字符、以及直到后面第二个单词末尾的字符都转换成小写。但是光标保持不动。
3 可以换成其他数字。后面提到的其他移动光标操作也可以加上数字来指定要重复多少次操作。 - gue
后面的 e 表示把光标移动到下一个单词末尾。gue 会把光标下的字符、以及直到当前单词末尾的字符都转换成小写。但是光标保持不动。
如果光标在单词开头,就是转换整个单词成小写。
如果光标在单词前面的空白字符,也会进行转换。这是 gue 和 guw 最大的区别。 - gu$
后面的 $ 表示把光标移动到行末。gu$ 会把光标下的字符、以及直到当前行末尾的字符都转换成小写。但是光标保持不动。
如果光标在行首,就是转换整行成小写。
使用 guu
命令把光标所在行都转换成小写。
注意:guu
的最后一个 u
不是前面提到的 {motion}
操作。gu{motion}
执行的是 gu
命令,{motion}
是移动光标的操作。而这里的 guu
就是完整的命令。
使用 v
、V
、或者 CTRL-V
命令进入可视模式,选中部分内容后,输入 u
则把选中的内容都转换成小写。
把小写转换成大写
使用 gU{motion}
命令把 {motion}
选中的文本转换为大写。{motion}
可以是 vim 任意移动光标的操作。上面已经有部分说明。
使用 gUU
命令把光标所在行都转换成大写。
使用 v
、V
、或者 CTRL-V
命令进入可视模式,选中部分内容后,输入 U
则把选中的内容都转换成大写。
切换大小写
可以使用下面命令来切换大小写,也就是把大写转成小写,把小写转成大写。
- ~
会切换光标下字符的大小写。如果光标下的字符是小写,则转换成大写。如果光标下的字符是大写,则转换成小写。光标会往前移动一个字符。 - 3~
切换光标下的字符、以及后面两个字符的大小写。可以把 3 换成其他数字,切换指定数目字符的大小写。光标会往前移动三个字符。 - g~~
会切换光标所在行的大小写。当前行的所有大写字符会被转换成小写,所有小写字符会被转换成大写。光标会移动行首的第一个非空白字符上。
总结
用列表形式总结常用的转换大小写命令如下。
命令 | 含义 |
---|---|
guw | 如果光标在单词开头,会转换整个单词成小写 |
gUw | 如果光标在单词开头,会转换整个单词成大写 |
guu | 把光标所在行都转换成小写 |
gUU | 把光标所在行都转换成大写 |
{Visual}u | 把可视模式选中的内容都转换成小写 |
{Visual}U | 把可视模式选中的内容都转换成大写 |
~ | 切换光标下字符的大小写 |
g~~ | 切换光标所在行的大小写 |
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。