vim编辑器使用

介绍

VI 编辑器是Linux和Unix上最基本的文本编辑器,工作在字符模式下。由于不需要图形界面,使它成了效率很高的文本编辑器,但是很多初学者对这个编辑器都不感冒,我也一样。

1、VIM快速入门

一、vim的3种模式介绍

VIM存在3种工作模式,分别是命令模式,插入模式和底行模式。
命令模式:输入vim命令后启动vim默认就是进入命令模式,此时所有键都是功能键。
插入模式:命令模式下按下“i”键就可以进入插入模式,这时就像记事本一样编辑文本了。
底行模式:在命令模式下输入“:”进入底行模式,可以用以保存文件、退出vim以及设置环境执行编译命令等。

vim启动进入命令模式
处于插入模式或底行模式时只需要按“ESC”退出键即可进入命令模式
命令模式中按“i”(插入)或“a”(附加)键都可以进入插入模式
命令模式中按“:”进入底行模式
底行模式中输入“wq”回车后保存并退出vim

二、进入vim

1.使用vim命令进入vim界面
vim是打开vim的命令 test.txt是您打开或者新建文件的文件名。
打开linux终端,输入以下命令
$ vim test.txt
直接使用vim也可以打开vim编辑器,但是不会打开任何文件。
$ vim
进入底行模式后输入:e test.txt 同样可以打开test.txt文件。
2.游标移动

3.移动vim编辑器的游标
在进入vim后,按下“i”键进入插入模式。在该模式下您可以输入文本信息
请输入如下三行信息
12345678
abcdefghijk
testtesttest
按esc进入命令模式,在该模式下使用方向键或者hjkl键可以移动游标。
h:左;
l(小写L): 右
j :下
k: 上
w:移动到下一个单词
b:移动到上一个单词
请尝试在命令行模式下使用字母键在文本中移动游标
选择特定的文本位置后可以进入编辑模式开始编辑

三、进入编辑模式

1.使用命令进入编辑模式

在命令模式下输入下列字母进入编辑模式进行文本编辑
i 在当前光标处进行编辑
a 在光标后插入编辑
o 在当前行后插入一个新行
O 在当前行前插入一个新行
cw 替换从光标所在位置后到一个单词结尾的字符
请尝试不同的从命令模式进入编辑模式的方法,不要忘记ESC键可以从编辑模式退回到命令模式

四、保存文档

1.底行模式下保存文档

从命令模式输入“:”进入底行模式,输入w回车,保存文档

五、退出vim

1.底行模式下退出vim

从命令模式输入“:”进入底行模式,输入wq回车,保存并退出编辑
也可以使用其他的退出命令,命令前的”:”表示处于底行模式中
:q! 强制退出,不保存
:q 退出
:wq! 强制保存并退出
:saveas 另存为
:x 或 :wq 保存并退出
2.命令模式下退出vim

命令模式下输入“ZZ”即可保存退出vim

六、删除文本

1.命令模式下删除vim文本信息

进入命令模式,使用下列命令进行文本快速删除:
x 删除游标所在的字符
X 删除游标之前的字符
“del”按键删除当前字符
dd 删除整行
dw删除一个word(不适用中文)
dG删除到文档结尾处
d1G 删至文档首部
d$删除至行尾

2、Vim文档编辑

一、vim重复命令

1.重复执行上次命令

进入命令模式 . (小数点) 可以重复上一次的命令
拷贝测试文件到本地目录
$ cp /etc/protocols ./
打开文件文件进行编辑
$ vim protocols
命令模式下输入x,删除第一个字符,输入.(小数点)会再次删除一个字符
2.多次执行相同的命令

进入命令模式输入“N” 重复某个命令N次
打开文件文件进行编辑
$ vim protocols
命令模式下输入10x,删除10个连续字符
命令模式下输入3dd,将会删除3行文本

二、光标的跳转

1.光标快速跳转

命令模式下,下列命令可以让光标快速调转到指定位置
NG到第 N 行 (命令中的G是大写的)
gg到第一行
G到最后一行

2.练习NG命令

N是一个数字,G必须大写
打开文件文件进行编辑
$ vim protocols
进入命令模式,输入10G,光标将会跳转到第10行

3.gg命令

gg命令将光标跳转至第一行,与1G相同
N是一个数字,G必须大写
打开文件文件进行编辑
$ vim protocols
进入命令模式,输入10G,光标将会跳转到第10行
进入命令模式,输入gg,光标将会跳转到第1行

4.G命令

G命令将光标跳转到最后一行
$ vim protocols
进入命令模式,输入G,光标将会跳转到最后一行

5.按单词移动光标

命令模式下使用下列命令按照单词为单位进行跳转
w 到下一个单词的开头。
e 到下一个单词的结尾。
打开文件进入命令模式,练习按照单词进行跳转
$ vim protocols

三、复制粘贴和剪切

1.复制及粘贴文本

命令模式中使用y 复制
命令模式中yy复制游标所在的整行(3yy表示复制3行)
命令模式中,y^ 复制至行首,或y0。不含光标所在处字符。
进入命令模式,y$ 复制至行尾。含光所在处字符。
进入命令模式,yw 复制一个word。
进入命令模式,y2w 复制两个字。
进入命令模式,yG 复制至文本最后。
进入命令模式,y1G 复制至文本开始位置。
命令模式中使用p 粘贴
进入命令模式,p 小写p 代表贴至光标后(下)
进入命令模式,P 大写P 代表贴至光标前(上)

2.剪切及粘贴文本

命令模式中使用d 剪切
命令模式中dd剪切游标所在的整行(3dd表示剪切3行)
命令模式中,d^剪切至当前行开始位置,或d0。不含光标所在处字符。
进入命令模式,d$ 剪切至行尾。含光所在处字符。
进入命令模式,dw 剪切一个word。
进入命令模式,d2w 剪切两个字。
进入命令模式,dG 剪切至文本最后。
进入命令模式,d1G 剪切至文本开始位置。
命令模式中使用p 粘贴
进入命令模式,p 小写p 代表贴至光标后(下)
进入命令模式,P 大写P 代表贴至光标前(上)

四、在当前行上移动光标

1.当前行上移动光标命令简介

0 到行头
$ 到行尾
fa 到下一个为a的字符处,你也可以fs到下一个为s的字符。
t, 到逗号前的第一个字符。逗号可以变成其它字符。
3fa 在当前行查找第三个出现的a。
F 和 T 和 f 和 t 一样,只不过是相反方向。

2.光标移动命令练习

复制练习文本到本地目录
$ cp /etc/protocols ./
打开文件文件进行编辑
$ vim protocols
命令模式下输入11G,跳转到第11行
命令模式下输入$跳转到行尾后输入0回到行头
命令模式下输入fa 跳转到下一个a字符处
命令模式下输入ta跳转到a字符前一个位置
命令模式下输入3fa跳转到第三个出现的a字符处
命令模式下输入3Fa跳转到前方第三个a字符

3、Vim替换查找

一、字符的取代及还原

1.取代和还原命令简介

命令模式下输入r,并且输入新的字符,新字符将会取代以前的字符
命令模式下输入R取代字符,输入新字符串直到按下Esc为止。
命令模式下输入cc取代整行字符。或大写S 亦可。
命令模式下输入cw 替换一个英文字(word),中文不适用。
命令模式下输入Shift+~,翻转游标所在字符的大小写
命令模式下输入C 取代至行尾,即游标所在处以后的字都会被替换
命令模式下输入u 取消上一次的操作

2.取代和还原命令练习

复制练习文本到本地目录
$ cp /etc/protocols ./
打开文件文件进行编辑
$ vim protocols
命令模式下输入11G,跳转到11行
输入fa跳转到第一个a字符
命令模式下输入r,并且输入b,a字符被b字符取代
命令模式下输入R取代字符,输入新字符串,输入完按ESC回到命令模式
命令模式下输入cc取代整行字符,输入新字符串,输入完按ESC回到命令模式
命令模式下输入cw 替换一个英文字(word),输入完按ESC回到命令模式
命令模式下输入Shift+~,翻转游标所在字符的大小写
命令模式下输入C 取代至行尾,即游标所在处以后的字都会被替换,输入完按ESC回到命令模式
命令模式下输入u 取消上一次的操作

二、文字的简单排列

1.使用命令对文字进行简单的排列

打开文件进行编辑
$ vim protocols
命令模式下输入15G,跳转到15行
命令模式下输入>> 整行将向右缩进
命令模式下输入<< 整行向左回退
命令模式下输入’:’进入底行模式下对shiftwidth值进行设置可以控制缩进和回退的字符数

2.shiftwidth命令

shiftwidth命令是指上一节>>命令产生的缩进(可以简写成sw)
命令模式下输入’:’进入底行模式下对shiftwidth值进行设置可以控制缩进和回退的字符数
获取目前的设定值
:set shiftwidth?
设置缩进为10个字符
:set shiftwidth=10
输入ESC回到命令模式,再次尝试>>看缩进量是否变化

3.调整文本位置

底行模式下ce(center)命令使本行内容居中
:ce
底行模式下ri(right)命令使本行文本靠右
:ri
底行模式下le(left)命令使本行内容靠左
:le

三、查找

1.快速查找

命令模式下输入/然后键入需要查找的字符串 按回车后就会进行查找。
?与/功能相同,只不过?是向上而/是向下查找。
进入查找之后,输入n和N可以继续查找
n表示继续查找,N反向查找

2.快速查找练习

打开文件文件进行编辑
$ vim protocols
命令模式下输入/icmp查找icmp字符串
命令模式下输入n查找下一个icmp
命令模式下输入?tcp向上查找tcp字符串
命令模式下输入N查找上一个出现的tcp

3.高级查找

命令模式下输入寻找游标所在处的单词
命令模式下输入#同上,但
是向前(下)找,#则是向后(上)找
命令模式下输入g ,但部分符合该单词即可
命令模式下输入g#同# ,但部分符合该单词即可
以上查找n, N 的继续查找命令依然可以用

4、高级功能入门

一、文档加密

1.创建加密文档

$ vim -x file1
输入您的密码
确认密码
这样在下一次打开时,vim就会要求你输入密码

二、在vim执行外部命令

1.执行外部命令

在底行模式中输入!可以执行外部的shell命令
:!ls 用于显示当前目录的内容
:!rm FILENAME 用于删除名为 FILENAME 的文件
:w FILENAME 可将当前 VIM 中正在编辑的文件另存为 FILENAME 文件

三、多文件编辑

1.使用vim编辑多个文件

编辑多个文件有两种形式,一种是在进入vim前使用的参数就是多个文件。另一种就是进入vim后再编辑其他的文件。
同时创建两个新文件并编辑
$ vim 1.txt 2.txt
默认进入1.txt文件的编辑界面
底行模式下输入:n编辑2.txt文件,可以加!即:n!强制切换,之前一个文件的输入没有保存,仅仅切换到另一个文件
底行模式下输入:N编辑1.txt文件,可以加!即:N!强制切换,之前文件内的输入没有保存,仅仅是切换到另一个文件

2.进入vim后打开新文件

底行模式下输入:e 3.txt 打开新文件3.txt
底行模式下输入:e# 回到前一个文件
底行模式下输入:ls可以列出以前编辑过的文档
底行模式下输入:b 2.txt(或者编号)可以直接进入文件2.txt编辑
底行模式下输入:bd 2.txt(或者编号)可以删除以前编辑过的列表中的文件项目
底行模式下输入:e! 4.txt,新打开文件4.txt,放弃正在编辑的文件
底行模式下输入:f 显示正在编辑的文件名
底行模式下输入:f new.txt,改变正在编辑的文件名字为new.txt

3.恢复文件

如果因为断电等原因造成文档没有保存,可以采用恢复方式,vim -r 进入文档后,输入:ewcover 1.txt来回复
$ vim -r 1.txt

四、视图模式

1.视图模式命令简介

在命令模式下输入v(小写v),进入字符选择模式,就可以移动光标,光标走过的地方就会选取。再次按下v会后就会取消选取。
在命令模式下输入V (大写V),进入行选择模式,按下V之后就会把整行选取,您可以上下移动光标选更多的行,同样,再按一次V就可以取消选取。
在命令模式下输入 Ctrl+v(小写V),这是区域选择模式,可以进行矩形区域选择,再按一次Ctrl+v取消选取。
在命令模式下输入d删除选取区域内容
在命令模式下输入y复制选取区域内容

2.视图模式命令练习

拷贝练习文件到当前目录
$ cp /etc/protocols ./
打开练习文件
$ vim protocols
在命令模式下20G跳转到20行,输入v(小写v),进入字符选择模式,移动光标,选取1个单词,输入y复制选取内容,输入p在当前位置粘贴选取内容
在命令模式下输入V (大写V),进入行选择模式,移动光标向下选择3行,输入d删除选取内容。
在命令模式下输入 Ctrl+v(小写v),移动光标进行矩形区域选择,输入d删除选取内容。
在命令模式下输入d删除选取区域内容
在命令模式下输入y复制选取区域内容

五、视窗操作

1.视窗操作简介

vim可以在一个界面里打开多个窗口进行编辑,这些编辑窗口称为vim的视窗
打开方法可以使用在底行模式下输入:new 打开一个新的vim视窗(命令模式下输入Ctrl+w也可以,但是Ctrl+w在chrome下会与chrome的命令产生冲突从而关闭chrome的标签页)
底行模式下输入:sp 1.txt 打开新的横向视窗来编辑1.txt
底行模式下输入:vsp 2.txt 打开新的纵向视窗来编辑1.txt
注意:下述命令建议在火狐或IE9+浏览器中使用,chrome会有快捷键冲突
命令模式下Ctrl-w s 会打开一个新的视窗,且原来的文档分属两个视窗。
命令模式下Ctrl-w f 打开一个新的视窗,且游标编辑之处的单词就是新视窗的名称
命令模式下Ctrl-w q 即 :q 结束分割出来的视窗。如果在新视窗中有输入需要使用强制符!即:q!
命令模式下Ctrl-w o 打开一个视窗并且隐藏之前的所有视窗
命令模式下Ctrl-w j 移至下视窗
命令模式下Ctrl-w k 移至上视窗

2.视窗操作练习

$ vim 1.txt
底行模式下输入:new 打开一个新的vim视窗
底行模式下输入:sp 2.txt 打开新的横向视窗来编辑2.txt
底行模式下输入:vsp 3.txt 打开新的横向视窗来编辑3.txt
如果使用非chrome浏览器可以使用Ctrl+w进行视窗间的跳转
分别在不同视窗的底行模式下输入:q!退出多视窗编辑

六、帮助系统

1.vim中的查看帮助

命令模式下按F1打开vim自己预设的帮助文档
底行模式下输入:h shiftwidth 打开名为shiftwidth的帮助文件
底行模式下输入:ver 显示版本及参数

七、功能设定

1.vim的功能设定

可以在编辑文件的时候进行功能设定,如底行模式下输入:set nu(显示行数),设定值退出vim后不会保存。要永久保存配置需要修改vim配置文件。
vim的配置文件~/.vimrc,可以打开文件进行修改,不过务必小心不要影响vim正常使用

2.获取目前的设定

底行模式下输入:set或者:se显示所有修改过的配置
底行模式下输入:set all 显示所有的设定值
底行模式下输入:set option? 显示option的设定值
底行模式下输入:set nooption 取消当期设定值

3.set功能的说明

底行模式下输入:set autoindent(ai) 设置自动缩进
底行模式下输入:set autowrite(aw) 设置自动存档,默认未打开
底行模式下输入:set background=dark或light,设置背景风格
底行模式下输入:set backup(bk) 设置自动备份,默认未打开
底行模式下输入: set cindent(cin) 设置C语言风格缩进