天天看点

『学了就忘』vim编辑器基础 — 96、末行模式中的相关命令

目录

1、在文档中显示行号

2、是否显示文档内容相关颜色

3、是否将查找的字符串高亮显示

4、是否显示右下角的状态栏

5、是否在左下角显示如"--INSERT--"之类的状态栏

6、是否显示隐藏字符

7、vim支持更多的设置参数

8、vim编辑器配置文件

9、查找

10、替换

<code>vim</code>编辑器中常用的末行模式命令。

<code>: set nu</code>:显示行号。

<code>: set nonu</code>:取消行号。

一旦退出文档,再打开行号就没有了。(文章最后第8点,有解决。)

<code>: syntax on</code>:显示颜色。

<code>: syntax off</code>:关闭颜色。

说明: 是否依据语法显示相关的颜色帮助。在<code>vim</code>中修改相关的配置文件或Shell脚本文件时(如前面示例的脚本<code>/etc/init.d/sshad</code>),默认会显示相应的颜色,用来帮助排错。如果觉得颜色产生了干扰,则可以取消此设置。

设置是否将查找的字符串高亮显示。默认是<code>set hlsearch</code>高亮显示。

<code>: set hisearch</code>:高亮显示。

<code>: set nohlsearch</code>:不高亮显示。

注意: 当你在命令模式的时候,输入<code>/</code>进入末行模式搜索关键字的时候,如果搜索到匹配的内容,关键字会自动高亮显示。你关闭文件,再进入文件后,之前被搜索的关键字依旧被高亮显示。你再打开其他的文件,如果该文件也有之前搜索的关键字,依然会被高亮显示。 我们可以用<code>: set nohlsearch</code>取消高亮,在<code>set hisearch</code>开启来解决一直高亮的问题。但是我们一般不这样用,我们通常输入<code>/</code>进入末行模式,胡乱打一个确保没有的关键字,这样高亮的信息就关闭了。

设置是否显示右下角的状态栏。默认是<code>set ruler</code>显示。

如下图所示:

<code>: set ruler</code>:显示。

<code>: set noruler</code>:不显示。

提示:<code>14,8</code>表示,光标在当前文档的第14行,第8个字符上。

设置是否在左下角显示如<code>--INSERT--</code>之类的状态栏。默认是<code>set showmode</code>显示。

<code>: set showmode</code>:开启显示。

<code>: set noshowmode</code>:关闭显示。

一般都开始显示。

设置是否显示隐藏字符(Tab键用<code>^I</code>表示,回车符用<code>$</code>表示)。

默认是<code>nolist</code>。如果使用<code>set list</code>显示隐藏字符,类似<code>cat -A 文件名</code>。

<code>: set list</code>:显示隐藏字符。

<code>: set nolist</code>:不显示隐藏字符。

补充: Windows系统下的回车符在Linux系统中是用<code>^M$</code>符号显示,而不是用Linux系统的回车符<code>$</code>显示。这样会导致Windows系统下编辑的程序脚本,无法在Linux系统中执行。这时可以通过命令<code>dos2unix</code>,把Windows格式转为Linux格式,当然反过来<code>unix2dos</code>命令就是把Linux格式转为Windows格式。这两个命令默认没有安装,需要手工安装才能使用。
提示: 如果文档是在Windows系统中编辑的,在Linux系统中用<code>vim</code>编辑器打开,<code>vim</code>编辑器会自动把回车符这样的隐藏符号转换过来。

可以通过<code>:set all</code>进行查看。

大家会发现,这些设置参数都只是临时生效,一旦关闭文件再打开,又需要重新输入。如果想要永久生效,需要手工建立<code>vim</code>的配置文件<code>~/.vimrc</code>(在家目录下创建一个<code>.vimrc</code>文件,既然在家目录,说明只对用户个人有用),把你需要的参数写入配置文件就永久生效了。

执行如下命令:<code>[root@localhost ~]# vim .vimrc</code>

然后在文件内输入:

保存即可,之后在打开任何文件,都自动生效。

<code>/查找内容</code>:从光标所在行向下查找。

<code>?查找内容</code>:从光标所在行向上搜索。

<code>n</code>:下一个。

<code>N</code>:上一个。

<code>:1,10s/old/new/g</code>:替换1到10行的所有<code>old</code>为<code>new</code>。

注:

<code>1,10s</code>表示第一行到第十行,<code>s</code>代表替换。

<code>/old/new</code>表示把<code>old</code>换成<code>new</code>。

<code>g</code>表示范围内替换所有。(如果不加<code>g</code>,只会替换范围内第一个<code>old</code>)

<code>:%s/old/new/g</code>:替换整个文件的<code>old</code>为<code>new</code>。

<code>%</code>表示范围是整篇文档。

替换字符串,举几个例子:

在shell中<code>#</code>开头是注释,那我是否可以注释文件的前10行呢?手工一个一个注释很麻烦,如何进行批量替换。

<code>:1,10s/^/#/g</code>:注释1到10行。

提示:<code>^</code>正则表达式表示行首,把行首变成<code>#</code>。

<code>:1,10s/^#//g</code>:取消注释。

提示:<code>^#</code>意思是把行首的#去掉。正则表达式是包含匹配,如果只写<code>#</code>,表示1到10行所有的<code>#</code>都去掉。

在C语言,PHP语言等大多数语言中,是使用<code>//</code>开头作为注释的,用<code>vim</code>来写这些程序语言脚本,如何批量加入<code>//</code>注释。

<code>:1,10s/^/\/\//g</code>:1到10行,行首加入<code>//</code>。

提示:把行首<code>^</code>替换成<code>\/\/</code>(双斜杠 <code>//</code>),<code>\</code>符号在命令行中代表换行,<code>\</code>符号在字符串中代表转义符。(转义符就是把有特殊含义的字符转换成普通的字符串符号。)

<code>:1,10s/^\/\///g</code>:取消1到10行行首的<code>//</code>。

提示:绝大多数的替换都用最上边的两种替换,下边的两个例子比较特殊,以后用到照着写就好。