VIM的几个使用技巧

相关链接:http://blogread.cn/it/article/6050?f=wb

简单的列编辑

比如:将配置文件中的指定列前面加上注释符号

  1. #fastcgi.conf

  2. fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;

  3. fastcgi_param  SERVER_SOFTWARE    nginx;

  4. fastcgi_param  QUERY_STRING       $query_string;

  5. fastcgi_param  REQUEST_METHOD     $request_method;

  6. fastcgi_param  CONTENT_TYPE       $content_type;

  7. fastcgi_param  CONTENT_LENGTH     $content_length;

  8. fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;

  9. fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;

  10. fastcgi_param  REQUEST_URI        $request_uri;

  11. fastcgi_param  DOCUMENT_URI       $document_uri;

  12. fastcgi_param  DOCUMENT_ROOT      $document_root;

如上代码是一个很常见的配置文件,我现在要给第2-12行前面都加上一个#号,注释掉他们,在EmEditor里面这个事情无敌简单的,但是到了vi里面,你是不是总也想不起来应该怎么弄?

  1. :2,12s/^/#/g

解释一下,【2,12】在vi中叫range,看帮助的时候,如果看到range,这就是一种写法,表明第2行到12行。
还有一种写法:

  1. :s/^/#/g 11

将光标移动到第二行,然后执行上面的命令,后面的【11】代表,执行这个命令,重复11次。这里一直没解释里面那个至关重要的乱码串,那个就是替换的命令了。下次再说。

删除的时候使用f和t

删除是vim里面非常常用的功能,一个一个字幕删除,用x,可以代替del用。整行删除,dd,应该都会了。删除一个单词,用dw。这些都是简单提一下,我主要想两个很好用的功能,就是f和t。

f的本意是行查找,fa,就是从光标当前位置开始,在本行中,找到第一个字母a,和d结合起来以后,就非常方便了,比如:

  1. <?php

  2. functiontest_php($a,$b,$c){

  3.    returntrue;

  4. }

在这个代码里,你想删掉第一个参数,可以把光标放在(后面的第一个$上,然后按”df,”,就可以把$a连同后面的逗号都删掉,非常方便。当然了,你可以发挥一下,”d2f,”这个按键序列就是把$a和$b都删掉了,但是呢,用数字这种东西,在实际操作中,我感觉大脑经常反应不过来,需要思考,不实用。

在来说一下t,t这个东西,跟f非常像,区别就是t把找光标放到找到的那个字符前面一个位子,比如上面那个例子,我把光标放在第一个$上,然后按下”dt)”这个序列,可以把函数的3个参数都删掉,但是却不会删掉括号,非常舒服,在括号里删东西,我经常用这个功能。

惹人烦恼的^M

久用Vim的人,可能会遇到这样的情况,打开一个从别的环境拷贝过来的文件,发现每一行的末尾都有一个^M,非常恼人。

这个问题产生的原因,是因为三种系统的换行符定义不一样造成的。在Dos系统下,行结束符为\r\n,在linux下,行结束符为\n,在Mac下,行结束符为\r,当一个文件在一个系统上编辑,然后拷贝到另一个系统打开的时候,就会出现^M,事实上,还会出现别的恼人情况,比如一打开,发现没有任何断行,这在理论上完全可行,但是估计在Google搜索,这会是另一个问题,其实都是同一个起因。

Vim下面有两个变量fileformat和fileformats,简写为ff和ffs。当你发现文件没有断行或者有^M的时候,你有几种选择。

在Linux上,看到^M可以执行dos2unix,然后将Windows文件的\r\n转换成\n,然后发现^M消失了。

还可以,:set ff=win,让linux下的Vim按照Windows格式来解析文件。当然也可以查找替换把^M给替换掉。

如果出现错误提示:

bad interpreter: No such file or directory: /bin/sh

错误分析:

因为操作系统是windows,在windows下编辑的脚本,所以有可能有不可见字符。

解决办法:

首先要确保文件有可执行权限
#chmod a+x filename

然后修改文件格式
#vi filename

利用如下命令查看文件格式
    :set ff   或 :set fileformat

可以看到如下信息
    fileformat=dos 或 fileformat=unix

利用如下命令修改文件格式
    :set ff=unix 或 :set fileformat=unix

    :wq (存盘退出)

最后再执行文件
#./filename


使用UE的格式转换也很容易!


你可能感兴趣的:(VIM的几个使用技巧)