vim操作.docx
- 文档编号:27355080
- 上传时间:2023-06-29
- 格式:DOCX
- 页数:12
- 大小:22.73KB
vim操作.docx
《vim操作.docx》由会员分享,可在线阅读,更多相关《vim操作.docx(12页珍藏版)》请在冰豆网上搜索。
vim操作
vim操作介绍
1.vi命令介绍
vi是”VisualInterface”的简称,它在Linux上的地位就仿佛Edit程序在DOS上一样。
它可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制,这是其他编辑程序所没有的。
vi不是一个排版程序,它不象Word或WPS那样可以对字体、格式、段落等其他属性进行编排,它只是一个文本编辑程序。
vi没有菜单,只有命令,且命令繁多。
限于篇幅,本文只介绍常用的命令。
Vi有三种基本工作模式:
命令行模式,文本输入模式和末行模式。
2.Vim基本工作模式
2.1.命令行模式:
任何时候,不管用户处于何种模式,只要按一下“ESC”键,即可使vi进入命令行模式;当在shell环境下输入vi命令启动vi编辑器时,也是处于该模式下。
在该模式下,用户可以输入各种合法的vi命令,用于管理自己的文档。
此时从键盘上输入的任何字符都被当作编辑命令来解释,若输入的字符是合法的vi命令,则vi在接受用户命令之后完成相应的动作(但需注意的是,所输入的命令并不在屏幕上显示出来)。
若输入的字符不是vi的合法命令,vi会响铃报警。
2.2.文本输入模式:
在命令模式下输入插入命令i、附加命令a、打开命令o、修改命令c、取代命令r或替换命令s都可以进入文本输入模式。
在该模式下,用户输入的任何字符都被vi当做文件内容保存起来,并将其显示在屏幕上。
在文本输入过程中,若想回到命令模式下,按“ESC”键即可。
2.3.末行模式:
在命令模式下用户按“:
”键即可进入末行模式下,此时Vi会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个“:
”作为末行模式的提示符,等待用户输入命令。
多数文件管理命令都是在此模式下执行的(如把编辑缓冲区的内容写到文件中等)末行命令执行完后,vi自动回到命令模式。
若在末行模式下输入命令过程中改变了主意,可按“ESC”键或用退格键将输入的命令全部删除之后,再按一下退格键,即可使vi回到命令模式下。
3.Vim基本操作
3.1.vi的进入与退出
在shell模式下,键入vi及需要编辑的文件名,即可进入vi.例如:
viexample.txt
即可编辑example.txt文件.
如果该文件存在,则编辑界面中会显示该文件的内容,并将光标定位在文件的第一行;如果文件不存在,则编辑界面中无任何内容。
如果需要在进入vi编辑界面后,将光标置于文件的第n行,则在vi命令后面加上“+n”参数即可。
例如需要从example.txt文件的第5行开始显示,则使用如下命令:
vi+5example.txt
退出vi时,需要在末行模式中输入退出命令“q”。
如果在文本输入模式下,首先按“ESC”键进入命令模式,然后输入“:
”进入末行模式在末行模式下,可使用如下退出命令:
:
q直接退出。
如果在文本输入模式下修改了文档内容,则不能退出。
:
wq保存后退出。
:
x同“wq”。
:
q!
–不保存内容,强制退出。
3.2.vi中显示行号
在末行模式下,输入如下命令:
setnumber
可使vi在编辑界面中显示行号。
此外,在末行模式下,可使用如下“nu”命令(number的简写)来显示光标所在行的行号及该行的内容。
3.3.光标移动操作
全屏幕文本编辑器中,光标的移动操作无疑是最经常使用的操作了。
用户只有熟练地使用移动光标的这些命令,才能迅速准确地到达所期望的位置处进行编辑。
vi中的光标移动既可以在命令模式下,也可以在文本输入模式下,但操作的方法不尽相同。
在文本输入模式下,可直接使用键盘上的四个方向键移动光标;在命令模式下,有很多移动光标的方法。
不但可以使用四个方向键来移动光标,还可以用h、j、k、l这四个键代替四个方向键来移动光标,这样可以避免由于不同机器上的不同键盘定义所带来的矛盾,而且使用熟练后可以手不离开字母键盘位置就能完成所有操作,从而提高工作效率。
以下命令均在命令行模式下完成光标移动:
h光标左移,如果在按h命令前输入数字n,则光标左移n个字符;
l光标右移,如果在按l命令前输入数字n,则光标右移n个字符;
j光标上移,如果在按j命令前输入数字n,则光标上移n个字符;
k光标下移,如果在按k命令前输入数字n,则光标xia移n个字符;
0(零)光标移到行首;
$光标移到行尾;
H光标移到屏幕上显示的第一行(并不一定是文件头);
L光标移到屏幕上显示的最后一行(并不一定是文件尾);
M光标移到屏幕的中间一行;
nG光标移到第n行;
w或W将光标右移至下一个单词的词首;
e或E如果光标起始位置处于单词内(即非单词尾处),则该命令将把光标移到本单词词尾;如果光标起始位置处于单词尾,则该命令将把光标移动到下一个单词的词尾。
b或B如果光标处于所在单词内(即非单词首),则该命令将把光标移至本单词词首;如果光标处于所在单词的词首,则该命令将把光标移到上一个单词的词首;
Ctrl+G状态命令,显示当前编辑文档的状态。
包括正在编辑的文件名、是否修改过、当前行号、文件的行数以及光标之前的行占整个文件的百分比。
此外,也可以通过以下末行模式下的命令完成光标在整个文件中的移动操作:
:
n光标移到文件的第n行;
:
$光标移到文件的最后一行;
3.4.文本插入操作
在命令模式下,用户输入的任何字符都被vi当作命令加以解释执行,如果用户要将输入的字符当作是文本内容时,则首先应将vi的工作模式从命令模式切换到文本输入模式。
切换的方式是使用下面的命令:
3.4.1.插入(Insert)命令
vi提供了两个插入命令:
i和I。
(1).i命令插入文本从光标所在位置前开始,并且插入过程中可以使用键删除错误的输入。
此时vi处于插入状态,屏幕最下行显示“–INSERT–”插入字样。
(2).I命令该命令是将光标移到当前行的行首,然后在其前插入文本。
3.4.2.附加(append)命令
vi提供了两个附加插入命令:
a和A。
(1).a命令该命令用于在光标当前所在位置之后追加新文本,新输入的文本放在光标之后,在光标后的原文本将相应地向后移动,光标可在一行的任何位置。
(2).A命令该命令与a命令不同的是,A命令将把光标挪到所在行的行尾,从那里开始插入新文本,当输入A命令后光,标自动移到该行的行尾。
a和A命令是把文本插入到行尾的唯一方法。
3.4.3.打开open命令
不论是Insert命令也好,还是append命令也好,所插入的内容都是从当前行中的某个位置开始的。
若我们希望在某行之前或某行之后插入一些新行,则应使用open命令。
vi提供了两个打开命令:
o和O。
(1).o命令该命令将在光标所在行的下面新开一行,并将光标置于该行的行首,等待输入文本。
要注意当使用删除字符时只能删除从插入模式开始的位置以后的字符,对于以前的字符不起作用。
(2).O命令和o命令相反,O命令是在光标所在行的上面插入一行,并将光标置于该行的行首,等待输入文本。
3.5.文本修改操作
在命令模式下可以使用vi提供的各种有关命令对文本进行修改,包括对文本内容的删除、复制、取代和替换等。
3.5.1.文本删除/移动
在编辑文本时,经常需要删除一些不需要的文本,我们可以用键将输错或不需要的文本删除,但此时有一个限制就是当删到行头之后,再想删上面那行的内容是不可能的。
在命令模式下,vi提供了许多删除命令这些命令。
大多是以d开头的。
常用的有:
(1)删除单个字符
x删除光标处的字符。
若在x之前加上一个数字n,则删除从光标所在位置开始向右的n个字符。
X删除光标前面的那个字符,若在X之前加上一个数字n,则删除从光标前面那个字符开始向左的n个字符。
显然这两个命令是删除少量字符的快捷方法。
(2)删除多个字符
dd删除光标所在的整行。
在dd前可加上一个数字n,表示删除当前行及其后n-1行的内容。
D或d$两命令功能一样,都是删除从光标所在处开始到行尾的内容。
d0删除从光标前一个字符开始到行首的内容。
dw删除一个单词。
若光标处在某个词的中间,则从光标所在位置开始删至词尾。
同dd命令一样,可在dw之前加一个数字n。
表示删除n个指定的单词。
如果用户不小心进行了误删除操作,也不要紧vi,提供了恢复误操作的命令,并且可以将恢复的内容移动,放在文本的任何地方。
恢复命令用“np”,其中n为需要恢复的次数。
例如使用dd命令删除了一行内容,然后使用“2p”命令,则被删除的内容会被重新插入两遍。
通过dd命令及p命令的结合使用,可以很方便的实现文本行的移动操作。
3.5.2.文本复制命令
yy复制光标所在的整行。
在yy前可加上一个数字n,表示复制当前行及其后n-1行的内容。
文本行复制后,通过使用上面介绍的“p”命令,可以将文本行粘贴到任何地方。
dd、yy及p命令在vi中的作用,类似于Windows中图形编辑程序的“剪切”、“复制”及“粘贴”命令。
3.5.3.取消上一命令(Undo)
取消上一命令(Undo),也称复原命令,是非常有用的命令,它可以取消前一次的误操作或不合适的操作对文件造成的影响,使之回复到这种误操作或不合适操作被执行之前的状态。
取消上一命令有两种形式,在命令模式下键入字符u和U它们的功能都是取消刚才输入的命令,恢复到原来的情况。
小写u和大写U在具体细节上有所不同,二者的区别在于,大写U命令的功能是恢复到误操作命令前的情况,即如果插入命令后使用U命令,就删除刚刚插入的内容;如果删除命令后使用U命令,就相当于在光标处又插入刚刚删除的内容(这里把所有修改文本的命令都视为插入命令),也就是说U命令只能取消前一步操作,如果用U命令撤消了前一步操作,当再按U键时,并不是撤消再前一步的操作,而是撤消了刚才U命令执行的操作,也就是又恢复到第一次使用U命令之前的状态,结果是什么都没做。
而小写u命令的功能是把当前行恢复成被编辑前的状态,而不管此行被编辑了多少次。
3.5.4.重复命令(Redo)
重复命令也是一个非常常用的命令。
在文本编辑中经常会碰到需要机械地重复一些操作,这时就需要用到重复命令。
它可以让用户方便地再执行一次前面刚完成的某个复杂的命令。
重复命令只能在命令模式下工作,在该模式下按“.”键既可。
执行一个重复命令时,其结果是依赖于光标当前位置的。
3.5.5.文本搜索与替换操作
在进行文本编辑的时候,,您可以需要搜索或定位特定的单词或单词的一部分。
vi编辑器有向前或向后搜索指定模式的功能。
“/”是vi编辑器的模式搜索命令。
键入“/”后,屏幕的底部会出现一行,同时一个斜扛会出现在底行的行首上,且光标被放置在斜扛之后。
此时,您可以在光标位置键入你需要搜索的模式。
输入完成并按下ENTER键后,编辑器将开始从光标所在的位置起向文件尾部搜索你键入的模式。
如果输入的模式被找到,光标将停留在找到的模式上。
在找到一个匹配的模式后,如果您还需要搜索下一个匹配的模式,使用命令“n”即可;如果需要找到上一个匹配的模式,则使用“N”命令即可。
此外,“?
”命令也是模式搜索命令。
与“/”的区别在于/是从光标当前所在位置向文件尾部搜索,而“?
”命令则是由光标当前所在位置向文件头部搜索。
文本替换操作需要使用末行模式进行操作即所有文本替换操作命令均以“:
”开头。
3.5.5.1.文本替换命令的格式为:
:
s/text1/text2用于将光标所在段落搜索到的第一个“text1”替换为“text2”;
:
s/text1/text2/g用于将光标所在段落的所有“text1”替换为“text2”;
:
m,ns/text1/text2/g用于将从m行开始至n行结束的所有搜索到的“text1”替换为text2。
其中可以使用$表示末行,即“1,$”表示替换文档中的所有符合条件的字符。
4.Vim高效编辑篇
可以在很多情况下使用:
helpcommand来获得大部分命令的帮助,这个是VIM的内部帮助文件命令。
4.1.高效率移动
4.1.1.在插入模式之外
基本上来说,你应该尽可能少的呆在插入模式里面,因为在插入模式里面VIM就像一个“哑巴”编辑器一样。
很多新手都会一直呆在插入模式里面,因为这样易于使用。
但VIM的强大之处在于他的命令行模式!
你会发现,在你越来越了解VIM之后,你就会花越来越少的时间使用插入模式了。
4.1.2.使用h、j、k、l
使用VIM高效率编辑的第一步,就是放弃使用箭头键。
使用VIM,你就不用频繁的在箭头键和字母键之间移来移去了,这会节省你很多时间。
当你在命令模式时,你可以用h、j、k、l来分别实现左、下、上、右箭头的功能。
一开始可能需要适应一下,但一旦习惯这种方式,你就会发现这样操作的高效之处了。
在你编辑你的电子邮件或者其他有段落的文本时,你可能会发现使用方向键和你预期的效果不一样,有时候可能会一次跳过了很多行。
这是因为你的段落在VIM看来是一个大的长长的行。
这时你可以在按h、j、k或者l之前键入一个g,这样VIM就会按屏幕上面的行如你所愿的移动了。
4.1.3.在当前行里面有效的移动光标
很多编辑器只提供了简单的命令来控制光标的移动(比如左、上、右、下、到行首/尾等)。
VIM则提供了很多强大的命令来满足你控制光标的欲望。
当光标从一点移动到另外一点,在这两点之间的文本(包括这两个点)称作被“跨过”,这里的命令也被称作是motion。
这里是常用到的一些命令(motion):
∙fx:
移动光标到当前行的下一个x处。
很明显,x可以是任意一个字母,而且你可以使用;来重复你的上一个f命令。
∙tx:
和上面的命令类似,但是是移动到x的左边一个位置。
(这真的很有用)
∙Fx:
和fx类似,不过是往回找。
∙w:
光标往前移动一个词。
∙b:
光标往后移动一个词。
∙0:
移动光标到当前行首。
∙^:
移动光标到当前行的第一个字母位置。
∙$:
移动光标到行尾。
∙):
移动光标到下一个句子。
∙(:
移动光标到上一个句子。
4.1.4.在整个文件里面有效移动光标
VIM有很多命令,可以用来到达文件里面你想到达的地方。
下面是一些在文件里面移动的命令:
∙
向下移动一屏。
∙
向上移动一屏。
∙G:
到文件尾
∙numG:
移动光标到指定的行(num)。
(比如10G就是到第10行)
∙gg:
到文件首
∙H:
移动光标到屏幕上面
∙M:
移动光标到屏幕中间
∙L:
移动光标到屏幕下面
∙*:
读取光标处的字符串,并且移动光标到它再次出现的地方。
∙#:
和上面的类似,但是是往反方向寻找。
∙/text:
从当前光标处开始搜索字符串text,并且到达text出现的地方。
必须使用回车来开始这个搜索命令。
如果想重复上次的搜索的话,按n。
∙?
text:
和上面类似,但是是反方向。
∙ma:
在当前光标的位置标记一个书签,名字为a。
书签名只能是小写字母。
你看不见书签的存在,但它确实已经在那里了。
∙`a:
到书签a处。
(注意这个不是单引号,它一般位于大部分键盘的1的左边)。
∙`.:
到你上次编辑文件的地方。
这个命令很有用,而且你不用自己去标记它。
4.2.高效的输入
4.2.1.使用关键词自动完成
VIM有一个非常漂亮的关键词自动完成系统。
这表示,你可以输入一个长词的一部分,然后按一下某个键,然后VIM就替你完成了这个长词的输入了。
举个例子:
你有一个变量名为“iAmALongAndAwkwardVarName”在你写的代码的某个地方。
也许你不想每回都自己一个一个字母的去输入它。
使用关键词自动完成功能,你只需要输入开始几个字母(比如iAmAL),然后按
如果VIM没有给出你想要的词,继续按,直到你满意为止,VIM会一直循环它找到的匹配的字符串。
4.2.2.聪明的进入插入模式
很多新手进入插入模式都只是用i。
这样当然可以进入插入模式,但通常不是那么合适,因为VIM提供了很多进入插入模式的命令(在上面的篇幅中有详细的介绍过)。
下面是最常用的一些:
∙i:
在当前字符的左边插入
∙I:
在当前行首插入
∙a:
在当前字符的右边插入
∙A:
在当前行尾插入
∙o:
在当前行下面插入一个新行
∙O:
在当前行上面插入一个新行
∙c{motion}:
删除motion命令跨过的字符,并且进入插入模式。
比如:
c$,这将会删除从光标位置到行尾的字符并且进入插入模式。
ct!
,这会删除从光标位置到下一个叹号(但不包括),然后进入插入模式。
被删除的字符被存在了剪贴板里面,并且可以再粘贴出来。
∙d{motion}:
和上面差不多,但是不进入插入模式。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- vim 操作