基本技巧
各种插入模式
- a 在光标后插入
- o 在当前行后插入新行
- O 在当前行前插入新行
- cw 删除当前光标到单词的结尾
简单移动光标
- 0 移动光标到行头
- ^ 到本行第一个不是blank字符的位置
- $ 到行末
- g_ 到本行第一个不是blank字符的位置
- /pattern 搜索pattern的字符串
拷贝/粘贴
- p 粘贴
- yy 拷贝当前行
Undo/Redo
- u undo
- ctrl+r redo
打开/保存/退出/改变文件
:e <path/to/file>
打开一个文件- :w 存盘
:saveas <path/to/file>
另存为<path/to/file>
,这个功能很实用,在不需要cp的情况下可以直接打开文件另存为则可以得到新的文件- :x,ZZ或:wq 保存并退出(:x 表示仅在需要时保存,ZZ不需要输入冒号并回车即可保存并退出)
- :q! 退出不保存
- :qa! 强行退出所有的正在编辑的文件
- :bn和:bp 可以同时打开很多个文件,使用这两个命令来切换下一个或上一个文件
进阶技巧
命令的重复执行
- .(小数点) 重复上一次的命令
N<command>
重复某个命令N次- 2dd 删除2两行
高效地移动光标
- N
G
光标到第N行,或者也可以:N - gg 到第一行
- G 到最后一行
- w 到下一个单词的开头
- e 到下一个单词的结尾
如果你认为单词是由默认方式,那么就用小写的e和w。默认上来说,一个单词由字母,数字和下划线组成
如果你认为单词是由blank字符分隔符,那么你需要使用大写的E和W - % 匹配括号移动,包括(,{,[ 如果直接在行上按%会自动找到括号
*
匹配光标当前所在的单词,移动光标到下一个匹配的单词#
匹配光标当前所在的单词,移动光标到上一个匹配的单词
- N
大小写转换
- gU 变大写
- gu 变小写
- shift+v gU 将当前行变为大写
- shift+v gu 将当前行变为小写
将文本内容全部删除
- gg–>d–>G
解释一下:gg先跳到文本第一行,d表示删除,G表示跳到文本最后一行,组合起来表示删除文本的第一行到最后一行,即文本内容全部删除。
- gg–>d–>G
在当前行上移动光标
- fa 到下一个为a的字符处,你也可以fs到下一个为s的字符
- t, 到逗号前的第一个字符。逗号可以变成其它字符
- 3fa 在当前行查找第三个出现的a
- F和T 和f和t一样,只不过是相反方向
- dt” 删除所有内容,直到遇到引号
块操作:ctrl+v
块操作可以说是最实用的技巧了,典型的操作:ctrl+v–>ctrl+d–>I–>[ESC]
- 0 到行头
- ctrl+v 开始块操作
- ctrl+d 向下移动(你也可以使用hjkl来移动光标,或是使用%,或是别的)
I-- [ESC]
I是插入,插入“–”,按ESC键来为每一行生效
1.给选中的行前面添加#字符
- 按下ctrl+v
- 按光标移动键选中行
- 输入大写的I
- 输入字符#
- 按
[ESC]
使得每一行生效
2.给选中的行后面面添加#字符
- 按下ctrl+v
- 按光标移动键选中行(可以配合$符号操作)
- 输入大写的A
- 输入字符#
- 按
[ESC]
使得每一行生效
自动提示
在Insert模式下,可以输入一个词的开头,然后按ctrl+p或者ctrl+n
自动补全功能就出现了可视化选择
使用ctrl+v或者shift+v选中后,可以进行如下操作:
J
把选中的行连接起来(变成一行)<
或>
左右缩进=
自动缩进