【Linux】vim的超级好用的功能

掘根 2024-07-26 09:37:03 阅读 84

1.可视区块(Visual Block)

刚刚我们提到简单的vi操作过程中,几乎提到的都是以行为单位的操作,那么如果我想要搞定的是一个区块(也就是以列为操作单位)范围呢?

我们举个例子

假设我想要将host1、host2...这一列等复制起来,并且加到每一行的后面,

这样的情况时,在传统或现代的图形编辑器似乎不容易达到这个需求,但是咱们的vim 是办的到的,那就使用可视区块(Visual Block )。

当我们按下v或V或[Ctr]+v时,这个时候光标移动过的地方就会开始反白,这三个按键的意义分别是:

可视区块的按键意义

v 可视区块的按键意义字符选择,会将光标经过的地方反白选择
V 行选择,会将光标经过的行反白选择
[Ctrl]+v 可视区块,可以用矩形的方式选择数据
y 将反白的地方复制起来
d 将反白的地方删除掉
p 将刚刚复制的区块,在光标所在处粘贴

 我们看看v的效果

我们看看V的效果 

我们看看[ctrl]+v的效果

来实际进行我们需要的操作吧!就是将host 再加到每一行的最后面,你可以这样做:

1.使用vim来打开该文件,记得该文件请由上述的链接先下载。

2.将光标移动到第一行的host那个h上面,然后按下[ctrl]-v,左下角出现可视块示意字样如图所示。

3.将光标移动到最底部,此时光标移动过的区域会反白,如图所示。

4.此时你可以按下【y】来进行复制,当你按下y之后,反白的区块就会消失不见。

5.最后,将光标移动到第一行的最右边,并且再用编辑模式向右按两个空格键,回到一般命令模式后,再按下【p】后,你会发现很有趣,如图所示。

通过上述的功能,你可以复制一个区块,并且是贴在某个【区块的范围】内,而不是以行为单位来处理你的整份文件

个人是觉得这玩意儿非常的有帮助,至少在进行排列整齐的文本文件中复制或删除区块时,会是一个非常棒的功能。

2.多文件编辑

假设一个例子,你想要将刚刚我们的文件内的IP复制到你的/etc/hosts这个文件去,那么该如何编辑?

我们知道在vi内可以使用:r filename来读入某个文件的内容,不过,这样毕竟是将整个文件读入。如果我只是想要部分内容?

呵呵,这个时候多文件同时编辑就很有用了,我们可以使用vim后面同时接好几个文件来同时打开,相关的按键有:

文件编辑的按键

:n 编辑下一个文件
:N 编辑上一个文件
:files 列出目前这个vim开启的所有文件

        在过去,想要将 A文件内的10条数据移动到B文件去,通常要开两个vim窗口来复制,偏偏每个vim都是独立的,因此并没有办法在A文件执行【nyy】再跑到B文件去【p】,在这种情况下最常用的方法就是通过鼠标选定,复制后粘贴。

        不过这样一来还是有问题,因为有的人超级喜欢使用[Tab]按键进行格式对齐操作,通过鼠标却会将[Tab]转成空格键,这样内容就不一样了,此时这个多文件编辑就派上用场了。

        现在你可以做一下练习看看说,假设你要将刚刚提供的文件内的前四行IP数据复制到你的/etc/hosts文件内,那可以怎么进行?可以这样:

1.通过【 vim hosts /etc/hosts】命令来使用一个vim打开两个文件;

2.在vim中先使用【:files】查看一下编辑的文件数据有啥?

结果如图所示,至于下图的最后一行显示的是【按下任意键】就会回到vim的一般命令模式中。

3.在第一行输入【4yy】复制四行;

4.在vim的环境下输入【:n】会来到第二个编辑的文件,亦即/etc/hosts内;

5.在/etc/hosts下按【G】到最后一行,再输入【p】粘贴;

6.按下多次的【u】来还原原本的文件数据;

7.最终按下【:q】来退出vim的多文件编辑吧!

看到了么?

利用多文件编辑的功能,可以让你很快速地就将需要的数据复制到正确的文件内,当然,这个功能也可以利用窗口界面来达到,那就是下面要提到的多窗口功能。

3.多窗口功能

在开始这个小节前,先来想象两个情况:

当我有一个文件非常的大,我查看到后面的数据时,想要对照前面的数据,是否需要使用[ctrl]+f与[ctr]+b(或PageUp、PageDown功能键)来跑前跑后查看?我有两个需要对照着看的文件,不想使用前一小节提到的多文件编辑功能;

在一般窗口界面下的编辑软件大多有【划分窗口】或是【冻结窗口】的功能来将一个文件划分成多个窗口的展现,那么vim 能不能达到这个功能?

可以,但是如何划分窗口并放入文件?

很简单,在命令行模式输入【:sp {filename}】即可。

这个filename可有可无,如果想要在新窗口启动另一个文件,就加入文件名,否则仅输入:sp时,出现的则是同一个文件在两个窗口间。

        让我们来测试一下,你先使用【vim /etc/man_db.conf】打开这个文件,然后【1G】去到第一行,之后输入【:sp】再次的打开这个文件一次,然后再输入【G】,结果会变成下图。

万一你再输入【:sp/etc/hosts】时,就会变成下图。

怎么样呢?帅吧!

两个文件同时在一个屏幕上面显示,你还可以利用“【ctrl】+w+【Page up】"及“[ctrl]+w+【Page down】”在两个窗口之间移动。这样的话,复制、查看等就变得很简单,划分窗口的相关命令功能有很多,不过你只要记得这几个就好:

多窗口情况下的按键功能

:sp [filename] 打开一个新窗口,如果有加filename,表示在新窗口创建一个新文件,否则表示两个窗口为同一个文件内容(同步显示)

[ctrl]+w+j

[ctrl]+w+[Page down]

按键的按法是:先按下[ctrl]不放,再按下w后放开所有的按键,之后再按下)(或向下箭头键),则光标可移动到下方的窗口

[ctrl]+w+k

[ctrl]+w+[Page up]

同上,不过光标移动到上面的窗口

[ctrl]+w+q

其实就是:q结束退出,举例来说,如果我想要结束下方的窗口,那么利用[ctri]+w+↓移动到下方窗口后,输入:q即可退出,也可以按下[ctrl]+w+q,此外也可是输入:close关闭所在的窗口

第一次玩vim的划分窗口时,真是很高兴,竟然有这种功能,太棒了。

4.vim的关键词补全功能

        我们知道 bash的环境下面可以按下[tab]按键来完成命令、参数、文件名的补全,而我们也知道很多的程序编辑器,例如notepad++这种类型的程序编辑器,都会有

(1)可以进行语法检验及(2)可以根据扩展名来进行关键词补全的功能。

这两个功能对于程序设计者来说是很有帮助的,毕竟偶尔某些特定的关键词老是背不起来。

        在语法检验方面,vim 已经使用颜色来完成了,这部分不用伤脑筋。比较伤脑筋的应该是在关键字补全上面,就是上面谈到的可以根据语法来挑选可能的关键词,包括程序语言的语法以及特定的语法关键词等。既然notepad++都有支持,没道理vim不支持吧?

呵呵,没错,是有支持的,只是你可能要多背两个组合键。

鸟哥建议可以记忆的主要vim补齐功能,大致有下面几个:

组合键 补齐的内容
[ctrl]+x -> [ctrl]+n 通过目前正在编辑的这个【文件的内容文字】作为关键词,予以补齐
[ctrl]+x-> [ctrl]+f 以当前目录内的【文件名】作为关键词,予以补齐
[ctrl]+x -> [ctrl]+o 以扩展名作为语法补充,以vim内置的关键词,予以补齐

        比较有用的是第1与3这两个组合键,第一个组合按键中,你可能会在同一个文件里面重复出现许多相同的关键词,那么就能够通过这个补全的功能来处理。

        如果你是想要使用vim内置的语法检验功能来处理取得关键词的补全,那么第三个选项就很有用。不过要注意,如果你想要使用第三个功能,就得要注意你编辑的文件的扩展名,

        最常用的补全方式应该是CTRL-N和CTRL-P补全了。它们会在当前缓冲区、其它缓冲区,以及当前文件所包含的头文件中查找以光标前关键字开始的单词。智能补全不能对局部变量进行补全,而CTRL-N和CTRL-P补全则可以很好的胜任。

下面是一个使用CTRL-N补全的例子,输出字符”pr”,然后按CTRL-N,vim会在下拉菜单中列出所有的匹配功能供选择,此时再按一下CTRL-N,就选中了第一个项目,也就是我想输入的”printf”。我们第一次输入CTRL-N的是进行补全,第二次输入的CTRL-N是在下拉菜单中向下选择,二者的含义是不同的。

我们按CTRL+n

 我们再按CTRL+n

 

        下图是采用CTRL-P补全的一个例子,输出字符”pa”,然后按CTRL-Pvim会在下拉菜单中列出所有的匹配功能供选择,此时再按一下CTRL-P,就选中了第一个项目,也就是我想输入的”parmp”。我们第一次输入CTRL-P的是进行补全,第二次输入的CTRL-P是在下拉菜单中向上选择,二者的含义是不同的。

我们按ctrl+p

我们再按ctrl+p

我们知道,CTRL-P一般的含义是向上,因此CTRL-P补全是向上查找以进行补全,而CTRL-N是向下查找以进行补全,在不同场合使用不同的快捷键可以加速补全的速度。

5.vim 环境记录:~/.viminfo

        有没有发现,如果我们以vim软件来查找一个文件内部的某个字符串时,这个字符串会被反白,而下次我们再次以vim编辑这个文件时,该查找的字符串反白情况还是存在。甚至于在编辑其他文件时,如累其他文件内也存在这个字符串,哇,竟然还是主动反白,真神奇。

        另外,当我们重复编辑同一个文件时当第二次进入该文件时,光标竟然就在上次退出的那一行上面。真是好方便,但是,怎么会这样呢?

        这是因为我们的vim会主动地将你曾经做过的操作记录下来,好让你下次可以轻松地作业,这个记录操作的文件就是:~/.viminfo。

        如果你曾经使用过vim,那你的根目录应该会存在这个文件才对。这个文件是自动产生的,你不必自行建立。而你在vim里面所做过的操作,就可以在这个文件内部查询得到。

 



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。