vim的神级配置
vim的神级配置
不避风云 发表于4年前
vim的神级配置
  • 发表于 4年前
  • 阅读 7157
  • 收藏 47
  • 点赞 4
  • 评论 14

标题:腾讯云 新注册用户域名抢购1元起>>>   

摘要: 本文提供了一个解压缩稍作处理就可以使用的vim配置。加入了多行模式,自动更新tags等插件。对PHP语言加入了调试功能。

有传言:vim是编辑器之神,(xxx)是神之编辑器。意思就是说vim是编辑器中最好的,而一般的大神级别的人都是使用(xxx)这个编辑器。咱不是神人,就使用vim吧。该配置是从别处搞来的,并作了部分修改,在此向这么大一个群体表示感谢。

1. 下载

配置文件由于太大,只好在CSDN下载,下载链接在下方。最新版本压缩包下包含.vimrc文件和.vim文件夹。linux下,避免对原有配置造成,请先备份你~/下的.vimrc和.vim,把下载好的文件解压缩在~下即可,然后进入前期准备。

  1. 老版本(支持 win):http://download.csdn.net/detail/bubifengyun/6282979
  2. 第一次更新(仅测试了linux,下同):http://download.csdn.net/detail/bubifengyun/8825443
  3. 第二次更新(仅适合 PHP Yii2,下同):http://download.csdn.net/detail/bubifengyun/9646601
  4. 第三次更新(问题较多,不建议使用):http://download.csdn.net/detail/bubifengyun/9725198

2. 前期准备

需要已经安装vim软件及ctags,cscope插件了。如果没有安装,
Debian系请

sudo apt-get install vim exuberant-ctags cscope

Redhat系请

sudo yum install vim ctags cscope ctags-etags

如果提示需要安装其他软件,请自行安装并在下面留言,谢谢。如果没有其他问题,现在就可以使用了。

3. 部分操作示例

工作环境Deepin2014.3,vim7.4。设在目录~/sources下含有test1.c, test2.c, test3.c, test4.c等文件。

3.1 常用操作

常用操作最好的学习办法是找个vim的操作图作为桌面。

1. 跳转到sources文件夹。

cd ~/sources

2. 以标签栏的形式打开多个文件,弹出各个文件后,你可以像浏览器标签栏一样鼠标点击打开每个文件。 对于用 -p 打开的标签页,可以使用 gt,gT可以左切换右切换,也可以使用数字1,2,n,+gt.

例如你想切换到第5个标签页,就可以使用 5gt,意思是按下5,g,t键就可以了。  

vim -p test1.c test2.c test3.c

如果你还想继续打开其他文件,是你已经在vim文件了,可以使用下面的命令。

:tabnew test4.c

3. 打开目录栏和变量栏。
vim命令模式下,按F8键会在左侧出现当前文件所在的目录栏。目录栏最上方提示了怎么操作,这里不在赘述。如果想回到文件栏,可以直接鼠标点击文件栏,也可以使用Ctrl+h,j,k,l等实现在栏里左右上下跳转。
vim命令模式下,先后按tb两个键会弹出变量栏。与目录栏类似。

4. 对于编辑,可以使用u,ctrl+r分别为撤销和反撤销。但是需要注意这个都是小写的。有次不小心按了大写键,导致U键删除了不少东西。取消大写键才实现的撤销。

5. 自动缩进排版。
通常根据语言特征使用自动缩进排版:在命令状态下对当前行用== (连按=两次), 或对多行用n==(n是正整数)表示自动缩进从当前行起的下面n行。你可以试试把代码缩进任意打乱再用n==排版,相当于一般IDE里的code format。使用gg=G可对整篇代码进行排版。gg=G,该命令慎用。因为有些格式可能跟vim设置的不一致,所以最好只对部分行使用,避免不必要的格式不一致。

6. 折叠。
实现空格键折叠或打开相邻相同缩进的若干行代码,对于低层次的缩进会把高层次的缩进包含进去。类似目录那种形式。

7. 多行操作。
加入了https://github.com/terryma/vim-multiple-cursors的多行选择功能。下面说明多行选择的做法,翻译自该网址。比较关心的选择多个同样的单词,换成其他单词。以及在每行开头插入注释。更多说明,见上面的网址。
(7.1) 选择多个相同单词。插件默认的快捷键是Ctrl+n,在norml mode,选择要改变的一个单词,反复按Ctrl+n,就可以把他们都选择了。Ctrl+p向上取消选择,Ctrl+x放弃下一个。多选后,用c,s或者i,a等改变。ESC退出该模式。
(7.2) 多行加注释。原插件功能很强大,但是我只需要这个。鼠标选择多行,或者V进入视图模式选择。按Ctrl+n,加载多行插件,就可以相当于一行的模式了。

3.2 源码小项目的操作

由于配置加入了easytags插件,大项目中会严重降低vim的速度。如果该配置让你的vim变慢了,多半是easytags惹的祸,在~/.vim/bundle/文件夹下,移除vim-easytags和vim-misc两文件夹,并注释掉~/.vimrc文件里easytags的配置即可。

同上假设工作环境。

cd ~/sources
ctags ./
vim -p test*.c

本配置easytags会在本级目录和逐步查询上级目录中找tags,并在你保存的时候自动更新tags(异步更新,可能会延迟个几秒钟才可以使用跳转)。如果在项目根目录下保存了tags,相当于项目只有一个tags,很方便操作。如果需要其他样式,可以到easytags的网页上按需配置。现在就可以方便的按ctrl+],和ctrl+t来回跳转啦。如果多个tags被找到,可以自行选择。使用YII开发的时候,变量同名的太多,建议修改easytags的配置。这个没有更好的解决办法,如果哪位有,谢谢跟我联系 一下。

4. 常见的小问题

4.1 putty的问题

1. windows下的putty的目录栏有问题。双击图标一直打不开。解决方案是加入多字节支持。如下。

cd vim-7.3-src # 转移到源代码处,打算重新安装
./configure --enable-multibyte # 支持多字节,当然要支持中文。如果在中文环境下,这个应该不用设置了吧。
make && make install # 重新安装

如果需要加入对中文乱码的支持,可以修改.vimrc文件里的set fileencodings=gb2312,gb18030,utf-8。需要说明的是,gb18030是非常大的一个集合了,应该可以确保打开不乱码了。参考自:http://www.ltesting.net/html/71/n-128471.html

另外,putty 复制,在 windows 和 putty 相互复制。在设置里,window/Selection/Control use of Mouse/Action of mouse buttons,选择第一个Windows[...],这样就可以在windows 复制了,右击选择粘贴,就可以把代码复制过来。

2. putty 小键盘事件。输入小键盘的东西,常常乱搞一气。建议是putty->Terminal->Features->disable application keypad mode。就好了,这个是从别处扒来的,忘记网址了,谢谢先。
3. putty 死机事件。由于windows的习惯,保存用Ctrl+S,而Ctrl+S是linux下的锁屏快捷键,就悲剧了。还好按下Ctrl+Q就可以解锁了。参 考:http://www.leonzhang.com/2010/06/09/vim_hangu_by_ctrl_s/

4.2 vim跟外界的文本复制问题

1. windows向putty中vim复制文本。
从windows复制东西过来,输入putty,可能导致有些字符被当做操作符了,复制失败。可以试试在vim命令模式下输入:set paste,可粘贴就纯文本,不需要复制则:set nopaste。参考这里

2. Deepin下终端vim跟外界互相复制文本。
这个需要vim中(+粘贴板)的支持,只有安装gtk或者gnome版的vim才可以。

sudo apt-get install vim-gnome

(2.1) vim->外界。按V进入视图模式,或者之间用鼠标选中要复制的内容,按"+y(就是依次按下双引号,加号和y),就可以复制到系统粘贴板里,在其他地方使用。
(2.2) 外界->vim。在命令行模式下找到需要粘贴的地方,按"+p(就是依次按下双引号,加号和p),就可以了。从其他地方到vim复制比较方便,也可以直接在插入模式,Ctrl+Shift+V。参考这里

5. 关于配置更新

本配置插件的采用bundle管理,同时结合vundle管理插件。参考这里:http://www.cnblogs.com/xia520pi/archive/2014/04/11/3659386.html 一般都是在 ~/.vimrc 里加入

Bundle 'tpope/vim-fugitive'

Bundle 'Lokaltog/vim-easymotion' 

其中 引号斜杠前面的是作者名称,后面是插件名称。

Vundle分为三类:

  • 在Github vim-scripts 用户下的repos,只需要写出repos名称

  • 在Github其他用户下的repos, 需要写出"用户名/repos名"

  • 不在Github上的插件,需要写出git全路径

打开一个vim, 运行":BundleInstall"或者在命令行运行"vim +BundleInstall +qall",安装完成后插件就能用了。

其它常用命令:

  • 更新插件":BundleUpdate"

  • 清除不再使用的插件":BundleClean"

  • 列出所有插件":BundleList"

  • 查找插件":BundleSearch"

6. 对PHP调试的支持

这个需要根据这里配置其他软件。本文已经加入了DBGp,可以直接调试YII2等php框架的代码。

 

附录

其他可能比较好vim配置推荐。
https://github.com/amix/vimrc
http://haridas.in/vim-as-your-ide.html
http://sontek.net/blog/detail/turning-vim-into-a-modern-python-ide
http://blog.csdn.net/namecyf/article/details/7787479?reload

http://corner.squareup.com/2013/08/fly-vim-first-class.html,
还有配置bookmark的,http://code.google.com/p/name5566-vim-bookmark/

 

最终效果

编辑界面

调试PHP,yii2框架的界面

 

更多vim插件的说明

为了更好的利用插件,可能需要对vim的安装重新配置,下面将介绍如何改进自动补全的clang-complete跟neocomplete做介绍。(待续20150724)

 

标签: vim
共有 人打赏支持
粉丝 23
博文 87
码字总数 67116
评论 (14)
不避风云
http://www.cnblogs.com/ltang/articles/2034291.html
替换命令
不避风云
最近想加入自动在等号和运算符旁边加入空格的功能。搜集插件中。
http://www.vim.org/scripts/script.php?script_id=294
https://github.com/junegunn/vim-easy-align
http://www.vim.org/scripts/script.php?script_id=2324
不避风云
http://segmentfault.com/q/1010000002928700
计划加入clang-complete
这时libclang.so应该位于
/usr/lib/llvm-3.5/lib/libclang.so

然后添加clang_complete的配置到vim里

let g:clang_use_library = 1
let g:clang_library_path = '/usr/lib/llvm-3.5/lib/'

链接 1 评论 更多

0
fazero 10 6月25日 回答 · 6月25日 更新

楼下的办法补充之后就可以了。
下面这个方法v2ex的一位热心网友提供的也行,而且更加方便。
sudo ln -s /usr/lib/llvm-3.5/lib/libclang.so.1 /usr/lib/libclang.so
不避风云
http://www.cnblogs.com/pangchol/p/3472196.html
amita
https://github.com/easymotion/vim-easymotion
https://github.com/dyng/ctrlsf.vim
https://github.com/bramblex/BlxVimrc
不避风云
1. 使用vim的比较模式打开两个文件:
vim -d file1 file2

vimdiff file1 file2

2. 如果已经打开了文件file1,再打开另一个文件file2进行比较:
:vert diffsplit file2
如果没有用vert命令,diffsplit则会分上下两个窗口。

3. 如果已经用split方式打开了两个文件file1,file2,又想比较两文件的不同。
分别在两个窗口里面输入命令:
:diffthis

4. 如果更改了某个窗口的内容,vim又没有自动更新diff检查,可以使用如下命令更新:
:diffupdate

5. 定位到不同点:
[c 跳到前一个不同点
]c 跳到后一个不同点

6. 在窗口间跳转:
ctrl-w w 跳到下一个窗口
ctrl-w h 跳到左侧窗口
ctrl-w l 跳到右侧窗口
ctrl-w j 跳到下方的窗口
ctrl-w k 跳到上方的窗口

7. 合并文档:
dp 将差异点的当前文档内容应用到另一文档(diff put)
do 将差异点的另一文档的内容拷贝到当前文档(diff get)

8. 上下文的展开和查看
比较和合并文件的时候经常需要结合上下文来确定最终要采取的操作。Vimdiff 缺省是会把不同之处上下各 6 行的文本都显示出来以供参考。其他的相同的文本行被自动折叠。如果希望修改缺省的上下文行数为3行,可以这样设置:
:set diffopt=context:3
不避风云
上文来源:http://www.cnblogs.com/zhanglanyun/archive/2011/12/19/2293695.html
不避风云
为了方便 PHP 加入了 pdv, 和 phpcs phpmd
见 https://github.com/Rican7/php-doc-modded
和 http://www.koch.ro/blog/index.php?/archives/63-VIM-as-a-PHP-IDE.html
不避风云
最终决定选择这个版本 https://github.com/tobyS/pdv
不避风云
Grep的搜索方法,
Grep -i -R xxx –include=*.php /opt/lampp/xxx1 /opt/lampp/xx2
意思是
-i 是否忽略大小写 -i ignore 忽略的意思
-R 是否迭代搜索文件夹
--include=*.php 是只搜索特定后缀名称的文件
后面多个文件目录是要搜索的区域
不避风云
http://www.wklken.me/posts/2015/06/07/vim-plugin-closetag.html 加入 vim 对 PHP HTML 开发的自动补全以及 emmet
不避风云
https://github.com/alvan/vim-closetag 这个自动补全更好点。
不避风云
Usage

For example, below is the current content:

<table|

Now you press >, the content will be:

<table>|</table>

And now if you press > again, the content will be:

<table>
|
</table>
不避风云
加入了 suptertab 以及 snipmate 升级版,可以通过如下方式自动生成代码。比如编写 C 语言。输入 main 按下 <tab>键 就会自动生成一些东西。当然对于 PHP 是更好的了。在一个类里输入 pub 按下 <tab> 键,会立刻弹出你想要的内容框架。 对于 emmet 还可以生成很多数据,方便 HTML 语言的书写。在此不说了。
×
不避风云
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: