vim编辑器详解
vim模式:
编辑模式(命令模式)
输入模式
末行模式
模式转换:
i:在当前光标所在字符的前面,转为输入模式;
a:在当前光标所在字符的后面,转为输入模式;
o:在当前光标所在行的下方,新建一行,并转为输入模式;
I:在当前光标所在行的行首,转换为输入模式
A:在当前光标所在行的行尾,转换为输入模式
O:在当前光标所在行的上方,新建一行,并转为输入模式;
输入——>编辑:ESC
编辑-->末行::
末行-->编辑:ESC,ESC
1、打开文件
vim /path/to/somefile
vim +#:定位光标第#行
vim +:定位光标于文件最后一行
vim +/PATTERN:打开文件,定位至第一次被PATTERN匹配到的行首
2、关闭文件
(1)末行模式关闭文件:
q:退出
wq:保存并退出
q!:不保存退出
w:保存
w!:强行保存
x:保存并退出
(2)编辑模式下退出
ZZ:保存并退出
3、移动光标(编辑模式下)
(1)逐字符移动:
h:向左
l:向右
j:向下
k:向上
#h/l/j/k:向左/右/下/上,移动#个字符
(2)以单词为单位移动
w:移动至下一个单词的词首
e:跳至当前或下一个单词的词尾
b:跳至当前或前一个单词的词首
可以和数字进行组合:如:#w 以#个单词为单位移动之下一处单词的词首
(3)行内跳转:
0:绝对行首
^:行首的第一个非空白字符
$:绝对行尾
(4)行间跳转
#G:跳转至#行
G:跳转至最后一行
末行模式下,直接给出行号即可
(5)段落间跳转
{或[:跳转至当前光标所处段落前
}或]: 跳转至当前光标所处段落后
4、翻屏
Ctrl+f:向下翻一屏
Ctrl+b:向上翻一屏
Ctrl+d:向下翻半屏
Ctrl+u:向上翻半屏
5、删除单个字符
x:删除光标所在处的单个字符
#x:删除光标所在处及向后的共#个字符
6、删除命令:d
d命令与跳转命令组合使用,表示删除多少字符
#dw,#de,#db
dd:删除当前光标所在行
#dd:删除包括当前光标所在行在内的#行;
末行模式下:
StartADD,EndADDd
如:1,8d:删除第一行到第八行
.:表示当前行
如:.,100d:删除当前行到第100行
$:最后一行
如:.,$-3d:删除当前行到倒数第三行
+#:向下的#行
如:.,+5d:删除当前行及向下的5行;
7、粘贴命令p
P:(大写P)如果删除的或复制的为整行内容,则粘贴至光标所在行的上方,如果复制或删除的内容为非整行,则粘贴至光标所在字符的前面;
p:(小写P)如果删除的或复制的为整行内容,则粘贴至光标所在行的下方,如果复制或删除的内容为非整行,则粘贴至光标所在字符的后面;
8、复制命令y
复制命令y与删除命令d用法相同
y命令与跳转命令组合使用,表示复制多少字符
#yw,#ye,#yb
yy:复制当前光标所在行
#yy:复制包括当前光标所在行在内的#行;
末行模式下:
StartADD,EndADDy
如:1,8y:复制第一行到第八行
.:表示当前行
如:.,100y:复制当前行到第100行
$:最后一行
如:.,$-3y:复制当前行到倒数第三行
+#:向下的#行
如:.,+5y:复制当前行及向下的5行;
9、修改:先删除内容,再转换为输入模式
c:与删除命令d相同
10、替换:r(只能替换单个字符)
R:替换模式(可以替换多个字符)
11、撤销编辑操作u
u:撤销前一次的编辑操作
连续u命令可撤销此前的n次编辑操作
#u:直接撤销最近#次编辑操作
撤销最近一次撤销:Ctrl+r
12、重复前一次的编辑操作
.命令:重复前一次的编辑操作
13、可视化模式
v:按字符选取
V:按矩形块选取
*注:在此模式下,用命令移动光标,光标起始位置和当前位置之间的文本将会以高亮显示。这时就可以对这些高亮显示的文本进行整体的操作。例如:在字符可视化模式中,首先用6l命令选中光标右侧的6个字符,然后输入d命令删除高亮显示的文本。
14、查找
/PATTERN:从文件首部到尾部查找
?PATTERN:从当前光标到首部查找
结合N或n:表示下一个
15、查找并替换
在末行模式下使用s命令
ADDR1,ADDR2s@PATTERN@string@gi:表示在全局模式下且忽略大小写,从ADDR1到ADDR2查找PATTERN并替换成string
1,$:表示从第一行到最后一行
%:表示全文
例:.,$-1s/he/HE/g:在全局模式下,从当前光标所在行到倒数第二行,查找he并替换成HE
16、使用vim编辑多个文件
用法:vim FILE1 FILE2 FILE3
末行模式下:
next:切换至下一个文件
prev:切换至前一个文件
last:切换至最后一个文件
first:切换至第一个文件
退出
qa:全部退出
17、分屏显示一个文件
Ctrl+w,s:水平拆分窗口
Ctrl+w,v:垂直拆分窗口
在窗口间切换光标:
Ctrl+w, ARROW键
退出:
qa:关闭所有窗口
18、分窗口编辑多个文件
vim -o:水平分割显示
vim -O:垂直分割显示
19、将当前文件的部分内容另存为另外一个文件
末行模式下使用w命令
:w
用法:ADDR1,ADDR2w /path/to/somewhere
20、将另外一个文件的内容填充在当前文件中
用法:r /path/to/somefile:在当前光标所处行的下方,添加另外一个文件内容
21、跟shell交互
末行模式下:
! COMMAND:在末行模式下查看另外一个文件
22、高级话题
末行模式下:
1、显示或取消显示行号
set nu:显示行号
set nonu:取消显示行号
2、显示忽略或区分字符大小写
set ic(ignorecase):忽略大小写
set noic(noignorecase):区分字符大小写
3、设定自动缩进
set ai(autoindent):设定自动缩进
set noai :取消自动缩进
4、查找的文本高亮显示或取消
set hlsearch:查找的文本高亮显示
set nohlsearch:查找的文本取消高亮显示
5、语法高亮显示
syntax on:开启语法高亮功能
syntax off:关闭语法高亮功能
23、配置文件
全局:/etc/vimrc:对所有用户生效
局部:~/.vimrc:只对当前用户生效(如果没有可以在家目录下新建该文件)
练习:
将/etc/yum.repos.d/server.repo文件中的ftp://instructor.example.com/pub替换为
%s@ftp:\/\/instructor\.example\.com\/pub@http:\/\/172.16.0.1/yum@g
阅读(858) | 评论(0) | 转发(0) |