标签:vim
vim编辑器
文本编辑器,字处理器
nano、sed
vi:Visual Interface(可视化接口)
vim:VI Improved
模式编辑器、全屏编辑器
一:打开文件
# vim /path/to/somefile
vim +# /path/to/somefile 打开/path/to/somefile,并定位于文件第#行
例如1:打开文件/etc/inittab,光标在 18 行
# vim +18 /etc/inittab
vim + /path/to/somefile 打开/path/to/somefile,并定位于该文件的底部
例如1:打开文件/etc/inittab,光标在 最后一行
# vim + /etc/inittab
vim +/PATTERN:打开文件,定位至第一次被PATTERN匹配到的行的行首
如:vim +/:initdefault /etc/inittab
编辑模式/命令模式:复制、粘帖、删除行...
输入模式:输入内容到文件
末行模式:文件管理命令
打开vim编辑器,默认处于编辑模式。
模式之间是可以相互转换的。
编辑 --> 输入
i:在当前光标所在字符的前面,转换为输入模式;
a:在当前光标所在字符的后面,转换为输入模式;
o:在当前光标所在行的下面,新建一行,转换为输入模式;
大写字母
I:在当前光标所在行的行首,转换为输入模式;
A:在当前光标所在行的行尾,转换为输入模式;
O:在当前光标所在行的上面,新建一行,转换为输入模式;
输入 --> 编辑
ESC
编辑 --> 末行模式(只能从编辑模式进入)
: 输入冒号即可
末行模式可以执行的命令:
10d:删除文件中的第十行
10,20d:删除文件中的第十行到第二十行;
set nu:显示行号
! ls /etc/:执行shell命令,不影响当前文件编辑
末行模式 --> 编辑
ESC,ESC
输入模式到末行模式不能直接转换;
二:关闭文件
末行模式关闭文件
:q:退出,不保存,如果已经编辑了文件内容,这样无法退出,会提示你文件已经发生了改变,让你确认是否保存
:wq:保存并退出
:q!:不保存退出
:w:保存,不退出
:w!:强行保存只读文件(只读文件对管理员root是不生效的,管理员可以使用w!强行保存文件)
:wq -- :x
编辑/命令模式下退出文件
ZZ:保存退出(不用切换模式,就可以保存退出)
三:移动光标(编辑/命令模式)
逐字符移动:可以用上下左右键,也可以:
h:左
l:右
j:下
k:上
数字加上上面的移动键,可以向对应方向移动 n 个字符或行
逐单词移动
w:向后移动到下个单词的词首
e:向后跳到当前或下一个单词的词尾
b:向前跳至当前或前一个单词的词首
上述命令都支持加上数字,如:3w,4b,可以实现移动 n 个单词
行内跳转/移动
0:行首,绝对行首
^:行首,行首的第一个非空白字符,相对行首
$:行尾,绝对行尾
行间跳转
G:跳至最后一行
#G:向下跳至第#行行首
末行模式下跳转:直接给出行号,回车即可
四、翻屏操作
Ctrl+f:向下翻一屏,向文件尾部翻一屏
Ctrl+b:向上翻一屏,向文件首部翻一屏
Ctrl+d:向下翻半屏
Ctrl+u:向上翻半屏
五、删除单个字符
x:删除光标所在处的单个字符
#x:删除光标所在处及向后的共#个字符
六、删除命令d
d命令可以结合光标跳转命令一起使用,实现不同的删除效果。如:
d$:删除当前光标处到行尾的内容
d0:删除当前光标处到行首的内容
dw:逐个单词删除
3dw:一次删除三个单词
#de:
#db:
dd:删除当前光标所在行
#dd:删除从光标所在行向下删除#行
删除第10行到第20行(末模式下:1,8d)
末行模式下删除指定行
:.,+5d:末行模式下删除从当前行开始到向下的5行,一共删了6行
(.表示当前行,$表示最后一行,+#表示想下的#行);
当前行到倒数第三行:.,$-3
.:表示当前行
$:表示最后一行
+#:表示向下的#行
七、粘贴命令:p
删除的内容并没有立即清除,而是保存在内存缓冲区中的。
最后一次删除的内容,可以被粘贴到任意指定的地方,可以粘贴多次;
P:
如果删除的或复制的为整行内容,则粘贴至光标所在处的下放;
如果复制或删除的内容为非整行,则粘贴至光标所在字符的后面;
p:
如果删除的或复制的为整行内容,则粘贴至光标所在处的上放;
如果复制或删除的内容为非整行,则粘贴至光标所在字符的前面;
八、复制命令:y
用法同d命令
yy:复制一行
3yy、y0、y$...
九、先删除内容,再转换为输入模式(即:替换或修改)
c:用法同d命令
十、替换命令
r:替换单个字符
R:进入替换模式,类似insert键。ESC退出替换模式
十一、撤销编辑
u:undo,撤销前一次的编辑操作,可以连续使用u,撤销前n次的编辑操作
注意:vi或vim只在内存缓冲区中保存最近50次的编辑操作,也就是说我们最多只能撤销最近50次的编辑操作
#u:直接撤销最近#次的编辑操作。
撤销撤销:撤销/还原上一次的撤销操作:Ctrl+r
十二、重复前一次的编辑操作
.:点,功能强大的点
十三、可视化模式
v:按字符选取,选取后可以执行上面所有的编辑操作(d删除,y复制等)
V:按矩形块选取,按行选取
十四、查找
/PATTERN:从文件首部到尾部查找
?PATTERN:从当前光标所在行,到文件首部,倒着查找
n:下一个,往下跳转下一个
N:上一个,往上跳转下一个
十五、查找并替换
在末行模式下使用s命令,用法与sed一模一样。
语法:ADDR1,ADDR2s@PATTERN@STRING@gi
@:分隔符
s:查找
g:替换
i:忽略字符大小写
例如:将文档中从当前行(.)开始到文档底部的所有小写的he替换为大写的HE
:.,$-1s/he/HE/g
全文替换:
:1,$ 或者 :%
1,$,表示从第一行到最后一行,百分号也是指全文。
练习题:
将/etc/yum.repos.d/server.repo文件中的ftp://instructor.example.com/pub替换为http://172.16.0.1/yum
key
%s/ftp:\/\/instructor\.example\.com\/pub/http:\/\/172.16.0.1\/yum/gi
%s@ftp://instructor\.example\.com\/pub@http://172.16.0.1/yum@gi
十六、如何打开多个文件
vim FILE1 FILE2 FILE3
:next:切换至下一个文件
:prev:切换至前一个文件
:last:切换至最后一个文件
:first:切换至第一个文件
vim rc.local init
默认显示第一个文件;
切换到下个文件:next
切换到上个文件:prev(注意:切换到上个文件之前,必须保存编辑过的这个文件,否则切换不过去的)
退出:全部退出
:qa
:qall
十七、分屏显示一个文件
看着前面的内容来编辑后面的内容
Ctrl+w,s :水平拆分窗口
Ctrl+w,v :垂直拆分窗口
切换窗口:Ctrl+w,ARROW(上下左右方向箭头)
退出:
:q 退出一个窗口
:qa 全部退出,关闭所有窗口
--------------------------------------------------------
水平拆分窗口:
Ctrl+w,松开后,再按 s
Ctrl+w+向下/上的箭头,切换光标到上/下面的窗口编辑。
垂直拆分窗口:
Ctrl+w,松开后,再按 v
十八、分窗口显示多个文件
窗口1显示文件1,窗口2显示文件2
水平分割显示,如:vim -o FILE1 FILE2
垂直分割显示,如:vim -O FILE1 FILE2
十九、将当期文件的部分内容另存为另外一个文件
末行模式下使用w命令
:w
:w /path/to/somewhere
:ADDR1,ADDR2w /path/to/somewhere
二十、将另外一个文件内容填充在当前文件中(合并两个文件)
:r /path/to/somefile
二十一、跟shell交互
末行模式下输入:
:! COMMAND
#COMMAND不支持alias别名命令
二十二、高级话题
1、显示或取消显示行号
:set number -- set nu
:set nonu
2、忽略或区分字符大小写
:set ic
:set ignorecase
:set noic
:set noignorecase
3、设定自动缩进(写脚本的时候很有用)
:set autoindent
:set ai
:set noai
4、设定高亮显示(查找到的文本高亮显示)
:set hlsearch
:set nohlsearch
5、语法高亮
:syntax on
:syntax off
二十三、vim配置文件
全局:vim /etc/vimrc
局部(用户级):vim ~/.vimrc
关于vim的练习题:
系统自带的vimtutor,每天做一遍,每次控制在半小时内搞定,就成了。
本文出自 “冷水泡茶” 博客,请务必保留此出处http://miaocbin.blog.51cto.com/689091/1665883
标签:vim
原文地址:http://miaocbin.blog.51cto.com/689091/1665883