技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 发现 --> VIM常用小窍门收集

VIM常用小窍门收集

浏览:4148次  出处信息

vim应该是现在世界上最流行的编辑器,没有之一。就算你千般百般地不喜欢它,掌握它也成了一件必须的事情了。因为日后你如果做程序员,在非Win系列的服务器上搞开发,vim绝对是无法避免的。你日常能接触到的server,emacs可能没装,但是vi不可能没装,就这样。

特意开辟这个文章,用于收藏一些工作中常用的操作,主要有这么几个原则:

  1. 非常有用

  2. 不常用

  3. 每次用都想不起来应该怎么用

不知道大家是不是经常跟我一样有这种感受呢,我会把我遇到的这类操作,都详细写在这里。

简单的列编辑

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

  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. function test_php($a,$b,$c) {

  3.    return true;

  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给替换掉。

除此之外,还可以用ffs添加到配置文件来告诉Vim按照怎样的顺序来尝试适配。

比如我在Mac系统下,set ffs=mac,unix,dos,这样,一般情况下我打开任何系统过来的文件,都能按照正确的格式显示。

最好看的配色方案

常用Vim的人,经常会为了配色方案而纠结,仿佛每一种都不是特别好看。其实我也这么觉得的,我分析下来,原因可能是,为Vim贡献配色方案的,大都是西方人,他们的眼睛是蓝色的,感受到的对比度,饱和度,亮度,和东方人的黑眼睛看起来是不一样的。所以他们配出来的配色方案,我们东方人,怎么着都觉得不太好看。

当然,还是能找出来一些能够勉强一看的。我个人比较熟比较习惯的是自带的evening和desert,感觉多不错,而且对我用到的好几种语言,都有不错的表现。

最近,还发现了一套非常强大,经过精心设计的配色方案,叫solarized,在圈子里影响也很大,http://ethanschoonover.com/solarized 特此推荐给大家,因为,我觉得它配色还算是相当舒服的,对比略低,但是不影响美观。

编码相关Encoding

使用:set fileencoding可以显示文件的编码格式,简写形式是:set fenc,使用:set fenc=utf-8可以转换文件的编码格式为utf-8

使用:set encoding可以显示编辑器当前使用什么编码方案来展示文档,简写为enc,如果utf-8文档使用非utf-8显示,汉字会出现乱码,使用:set enc=utf-8可以将vim使用的编码方案切换的utf-8

Tab view

用一个vi编辑器,打开多个代码文件,vim从7.0版本开始,支持文件标签页,使用方法也非常简单,使用:tabnew filename来打开一个新文件,就会自动出现在新tab里面,并且在打开文件超过两个的时候,顶部出现标签控制行。


#在vim中,用新tab打开文件
:tabnew filename

#在命令行中,用标签页一次打开多个文件
$ -p filename1 filename2 filename3

#在vim中,各个标签页的切换
:tabn #下一个tab
或者 gt
:tabp #上一个tab
或者 gT

#搜索已经打开的tab
#tabf keyword



建议继续学习:

  1. vim几个小技巧(批量替换,列编辑)    (阅读:35683)
  2. 简明Vim练级攻略    (阅读:20507)
  3. Vim下的代码自动补全和代码跳转阅读    (阅读:14206)
  4. 为什么要用 Emacs/Vim,而不是任何其他编辑器    (阅读:12008)
  5. 在vim(gvim)中运行终端(对,你没有看错,我也没有写反)    (阅读:9272)
  6. vim入门,进阶与折腾    (阅读:9013)
  7. 让vim在终端下的配色亮起来!    (阅读:8512)
  8. 最近总结的一些技巧(vim,python,svn,fiddler等)    (阅读:6912)
  9. vim的复制粘贴小结    (阅读:6379)
  10. Vim 中截取部分内容保存到其他文件    (阅读:6262)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1