vi实用命令

来源:互联网 发布:java删除绝对路径文件 编辑:程序博客网 时间:2024/05/17 04:30

VI命令太多,插件无数,不过对于日常基本的文本操作,掌握基本命令足以,这里列出一些我平时用的比较多的命令:

1. 光标移动相关命令:

l         0:移到行首;

l         $:移到行尾;

l         n:跳到相对当前行的后n行;

l         :n:跳到第n行,注意是在命令模式输入n”,前面的是只输入n

l         nG:跳到第n行,注意:G大写

l         gg:文件开头

l         shift+g: 文件结尾

l         %跳到匹配的括号;

l         ctrl+o后退;

l         ctrl+i前进;

l         ctrl+t taglist中用于标签跳转

l         gd:跳转到变量定义的地方

l         m+一个字母可以设定一个标签,然后`+设定标签的字母就跳到相应的标签处

l         f+一个字符,跳转到当前行当前光标后面第一次出现这个字符的位置;

l         ctrl+b向后翻页;

l         ctrl+f向前翻页;

l         ctrl+]跳转到当前符号的定义处(需要有tag文件)

 

2.       编辑相关命令:

插入:

l         i(I)i,光标前插入;I:行首插入;

l         a(A):a光标后插入;A:行尾插入;

l         o(O):o:行上插入新行;O:行下插入新行;

删除:d

l         dd:删除当前行;

l         dnd:删除包含当前行在内的之后n行;

l         d+G:删除当前行至最后行所有内容;

复制:y

l         yy:复制当前行;

l         yny:复制包含当前行在内的之后n行;

粘贴:

l         p

撤销:

l         u(U):u,撤销上一个操作;U,撤销当前行所有操作

重复:

l         ctr + r

重复上一个命令:

l         .(句点号)

 

3.保存退出:

l         w:随时保存

l         x:如果改变了文件那么保持并且退出;如果文件没有被改变则直接退出;

l         ctrl+z: 如果改变了文件那么放弃修改直接退出;如果文件没有被改变则直接退出;

 

4. 搜索相关:

l         向前搜索:?

l         向后搜索:/

l         下一个匹配:n,对于向前搜索,光标向前移动;对于向后搜索,光标向后移动;

l         上一个匹配:N 查找上一个出现的string

小技巧hlsearchnohlsearch开关会设置是否允许高亮搜到的字符串;默认输入搜索字符串回车后vi会将搜索到的所有字符串高亮,如果要取消高亮,一个比较简单的方法是随便重新搜索一个不存在的字符串即可。

l         shift+8,向后搜索当前光标指向的单词

l         shift+3,向前搜索当前光标指向的单词

 

5.替换:(执行后进入编辑模式)

l         %s/old string/new string/g     这个指令是于在整个文件中替换特定字符串  

l         c:相当于删除命令d加插入命令i的结合;如果要删除并且修改,那么可以直接用c命令比较方便,而不用d命令先删除后插入;和命令d类似,cc删除当前行并插入,cnc删除包含当前行在内的之后n行并插入;还可以和0,$,w,e等结合操作;

l         r(R):r,替换一个字符后自动转换命令模式;R进入替换编辑模式,一直到按ESC才能重新返回命令模式;

 

6.选择: 

l         CTRL-v:列选择模式,或者叫做可视块选择。

选择后可以用x删除,或者按I进入插入模式,插入后按ESC所有列都插入了相同的内容;

可以用这个功能进行多行缩进,选择多行首字母,然后一起插入空格进行缩进;

 

l         Shift-v:行选择模式,进入行选择模式后可以用kj键上下移动进行选择,

选择后可以用d进行删除,或者用y进行复制;<左缩进,>右缩进;

 

7. 综上:

编辑和替换命令都会从命令模式进入编辑模式;

删除命令d,复制命令y,替换命令c可以搭配0$we进行操作。

0代表行首,

$代表行尾,

w代表当前光标至后面的空白部分(包括空白)

e代表当前光标到第一个非空白部分之间的内容;

例如:d$表示删除光标至行首部分,y0表示复制光标至行首部分,cw会删除当前光标之后直到第一个空格,并且进入编辑模式;

 

删除命令d,复制命令y,替换命令c可以搭配 we以及行或者字数进行操作,格式:*n?(*代表dy或者c操作,n代表包含当前行在内的后n行,?代表e或者w)例如:d2w,删除当前光标至后面的两个单词;y2e,复制当前光标至后面两个单词包括空格在内;dnd,yny,删除或者复制当前行在内的n行;

 

8.杂项命令

l         大小写转换键:~

l         ctrl+g:显示当前编辑的文件相关信息;

l         ctrl+p,ctrl+n:根据上下文自动完成;

l         显示行号:set nu(set nonu)

l         自动换行:set wrap(set nowrap)

l         zo:打开当前行折叠

l         zc或者空格:关闭当前行折叠

 

l         打开多个文件后的切换:

:b filename或者

:b 文件编号

进行文件切换(后不一定加文件全名,只要能保证唯一性,如:
:b te*)

l         :ls 查看缓存中的文件

l         有时候为了方便可以把vi分为两个窗口:

:sp 或者:split

l         分开窗口后如何切换窗口呢:

ctrl+w,然后j,k上下切换窗口;

l         :e 编辑新文件,如:

:e test.rst

 

原创粉丝点击