Dive Into VIM
VIM命令行模式
1、光标的移动
-
h,j,k,,l,分别使光标向左,下,上,右移动; -
w,光标向前移动一个单词,b,光标向后移动一个单词; -
e,到下一个单词的结尾; -
0,光标移动到行首;$,光标移动到行尾; -
^,光标移动到当前行的第一个字母; -
),移动光标到下一个句子; -
(,移动光标到上一个句子; -
ctrl+f,光标移动到下一屏; -
ctrl+b,光标移动到上一屏; -
G, 移动到文件末尾; -
numG,光标移动到指定行(eg.100G就是第100行),配合se number,显示行号使用; -
gg,移动到文件开始; -
H,光标移动到屏幕上方; -
M,光标移动到屏幕中间; -
L,光标移动到屏幕下方; -
*,读取光标处的字符串,并且移动光标到它再次出现的地方,向后搜索。有点类似搜索/find命令; -
#,与*类似,只是向前搜索; -
/text,搜索文本,重复上次的搜索按n; -
?text,与上面的类似,反方向; -
ma,做书签标记。a代表书签名字,书签名字只能是小写字母。用户看不到书签的存在; - ``a`,到书签的a处;
- ``.`,到上次编辑的地方,这个是默认的书签,不需要特别标记它。
dt",删除所有内容,直到遇到双引号,这个对码农很有用!t,,到逗号前的第一个字符,逗号可以是任何字符;
2、插入命令
i,在当前字符的左边插入;I,在当前行首插入;a,在当前字符的右边插入;A,在当前行尾插入;o,在当前行下面插入新行;O,在当前行上面插入新行;c{motion},删除 motion 命令跨过的字符,并且进入插入模式。比如:c$,这将会删除从光标位置到行尾的字符并且进入插入模式。ct!,这会删除从光标位置到下一个叹号(但不包括),然后进入插入模式。被删除的字符被存在了剪贴板里面,并且可以再粘贴出来;d{motion},和c{motion}类似,区别是不进入插入模式;
3、有效移动大段文本,可视化模式
-
v,按字符来选择大段文本可精确到字符,试试看,用h,j,k,,l来移动光标; -
V,按行来选择大段文本精确到行,因此h,l,无效; -
ctrl+v,块选择,这个太强大了,可以进行纵向编辑,有点像ultra editor里面的纵向编辑模式,比如想删除第一列的所有字符,用这个实在太方便了!!! -
d,剪贴内容到剪贴板,但不进入插入模式; -
y,拷贝内容到剪贴板; -
c,剪贴内容到剪贴板,并且进入插入模式;
如果你很清楚在做什么,没必要进入可视化模式,前提是你必须知道你剪切拷贝了什么!
-
yy,拷贝当前行; -
dd,剪切当前行; -
cc,剪切当前行并且进入插入模式; -
D,剪切当前行到行尾; -
Y,拷贝当前行,同yy; -
C, 剪切当前行到行尾并进入插入模式; -
x,剪切当前字符到剪贴板; -
s,与x,类似,但是会进入插入模式; -
p,粘贴; -
.,这个命令很强大,意思是重复上一次的操作;
4、进阶命令
- 文本替换,命令
[range]s/from/to- 方式一、使用可视化模式选中一段文本,比如将这段文本中的python替换成java,选中文本之后输入
:s/python/java,回车后发现选中文本区的内容都被替换了。 - 方式二、先用
:se number命令展示出行号,然后使用指定行号的方式来替换,例如:40,100s/python/java,标识将第40行到100行中的python替换成java。
- 方式一、使用可视化模式选中一段文本,比如将这段文本中的python替换成java,选中文本之后输入