Vi 的常用命令
2018-03-10 00:42
148 查看
1. vi 的三种工作模式
- 命令模式
打开文件首先进入命令模式, 是使用
vi
的入口; - 通过命令对文件进行常规的编辑操作, 例如: 定位,翻页,复制,粘贴,删除等;
-
执行保存,退出等操作,是
vi的出口;
:wq:表示
write&quit;
-
正常的编辑文字
2. vi 操作文件
vi 文件名
: 打开或新建文件;vi 文件名 +行数
: 打开文件并且定位行, 如果不指定行号,会直接定位到文件末尾;
2.1 重复次数
- 在命令模式下,先输入一个数字,再跟上一个命令,可以让该命令重复执行指定次数;
2.2 移动和选择
- 方向移动
h
: 左移 j
: 下移k
: 上移l
: 右移{
: 按段移动,上移;以空行来区分段落;}
: 按段移动,下移;w
: 向后移动一个单词(word);b
: 向前移动一个单词0
: 行首^
: 行首,第一个不是空白字符的位置;$
: 行尾
gg:文件顶部,
15gg表示跳转到第15行;
G: 文件末尾,
15G表示跳转到第15行;
:数字: 跳转到数字对应行数;
ctrl + d: 向下翻半屏;
ctrl + u: 向上翻半屏;
ctrl + f: 向下翻一屏;(forward)
ctrl + b: 向上翻一屏;(back)
H: 屏幕顶部;(Head)
M: 屏幕中间;(Middle)
L: 屏幕底部;(Low)
-
在程序世界中,
()
[]
{}使用频率很高,而且都是成对出现的;
%: 括号匹配及切换;
-
在开发时,某一块代码可能需要稍后处理,例如编辑,查看;
m添加一个标记,这样可以在需要时,快速地跳转回来或者执行其他编辑操作;
a~z或者
A~Z之间的任意一个字母;
mx: 添加标记x,
x是
a~z或者
A~Z之间的任意一个字母;(mark)
'x: 直接定位到标记
x所在的位置
2.3 编辑操作(命令模式)
- 选中文本(可视模式) 学习复制命令前,应该先学会怎么样选中要复制的代码;
v
: 按字符移动选中文本;V
: 按行移动选中文本,可以配合d
,y
,>>
,<<
实现对文本块的删除,复制,左移,右移;ctrl + v
: 垂直方向选中文本;
u: 撤销上次命令;(undo)
ctrl + r: 恢复撤销的命令;(redo)
x: 删除光标后一个字符,相当于 Del;(cut)
X: 删除光标前一个字符,相当于 Backspace;
d(移动命令): 删除移动命令对应的内容;例如
d0: 删除光标前本行所有内容,不包含光标所在字符;
dw: 删除光标开始位置的字符,包含光标所在字符;
dd: 删除光标所在行;
8dd: 表示从当前光标所在的行开始剪切8行;
D: 删除光标后本行所有内容,包含光标所在字符;
-
复制命令会将选中的文字保存在缓冲区;
y(移动命令): 复制; (copy)
yy:复制一行, 可以
8yy复制8行;
p: 粘贴(paste)
>>: 向右增加缩进;(一次在选中代码前增加4个空格)
<<: 向左减少缩进;
.: 重复上次命令;
2.4 替换
r
: 替换当前字符串(命令模式)R
: 替换当前行光标后的字符(替换模式)R
命令可以进入替换模式,替换完成后,ESC
可以回到命令模式;- 替换命令的作用就是不用进入编辑模式,对文件进行轻量级的修改;
2.5 查找
/str
: 查找str;- 查找到指定内容之后,使用
Next
查找下一个出现的位置:n
: 查找下一个; N
: 查找上一个;- 如果不想看到高亮显示,可以随便查找一个文件中不存在的内容即可;
*: 向后查找当前光标所在单词;
#: 向前查找当前光标所在单词;
2.6 查找并替换
- 在
vi
中查找和替换命令,需要在末行模式
下执行; - 格式:
:%s///g
; - 全局替换:
:%s/abc/123/g
: 将所有的abc替换成123;
-
先选中要替换文字的范围;
:'<,'>s/旧文本/新文本/g
-
如果把末尾
g改成
gc,在替换的时候,会有提示!
:%s/旧文本/新文本/gc
y: 替换(yes)
n: 不替换(no)
a: 替换所有(all)
q: 退出替换(quit)
l: 替换最后一个(last),并把光标移动到行首;
^E: 向下滚屏;
^Y: 向上滚屏;
2.7 插入命令
- 进入
编辑模式
的命令:i
: 在当前字符前插入文本;(insert) I
: 在行首插入文本;(insert)a
: 在当前字符后添加文本;(append)A
: 在行末添加文本;o
: 在当前行后面插入一空行;O
: 在当前行前面插入一空行;
# 示例: 利用可视块模式给多行代码增加注释 1. 在命令模式下,移动到要添加注释的第一行代码, 按 "^" 来到行首; 2. 按 ctrl + v 进入可视块模式; 3. 使用 j 向下连续选中要添加的代码行; 4. 输入 I 进入编辑模式,并在行首插入, 注意,一定使用大写 I; 5. 输入 # 也就是注释符号; 6. 按下 ESC 返回到命令模式,返回之后,vi会在之前选中的每一行代码前插入 #;
2.8 分屏命令
- 属于
vi
的高级命令,可以同时编辑和查看多个文件; 末行命令
主要是针对文件进行的操作: 保存,退出,保存&退出,搜索&替换,另存,新建,浏览文件;:e .
: 会打开内置的文件浏览器,浏览当前目录下的文件;:n 文件名
: 新建文件;(new):w 文件名
: 另存为,但是仍然编辑当前文件,并不会切换文件;(write) 在实际开发中,可以使用w
命令阶段性的备份代码;
-
使用分屏命令,可以同时编辑和查看多个文件;
:sp [文件名]: 横向增加分屏;(split)
:vsp [文件名]: 纵向增加分屏;(vertical split)
-
分屏窗口都是基于
ctrl + W这个快捷键的,(w = window)
ctrl + w + w: 切换到下一个窗口;
ctrl + w + r: 互换窗口;(reverse)
ctrl + w + c: 关闭当前窗口,但是不能关闭最后一个窗口;(close)
ctrl + w + q: 退出当前窗口,如果是最后一个窗口,则关闭
vi;(quit)
ctrl + w + o: 关闭其他窗口;(other)
参考资料: