Linux中Vim编辑器的使用
Vim功能介绍
vim是一款功能丰富而强大的文本编辑器,支持语法高亮,支持多窗口编辑,是vi文本编辑器的增强版。如果在CentOS
7.2中如果是选择最小化安装,其默认是没有安装vim rpm包的,需要自行安装,可以使用yum工具进行在线安装。
vim至今已经走过了25个春秋,现在8.0版的已经发布了。 本文介绍的vim,版本是7.4.160。
vim是一款模式化的编辑器。
它的工作模式分为三种:
-
编辑模式
编辑模式又称为正常模式(Normal mode),其进入方式为:执行指令:vim /PATH/FROM/FILENAME
,如果这一文件不存在,则会创建新文件,但如果编辑完成后不予保存则此文件不会保留。这一模式可以对文本内容完成诸如复制、粘贴、删除这一类的编辑操作。 -
输入模式
其进入方式有多种,大多是在编辑模式通过按下特定的字符键进入。在这一模式中可以对文本内容完成修改添加删除的操作。 -
末行模式
进入这一模式的方法是在编辑模式中输入冒号。然后可以输入很多指令完成对文本的编辑操作,功能十分强大。
vim编辑模式使用练习
vim自带了一个练习程序,在bash shell中直接执行vimtutor
即可以打开,如下所示:
使用h,j,k,l
键移动光标
根据屏幕提示,使用h,j,k,l
键分别实现将光标往前移动一格,往下移动一格,往上移动一条,往后移动一格,即h,j,k,l
分别对应前,下,上,后
。如下所示:
放弃对文本文件所有的修改操作
当使用vim对文本文件做了一些修改以后,但又不想保存这些修改,想将文件恢复至原样,可以使用如下步骤进行操作。
1. 按下ESC
键,确保已位于正常模式中
2. 输入:q!
,按下回车键,退出vim模式
3. 当看到shell提示符时,即表明已退出对之前文本文件的编辑
为便于练习继续,在bash shell中再次执行vimtutor
指令,进入vim的练习之中。
删除文本的字符
在vim编辑模式中可以按下x键,将光标选中的字符删除。操作步骤如下:
1. 进入vim编辑模式
2. 通过上面介绍过的h,j,k,l键将光标移动至想要删除的字符处
3. 按下x键,将光标已选中的字符删除
vimtutor中的操作示例及说明如下:
在光标所在处或者光标所在行的行首插入字符
在vim编辑模式中,将光标移动至想要插入新字符的位置,然后按下I
键即输入i(小写),即可进入vim的输入模式,此时vim编辑器左下角会出现“– INSERT –”提示符,即说明此时已处于vim输入模式中,可以通过键盘输入想要插入的字符。如果输入"I
"(大写),可以实现光标所在行的行首直接进入输入模式。
vimtutor中的操作示例及说明如下:
继续结合上面的一些操作方法,将句子中的错误进行修正,结果应该是这样的吧,英语不是很好.^_^
在光标所在行的行尾插入字符
在编辑文本文件时,如果想在某一行的行尾直接进入编辑,可以在vim编辑模式中将光标移动至目标行,不用在意光标在这一行的什么位置,此时按下A键方法为输入大写A的操作方法。然后进行编辑即可。
vimtutor中的操作示例及说明如下:
保存文本文件并退出vim编辑模式
当编辑完文本文件以后,在vim编辑模式中输入:wq
,然后回车,对文本文件进行保存,并退出vim的编辑模式,结束对文本文件的修改工作。
vimtutor中的说明及操作示例如下:
一次性删除一个单词
在Linux中一个单词,并非各人类语言语法中的单词,而是指一个连续且不包含空格的字符串。在vim编辑模式中,将光标移动至想要删除的单词的超始处,然后输入dw
即可直接将这一单词及其后面的空白字符删除,无需要通过先进入输入模式,然后按回退键一个字符一个字符进行删除。
vimtutor中的说明及示例如下:
一次性删除一行中从光标处起始直至行尾的全部内容
如果文本中某一行中有一个连接的段需要删除,这时可以在vim编辑模式中,先将光标移动至要删除部分的起始处,然后输入d$
即可一次性将光标所在位置至行尾的全部内容一次性删除。
vimtutor中的说明及操作示例如下:
一次性删除光标所在处至单词的最后一个字符
在vim编辑模式中将光标移动至想要删除的单词的词首,然后输入de
即可将这个单词删除。相较于dw
的区别是,de
不会删除这一个单词其后的空白字符。vimtutor中的说明如下:
一次性将光标移动一个单词的方法
vim编辑模式中,一个字符一个字符地移动光标有时难免显得低效,它提供了直接让光标在单词间跳转的方法。
在编辑模式中:
按下E
键(不区分大小写),可实现将光标直接跳转至行内本单词或者下一个单词的词尾,如果光标正处在某单词的中间位置按下E键,光标会跳至本单词的词尾。
按下W
键(不区分大小写),光标会跳至下一个单词的词首。
按下B
键(不区分大小写),光标会跳至本单词或者前一个单词的词首。
一次性将光标移动N个单词的方法
在vim编辑模式中,还可以使用#{E|W|B}
这种方法,一次性将光标往前或往后移动#个单词,#为数字,一个标点符号算作一个单词,至于光标是位于单词词首还是词尾取决于#后面所跟的是E还是W或者B。
vimtutor中的示例及说明:
一次性删除指定个数的单词
在vim编辑模式中,使用d#w
,#代表要删除的单词数,可以一次性将指定个数的单词及其后面的空白字符删除。
vimtutor中的示例及说明:
一次性删除一整行
在vim编辑模式中,将光标移动至想要删除的那行上,不管光标处在这行什么位置都可以,然后输入dd,即可将这一整行删除;如果输入#dd,将会删除当前光标所在的行及其下#行(空白行也算一行),#号表示数字。
vimtutor中的说明及示例结果:
撤销之前的操作
在vim编辑模式中,如果想撤销之前的操作,只需要输入u
(小写)即可撤销上一步的操作,如果想撤销上#步的操作,输入#u
即可。如果又后悔撤销了刚才的撤销操作,可以使用Ctrl+R
组合键。如果后悔对这一整行所做的修改,可以输入U
(大写)将对这一行所做的操作一次性撤销。
vimtutor中的说明及操作示例:
对行进行剪切与复制
在vim编辑模式中,如果想要将某一行的位置进行移动,可以先将光标移动至这一行,输入dd
进行删除,然后将光标移动至这一行新位置的上一行处,然后输入p(小写),刚才删除的那一行即会被移动到新位置;而如果输入P(大写),则刚才删除的一行,会直接复制到光标所在的这一行处,也相当于将光标放在一这一行新位置的下一行处。
vimtutor中的说明及操作示例:
对字符进行替换
如果想将某字符进行替换,在vim编辑模式中,可以先用光标将这一字符选中,然后输入r(小写)并紧接着输入这一字符想要替换成的字符,这种方式一次只能替换一个字符。
vimtutor中的说明及操作结果:
修改行中的某一个单词
如果想修改某单词的部分字符或者整个单词,在vim编辑模式中可以将光标移动至想要修改的地方的起始处,然后输入ce
(小写),它会删除光标所在处至这个单词结尾的部分,然后进入输入模式,这时在将正确的内容输入即可完成对某单词的修改。
vimtuor中的说明和操作结果示例:
修改一行中的多个单词
如果想修改一行中的多个单词,可能直至这一行的结尾。此时可以在vim编辑模式中使用c#w
或者c$
指令。如下示例中的需求即是需要删除从“some”开始直至行结尾的部分,因此使用c$指令,然后在输入模式中进行修改即可。
光标定位及迅速移动
如果想将光标快速移动至文件的最后一行,在vim编辑模式中输入G
(大写)即可;如果想将光标快速移动至文件的第一行,在vim编辑模式中输入gg
(小写);在编辑模式中按下Ctrl+G
组合键,可以在编辑模式的最下边显示出当前光标所在的行号,及文件总行数,文件名等信息。在编辑模式中输入#G
可以将光标跳转至第#行行首,#为指定的行号。
vim编辑模式中的搜索方法
在vim编辑模式中如果要搜索某一字符或字符串,可以使用/字符(串)
的方式进行,它会从光标所在处开始往下搜索,当要继续往下搜索时,继续输入n
(小写),当要继续往上搜索时,继续输入N
(大写)。
另一种搜索方式是在编辑模式中使用?字符(串)的方式进行,它会从光标所在处开始往上搜索,继续往上搜索,就继续输入n
(小写),继续往下搜索,就继续输入N
(大写)。
要将光标回退至上一次所在的位置,使用组合键Ctrl+O;要将光标往前移,使用组合键Ctrl+I。
vimtutor中的示例及说明:
vim编辑模式中检查括号是否匹配
在vim中可以将光标移动至要检查的括号处,然后输入%,光标会自动跳转至与之匹配的括号处,用此来检查程序语句中括号是否完整。
vim末行模式
vim末行模式进入的方式:在编辑模式中,按下键盘输入冒号:即可。需要注意的是:在末行模式中所有的指令要生效必须按回车键。
末行模式中查找并替换
vim末行模式中支持查找某字符串,然后在将文本中查找到的对象进行替换。在编辑模式中输入:s/old/new
,然后回车。old表示要查找的字符串,new表示替换后的最终字符串。它只替换查找到的第一个匹配的字符串。
如果要一次性将一行中所有匹配的字符串进行替换,需要在编辑模式中输入:s/old/new/g
然后回车。
如果要一次性将全文中所有匹配的字符串进行替换,需要在编辑模式中输入:%s/old/new/g
然后回车。
如果要在文本中一定范围内查找指定的字符串并替换,需要在编辑模式中输入:#,#s/old/new/g
,然后回车。#,#表示从哪一行到哪一行,为行编号。
vimtutor中的示例及说明:
末行模式中执行外部命令
在vim末行模式中通过输入!然后跟上任何可以shell中执行的指令,都可以在这里面执行,执行完以后按下回车键会回到之前的编辑模式状态。
使用示例如下:
将正在编辑的文本全部另存为其它文件
在vim末行模式中通过输入w /PATH/TO/FILENAME
可以将文件另存为指定的新文件。
将正在编辑的文本中的部分另存为其它文件
在vim编辑模式中,首先将光标移动至需要另存为的内容的起始处,然后输入v
(小写),vim末行出现"VISUAL"提示符,再然后结合光标操键h,j,k,l
选定需要另存为的文本内容。选定以后,输入:
进入末行模式,此时vim末行会出现":'<,'>
"提示符,然后紧挨着在其后面输入w /PATH/TO/FILENAME
即可将选定的文本内容另存为指定的文件中,如果指定文件已经存在,需要使用在文件名后跟上!
,进行强制覆盖。
以下为vimtutor中的示例及说明:
合并其它文本内容至当前编辑中的文本中
vim末行模式中,将光标移动至想加入其它文本文件内容的超始处,然后输入r /PATH/FROM/FILENAME
即可将指定文本文件的内容添加至光标下方。
vimtutor中示例的效果:
**末行模式中还支持将其它shell指令的输出内容直接添加至当前正在编辑中的文本文件中。操作方法为":r !cat /home/lantian/TEST
","cat /home/lantian/TEST
"为需要执行的shell指令。
在编辑模式中直接在光标所在行的下一行或者上一行进入输入模式
在vim编辑模式中,如果想在光标所在行的下方直接进入输入模式,可以直接输入"o"(小写);如果想在光标所在行的上方直接进入输入模式,可以直接输入"O"(大写)。
vimtutor中的说明及示例如下所示:
在编辑模式中直接在光标所在处的后面或者行尾进入输入模式
在vim编辑模式中,如果想在光标所在处的后面添加字符即直接进入输入模式,可以直接输入"a"(小写);如果想在光标所在行的行尾直接进入输入模式,可以直接输入"A"(大写)。
vimtutor中示例完成后的效果:
复制和粘贴文本
在vim编辑模式中,如果想复制粘贴某段内容,可以先将光标移动至想要复制的内容的起始处,然后输入"v
"(小写)进入"VISTUAL"视图,然后结合h,j,k,l
键移动光标来选取想要复制的内容,被选中的文本会高亮显示,再按下y
(小写)就完成了复制工作。然后将光标移动至复制的目标位置,按下p
(小写)就将之前复制的内容粘贴过来了。
vimtutor中的说明及示例如下:
配置vim工作环境
在vim末行模式中,可以使用丰富的set指令及选项来配置vim的工作环境。常用的有:
-
行号
显示:set number,简写为set nu
取消显示:set number,简写为set nonu -
括号匹配高亮
匹配:set showmatch,set sm
取消:set noshowmatch,set nosm -
自动缩进功能
启用:set ai
禁用:set noai -
高亮搜索
启用:set hisearch
禁用:set nohlsearch -
语法高亮
启用:syntax on
禁用:syntax off -
忽略字符大小写
启用:set ic
禁用:set noic
vim编辑长文本时的翻屏操作
在vim编辑模式中使用如下组合键,可以实现对应的效果。
Ctrl+f:向文件尾部翻一屏
Ctrl+b:向文件首部翻一屏
Ctrl+d:向文件尾部翻一屏
Ctrl+u:向文件首部翻一屏
Enter:按行向后翻
vim编辑文本时实现句间或者段间跳转操作
在vim编辑模式中使用如下标点符号,可以实现光标在句间或者段间快速跳转。
句间跳转
)
(
段间跳转
{
}
原创文章,作者:N24_lantian,如若转载,请注明出处:http://www.178linux.com/62097
评论列表(1条)
学以致用,好棒,有图有真相