您的位置:首页 > 其它

VIM的几个使用技巧

2013-02-24 01:02 399 查看


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


简单的列编辑

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

#fastcgi.conf

fastcgi_param GATEWAY_INTERFACE CGI/1.1;

fastcgi_param SERVER_SOFTWARE nginx;

fastcgi_param QUERY_STRING $query_string;

fastcgi_param REQUEST_METHOD $request_method;

fastcgi_param CONTENT_TYPE $content_type;

fastcgi_param CONTENT_LENGTH $content_length;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

fastcgi_param SCRIPT_NAME $fastcgi_script_name;

fastcgi_param REQUEST_URI $request_uri;

fastcgi_param DOCUMENT_URI $document_uri;

fastcgi_param DOCUMENT_ROOT $document_root;

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

:2,12s/^/#/g

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

还有一种写法:

:s/^/#/g 11

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


删除的时候使用f和t

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

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

<?php

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

returntrue;

}

在这个代码里,你想删掉第一个参数,可以把光标放在(后面的第一个$上,然后按”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的格式转换也很容易!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: