vim编辑器的用法
1、vi的基本概念
vi可以分为三种模式,分别是命令模式(command mode)、输入模式(Insert mode)和末行模式(last line mode),各模式的功能如下:
1) 命令行模式command mode)
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入输入或末行模式
2) 输入模式(Insert mode)
只有在输入模式下,才可以做文字输入,按ESC键可回到命令模式。
3) 末行模式(last line mode)
将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。
2、模式间切换
1)编辑模式–>输入模式
i: 在光标所在处的前方转换为输入模式
a: 在光标所在的后方转换为输入模式
o: 在光标所在行的下方新建一个空行并转换为输入模式
I: 在光标所在行前方第一个非空白字符出之前转为输入模式
A:在光标所在行后方最后一个非空白字符之后转为输入模式
O: 光标所在行的上方新建一个空白行并转为输入模式
2)输入模式–>编辑模式
按ESC键进行切换
3)编辑模式–>末行模式
按:进行切换
4)末行模式–>编辑模式
按ESC键稍等或按两次ESC键进行切换
5)末行模式<–>输入模式
必须先返回到编辑模式后,再进入到末行模式或输入模式
如:输入–>编辑–>末行
末行–>编辑–>输入
3、打开及退出文件
1)打开文件
vim [option]… [FILE]…
2)退出文件
进入末行模式后,输入相应的命令退出,具体如下:
:q! 不保存退出
:wq 保存退出
: x 保存退出
:wq! 强制保存退出
4、光标移动
1)字符间移动
h:向前移动
j:向下移动
k:向上移动
l:向后移动
2)单词间移动
w: 下一个单词词首
e: 当前单词或下一个单词词尾
b: 当前单词或前一个单词词首
3) 行内移动
^: 移动到行首第一个非空白字符
0:移动到绝对行首
$: 移动到绝对行尾
4)句子间移动
)移动到句末
( 移动到句首
5)段落间移动
} 移动到段尾
{ 移动到段首
6)行间移动
#G:移动到第#行行首
G:移动到末行行首
gg:移动到第一行
G$: 移动到末行的行尾
#+: 当前光标所在位置向下移动#行
#-: 当前光标所在位置向上移动#行
H:移动到文本的行首
M:移动到文本的中间行
L:移动到文本的末行
5、删除命令
x:删除光标所在处的字符
#x: 删除从光标所在处开始向后的#个字符
X: 删除光标所在处前面一个字符
#X:删除光标处前面#个字符
dd: 删除光标所在行
#dd: 删除光标所在行向下的#行
dgg:删除光标所在行到第一行的所有字符
dG: 删除光标所在行到最后一行的所有字符
d0: 删除光标所在处到行首的所有字符
d$: 删除光标所在处到行尾的所有字符
dw: 删除光标处向后的一个单词
d#w: 删除光标处向后的#w单词
6、修改命令
cw:删除光标处向后的一个单词,并进入输入模式
c$: 删除光标处到行尾的所有字符,并进入输入模式
cc: 删除光标所在上的所有字符,并进入输入模式
7、复制
yy: 复制光标所在行
#yy: 复制光标光标所在行向下的#行
与w,b,e,$,^,0,G组合使用
复制任意长度的字符:
a.在当前光标处输入"ma",再将光标移到指定的地方,输入“y`a”即可。
b.输入ymfn,其中n表示当前光标开始到复制内容结束的最后一个字符,m表示n在复制内容中出现的次数。如:文本内容为abcderfgwerrgssdd,需要复制的内容为derfgwerr,光标在"d"处,输入y3fr即可完成复制。
8、粘贴
行级别:
p: 粘贴于当前行下方
P: 粘贴于当前行上方
小于行级别:
p: 粘贴于当前光标所在处的后方
P:粘贴于当前光标所在处的前方
9、撤销编辑
按u键
10、撤销此前的撤销
按ctrl+r键
11、重复前一条命令
.重复执行上一条命令
12、查找
/something: 在后面的文本中查找something。
?something: 在前面的文本中查找something。
/pattern/+number: 将光标停在包含pattern的行后面第number行上。
/pattern/-number: 将光标停在包含pattern的行前面第number行上。
n: 向后查找下一个。
N: 向前查找下一个。
13、替换
如果不指定range,则表示当前行。
m,n: 从m行到n行。
0: 最开始一行(可能是这样)。
$: 最后一行
.: 当前行
%: 所有行
例如:
:s/old/new – 用new替换当前行第一个old。
:s/old/new/g – 用new替换当前行所有的old。
:n1,n2s/old/new/g – 用new替换文件n1行到n2行所有的old。
:%s/old/new/g – 用new替换文件中所有的old。
:%s/^/xxx/g – 在每一行的行首插入xxx,^表示行首。
:%s/$/xxx/g – 在每一行的行尾插入xxx,$表示行尾。
所有替换命令末尾加上c,每个替换都将需要用户确认。 如:%s/old/new/gc,加上i则忽略大小写(ignore)。
14、可视化
v:光标走过的字符
V:光标走过的行
ctrl+v: 区块选择
用y复制选中的内容,用d删除选中的内容
15、翻屏
Ctrl+f: 向文件尾部翻一屏
Ctrl+b: 向文件首部翻一屏
Ctrl+d: 向下翻半屏
Ctrl+u: 向上翻半屏
16、编辑多文件
vim a.txt b.txt c.txt
在末行模式下输入如下命令进行文件间切换:
:next 下一个
:previous 前一个
:last 最后一个
:first 第一个
:wqall 关闭所有
17、分屏显示
多文件分屏
vim -o file1 file2:水平分割窗口,同时打开file1和file2
vim -O file1 file2:垂直分割窗口,同时打开file1和file2
单文件分屏
Ctrl+w, s: 水平分割
Ctrl+w, v: 垂直分割
18、窗口属性设置
显示行号
:set nu
:set nonu
自动缩进
:set ai (auto indent)
:set noai
忽略大小写
:set ic (ignore case)
:set noic
自动匹配的括号
:set sm show match
:set nosm
语法高亮:
:syntax on|off
搜索高亮:
:set hlsearch
:set nohlsearch
配置文件:
全局:/etc/vimrc
用户:~/.vimrc 默认该文件没有,需手动添加。
原创文章,作者:浪迹天涯,如若转载,请注明出处:http://www.178linux.com/7979