Vim有什么奇技淫巧

更新时间:02-10 教程 由 悦缘 分享

这是我自己csdn博客上的整理,拿出来给大家分享一下。

一、大范围的移动:

*当光标停留在一个单词上,*键会在文件内搜索该单词,并跳转到下一处;

当光标停留在一个单词上,#在文件内搜索该单词,并跳转到上一处;

(/)移动到前/后句的开始;

{/}跳转到当前/下一个段落的开始。

g_到本行最后一个不是blank字符的位置。

fa到下一个为a的字符处,你也可以fs到下一个为s的字符。

t,到逗号前的第一个字符。逗号可以变成其它字符。

3fa在当前行查找第三个出现的a。

F/T和f和t一样,只不过是相反方向;

gg将光标定位到文件第一行起始位置;

G将光标定位到文件最后一行起始位置;

NG或Ngg将光标定位到第N行的起始位置。

在屏幕中找到需要的一页时,可以用下面的命令快速移动光标:

H将光标移到屏幕上的起始行(或最上行);

M将光标移到屏幕中间;

L将光标移到屏幕最后一行。

同样需要注意字母的大小写。H和L命令还可以加数字。如2H表示将光标移到屏幕的第2行,3L表示将光标移到屏幕的倒数第3行。

当将光标移到所要的行是,行内移动光标可以用下面的命令来实现:

w右移光标到下一个字的开头;

e右移光标到一个字的末尾;

b左移光标到前一个字的开头;

0数字0,左移光标到本行的开始;

$右移光标,到本行的末尾;

^移动光标,到本行的第一个非空字符。

二、搜索匹配

和许多先进的编辑器一样,Vim提供了强大的字符串搜索功能。要查找文件中指定字或短语出现的位置,可以用Vim直接进行搜索,而不必以手工方式进行。搜索方法是:键入字符/,后面跟以要搜索的字符串,然后按回车键。编辑程序执行正向搜索(即朝文件末尾方向),并在找到指定字符串后,将光标停到该字符串的开头;键入n命令可以继续执行搜索,找出这一字符串下次出现的位置。用字符?取代/,可以实现反向搜索(朝文件开头方向)。例如:

/str1正向搜索字符串str1;

n继续搜索,找出str1字符串下次出现的位置;

N继续搜索,找出str1字符串上一次出现的位置;

?str2反向搜索字符串str2。

三、替换和删除

Vim常规的删除命令是d、x(前者删除行,后者删除字符),结合Vim的其他特性可以实现基础的删除功能。将光标定位于文件内指定位置后,可以用其他字符来替换光标所指向的字符,或从当前光标位置删除一个或多个字符或一行、多行。例如:

rc用c替换光标所指向的当前字符;

nrc用c替换光标所指向的前n个字符;

5rA用A替换光标所指向的前5个字符;

x删除光标所指向的当前字符;

nx删除光标所指向的前n个字符;

3x删除光标所指向的前3个字符;

dw删除光标右侧的字;

ndw删除光标右侧的n个字;

3dw删除光标右侧的3个字;

db删除光标左侧的字;

ndb删除光标左侧的n个字;

5db删除光标左侧的5个字;

dd删除光标所在行,并去除空隙;

ndd删除(剪切)n行内容,并去除空隙;

3dd删除(剪切)3行内容,并去除空隙;

其他常用的删除命令有:

d$从当前光标起删除字符直到行的结束;

d0从当前光标起删除字符直到行的开始;

J删除本行的回车符(CR),并和下一行合并。

四、字符串搜索

在编辑模式讲过字符串的搜索,此处的命令模式也可以进行字符串搜索,给出一个字符串,可以通过搜索该字符串到达指定行。如果希望进行正向搜索,将待搜索的字符串置于两个/之间;如果希望反向搜索,则将字符串放在两个?之间。例如:

:/str/正向搜索,将光标移到下一个包含字符串str的行

:?str?反向搜索,将光标移到上一个包含字符串str的行

:/str/wfile正向搜索,并将第一个包含字符串str的行写入file文件

:/str1/,/str2/wfile正向搜索,并将包含字符串str1的行至包含字符串str2的行写

五、正文替换

利用:s命令可以实现字符串的替换。具体的用法包括:

:%s/str1/str2/用字符串str2替换行中首次出现的字符串str1

:s/str1/str2/g用字符串str2替换行中所有出现的字符串str1

:.,$s/str1/str2/g用字符串str2替换正文当前行到末尾所有出现的字符串str1

:1,$s/str1/str2/g用字符串str2替换正文中所有出现的字符串str1

:g/str1/s//str2/g功能同上

:m,ns/str1/str2/g将从m行到n行的str1替换成str2

六、分屏

普通的Vim模式,打开一个Vim程序只能查看一个文件,如果想同时查看多个文件,就需要用到Vim分屏与标签页功能。

Vim的分屏,主要有两种方式:上下分屏(水平分屏)和左右分屏(垂直分屏),在命令模式分别敲入以下命令即可:

:split(可用缩写:sp)上下分屏;

:vsplit(可用缩写:vsp)左右分屏。

另外,也可以在终端里启动vim时就开启分屏操作:

vim-Onfile1file2...打开file1和file2,垂直分屏

vim-onfile1file2...打开file1和file2,水平分屏

理论上,一个Vim窗口,可以分为多个Vim屏幕,切换屏幕需要用键盘快捷键,命令分别有:

Ctrl+w+h切换到当前分屏的左边一屏;

Ctrl+w+l切换到当前分屏的右边一屏;

Ctrl+w+j切换到当前分屏的下方一屏;

Ctrl+w+k切换到当前分屏的上方一屏。

即键盘上的h,j,k,l四个Vim专用方向键,配合Ctrl键和w键(window的缩写),就能跳转到目标分屏。另外,也可以直接按Ctrl+w+w来跳转分屏,不过跳转方向则是在当前Vim窗口所有分屏中,按照逆时针方向跳转。

下面是改变尺寸的一些操作,主要是高度,对于宽度你可以使用[Ctrl+W<]或是[Ctrl+W>],但这可能需要最新的版本才支持。

Ctrl+W=让所有的屏都有一样的高度;

Ctrl+W+增加高度;

Ctrl+W-减少高度。

七、标签页

Vim的标签(Tab)页,类似浏览器的标签页,一个标签页打开一个Vim的窗口,一个Vim的窗口可以支持N个分屏。

在Vim中新建一个标签的命令是:

:tabnew

如果要在新建标签页的同时打开一个文件,则可以在命令后面直接附带文件路径:

:tabnewfilename

Vim中的每个标签页有一个唯一的数字序号,第一个标签页的序号是0,从左向右依次加一。关于标签页有一系列操作命令,简介如下:

:tN[ext]跳转到上一个匹配的标签

:tabN[ext]跳到上一个标签页

:tabc[lose]关闭当前标签页

:tabdo为每个标签页执行命令

:tabe[dit]在新标签页里编辑文件

:tabf[ind]寻找'path'里的文件,在新标签页里编辑之

:tabfir[st]转到第一个标签页

:tabl[ast]转到最后一个标签页

:tabm[ove]N把标签页移到序号为N位置

:tabnew[filename]在新标签页里编辑文件

:tabn[ext]转到下一个标签页

:tabo[nly]关闭所有除了当前标签页以外的所有标签页

:tabp[revious]转到前一个标签页

:tabr[ewind]转到第一个标签页

声明:关于《Vim有什么奇技淫巧》以上内容仅供参考,若您的权利被侵害,请联系13825271@qq.com
本文网址:http://www.25820.com/tutorial/14_2167392.html