Linux Vi

前言

总结了Vi的使用

Vi

末行模式(进出、搜索、替换)

1
2
3
4
5
6
:w	# 保存
:w filename # 另存为
:q # 退出
:q! # 退出不保存
:wq # 退出保存
:x # 加密保存

搜索

1
2
/<pattern>	# 从光标向下搜索
?<pattern> # 从光标向上搜索

n:向下遍历光标

N:向上遍历光标

替换

(:s/x/y普通替换本行第一个。最后加/g替换本行全部 , :%s/x/y 替换全部行第一个,这基础上加/g替换全文)

1
2
3
4
:s/old/new		# 替换本行首次出现的old
:s/old/new/g # 替换本行全部
:%s/old/new/g # 替换全文(全部行全部)
:n,m s/old/new/g #替换n-m行的全部old

光标移动

h j k l
1
2
3
4
5
6
7
8
9
k j h l	# 上下左右
0 # 行首
^ # 行首
$ # 行尾
w # 下一个字首
b # 当前字首,已经在字首则到上个字首
e # 当前字尾,已经在字尾则到下个字尾
nw # 右移n字
nb # 左移n字
1
2
3
4
5
6
7
H	# 当前屏幕最顶端(Highest)
nH # 当前屏第n行
gg # 文首
G # 文末
n+ # 后跳n行
n- # 前跳n行
nG # 跳到第n行
1
2
3
4
(	# 本句首
) # 下一句首
{ # 本段首
} # 本段末
1
2
3
4
Ctrl+b	# 向上翻一页(back)
Ctrl+f # 向下翻一页(front)
Ctrl+u # 向前翻半页(up)
Ctrl+d # 向下翻半页(down)

编辑指令

删除(x, d)

1
2
3
4
x	# 删除字符
nx # 删除从光标开始的n个字符
dd # 删除行
ndd #删除包括当前行的n行

复制(y)

可配合光标移动使用(w, n, ^, $)

1
2
3
4
5
6
yy	#当前行复制
nyy #n行复制
yw #复制到到字胃
nyw #复制光标及其后的n个单词
y^ #复制光标到行首
y$ #复制光标到行尾

粘贴(p)

1
2
p	# 光标后粘贴
P # 光标前粘贴

撤销(u)

1
2
u	# 撤销一步
U # 撤销本行操作(其实是增加了全局操作,会被u撤销)

设置

行号

1
2
3
:set nu		# 显示行号
:set nonu # 取消显示行号
:nu # 取得该行行号

其他

Vim编辑异常退出后,会无法正常进行编辑,这时候就要删除一个同名的.swap文件,即可编辑。