vim,一个纯文本(纯文本信息,ASCII text)编辑器,Vi(Visual Interface) IMproved,是一个模式化的编辑器。
> vim有自带的教程,也是linux的一个内置命令
一、基本模式分类
1 编辑模式(命令模式)
2 输入模式(插入模式)
3 末行模式(vim内置的命令行接口)
二、模式转换:
1 编辑模式——>输入模式
i :在当前的光标所在字符的前面,转入输入模式
a:在当前的光标所在字符的后面,转入输入模式
o:在当前的光标所在行的下方,新建一行,转入输入模式
I :在当前的光标所在行的行首,转入输入模式
A :在当前的光标所在行的行尾,转入输入模式
O :在当前的光标所在行的上方,新建一行,转入输入模式
2 输入模式——>编辑模式
ESC键
3 编辑模式——>末行模式
输入: 即可
:10d :删除第10行
:10,20d :删除第10到20行
:! ls /etc :!与命令相结合
4 末行模式——>编辑模式
输入2 次 ESC键
三、打开文件
vim [options] [file ..] 默认进入模式为编辑模式
vim
/path/to/somfile 若文件存在,则打开;不存在,则建立该文件并打开
vim +n
FILE :打开该文件并且光标选择第n行行首
vim + FILE :打开文件并处于最后一行的行首
vim +/PATTERN :打开文件,定位至第一次被PATTERN匹配到的行的行首
例:
# vim +10 /etc/rc.d/init.d/network # vim打开文件,并且将光标自动放在第10行行首
# vim + /etc/rc.d/init.d/network # vim打开文件,并且将光标自动放在末行行首
四、关闭文件
1 末行模式关闭文件
:q :退出
:wq :保存退出
:q! :强制退出,丢弃做出的更改
: w /path/to/somefile :保存至指定文件中
2 编辑模式下退出
ZZ :保存退出
五、移动光标
1 逐字符移动
h: 向左移动一个字符
j:向下移动一个字符
k:向上移动一个字符
l:向右移动一个字符
Nh /Nl :代表了向左,向右移动n个字符
2 逐单词移动
w :移至下一个单词的词首
e :跳至当前或下一个单词的词尾
b :跳至当前或前一个单词的词首
Nw /Ne :代表了向后移动至N个单词的词首或词尾
3 逐行跳转
0 :跳至绝对行首,Tab字符不算,如果行首有Tab键,则会跳到Tab键之后
^ :跳至行首的第一个非空白字符
$ :跳至绝对的行尾
4 行间跳转
NG:跳转至第N行
G :最后一行
末行模式下,直接给出行号即可 。
5 句间跳转
) :跳转至下一句
( ;跳转至前一句
Num : 与句跳转快捷键一同使用,向指定方向跳转句的个数,例如10),向后跳转10句
6 段间跳转
} :向后跳转一个段落
{ :向前跳转一个段落
Num :与段落跳转快捷键一同使用,向指定方向跳转的段落个数,例如2},向后跳转2个段落
六、翻屏
Ctrl +f :向下翻一屏
Ctrl +b :向上翻一屏
Ctrl +d :向上翻半屏
Ctrl +u :向上翻半屏
七、删除单个命令
x :删除光标所在处的单个字符
Nx
:删除光标所在处及向后的的共N个字符
八、删除命令
1 d命令与跳转命令组合使用;
Ndh ,Ndl : 删除跳转符左侧或右侧的N个字符
Ndj,Ndk : 删除跳转符之上或之下的N行
Ndw ,Nde ,Ndb : 删除跳转符之后的N单词
dd :删除光标所在行
#dd :删除包括当前光标所在行在内的#行
2 末行模式下删除行
:n,md :表示删除从n到m行的内容
. :表示当前行
$ :表示最后一行
+#:向下的#行
九、粘贴命令 p /P
p(小写p):如果删除的或复制的内容为整行内容,则粘贴至光标所在行的下方;否则,则粘贴至光标所在行的后面
P(大写P):如果删除的或复制的内容为整行内容,则粘贴至光标所在行的上方;否则,则粘贴至光标所在行的前面
十、复制命令 y (与d命令使用方式相同)
yy :复制光标所在行
#yy:复制包括当前光标所在行在内的#行
:n,my :表示复制从n到m行的内容
十一、撤销命令
u :撤销操作
#u :撤销#次操作
撤销掉错误的撤销工作 :ctrl +r
十二、可视化操作,功能:像windows的文本编辑工具一样,可以通过鼠标进行范围选定,然后进行操作
v :按字符选取
V:按行选取
十三、查找
/PATTERN
:向下查找匹配PATTERN字符的行
?PATTERN:向上查找匹配PATTERN字符的行
n :向下查找被匹配的字符
N :向上查找被匹配的字符
十四、查找替换
在末行模式下使用s命令
ADD1,ADD2 [email protected]@[email protected]
. 表示光标选中的行
1,$等同于% :表示文中的所有行
例:
:1,$ [email protected]@[email protected] 表示从第一行到最后一行把NOT替换为not
:% [email protected]^[[:space:]]\[email protected]@g 表示从全文删除以空白字符开头的行的行首的空白字符
:1,[email protected]*@#&@ 表示文件的前三行的行首加#号
十五、如何打开多个文件
1 Vim file1
file2 file3 默认显示的是第一个文件
:next 切换至下一个文件
:prev 切换至前一个文件
:last 切换至最后一个文件
:first 切换至第一个文件
2 退出:
:qa 退出所有文件
十六、如何分屏显示一个文件
Ctrl
+w,s 水平拆分窗口
Ctrl+w
, v 垂直拆分窗口
1 在窗口切换光标
Ctrl
+w ,上下左右箭头 ,实现分屏切换
2 退出方式
:wqall | 保存所有文件并退出
:wall | 保存所有文件
:qall | 退出所有文件
十七、分窗口显示多个文件
vim -o
file1 file2 水平分窗口显示
Vim -O
file1 file2 垂直分窗口显示
十八、将当前文件中的部分内容另存为另外一个文件
1 末行模式下使用命令
:w
:ADDR1,ADDR2w /PATH/to/somwhere 表示把从第ADDR1行到ADDR2行的内容另存到/PATH/To/somewhere 文件中
十九将另外一个文件的内容填充在当前文件中
1 末行模式下使用命令
:r
:r /PATH/To/Somewhere 表示把文件中/PATH/To/somewhere 的内容写入到光标下一行
二十、与shell 交互
:! COMMAND 与shell交互方法
二十一 、高级话题
在末行模式下做得设定,仅对当前vim进程有效;想要永久有效,要进行配置文件修改。
1 永久有效的配置文件:
(1) 全局的: /etc/vimrc
(2) 个人的: ~/.vimrc
2 显示或取消行号
:set nu 显示行号
:set nonu 取消行号
3 设定vim编辑器显示忽略或区分字符大小写
:set ic 忽略大小写
:set noic 不忽略大小写
4 设定自动缩进
:set autoindent 或 :set ai 设置自动缩进
:set noai 取消自动缩进
5 查找到的文件高亮显示
:set hlsearch 高亮显示
:set
nohlsearch 取消高亮显示
6 语法高亮
:syntax on
:syntax off 关闭语法高亮