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

1. 下载

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

2. 前期准备

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

Debian系请

sudo apt-get install vim exuberant-ctags cscope

Redhat系请

sudo yum install vim ctags cscope ctags-etags

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

参考这里,加入了对 python3 和 perl 的支持。

# cd /opt

# git clone https://github.com/vim/vim.git

# cd vim

# ./configure --with-features=huge \

--enable-multibyte \

--enable-rubyinterp=yes \

--enable-python3interp=yes \

--enable-perlinterp=yes

# make install

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 '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框架的代码。

附录

最终效果

编辑界面

调试PHP,yii2框架的界面

更多vim插件的说明

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

linux vi刷新页面,vim的神级配置 - bubifengyun的个人页面 - OSCHINA - 中文开源技术交流社区...相关推荐

  1. linux如何敲打中文,vim敲字如弹琴 - linux-tao的个人空间 - OSCHINA - 中文开源技术交流社区...

    导读 本篇文章主要讲解vim的常用命令,当你在妹子面前像弹琴一样的敲代码完成给她的惊喜的时候,萌妹子会不会对你顶礼膜拜,发出崇拜的小星星呢? 1.显示行数 vim打开文件之后输入 :set numbe ...

  2. linux使用wdm设备驱动模型,驱动开发(WDM) - thomas_more的个人空间 - OSCHINA - 中文开源技术交流社区...

    windows 设备对象名称(内核对象必须命名才能被用户层访问产生句柄) \Driver\ 内核模式下访问 \.\ 用户模式下访问 winObj(symbollink设备名称的别名,各个节点查看)和d ...

  3. linux lcd驱动调试 echo dev/fb0,LCD驱动程序 - osc_msmij2gf的个人空间 - OSCHINA - 中文开源技术交流社区...

    LCD驱动程序 假设 app: open("/dev/fb0", ...) 主设备号: 29, 次设备号: 0 kernel: fb_open int fbidx = iminor ...

  4. html5y页面布局标签,HTML常用标签 - osc_wc3dz06y的个人空间 - OSCHINA - 中文开源技术交流社区...

    1 HTML初识 HTML标签就是用来表达网页上的文字.图片.链接.音视频等等的······ 1.1 HTML标签分类 在HTML页面中,带有"< >"符号的元素被称为 ...

  5. linux内核等价多路径路由,高级路由 - 我是*李世民*的个人空间 - OSCHINA - 中文开源技术交流社区...

    策略路由背后的概念 Linux内核在默认情况下使用两张路由表:一张表用于本地路由,另一张可以由管理员来配置.如果内核编译支持策略路由,那么可以有多大255张不同的.相互独立的路由表.策略路由背后的主要 ...

  6. a33 linux内核启动网卡,a33核心板启动问题 - nevermore1981的个人空间 - OSCHINA - 中文开源技术交流社区...

    测试发现a33核心板有时无法正常启动,通过串口信息显示判断是uboot 对mmc初始化有时会出现问题: [      0.770][mmc]: ************Try MMC card 2** ...

  7. linux ospf 命令,OSPF单区域配置 - linuxprobe2020的个人空间 - OSCHINA - 中文开源技术交流社区...

    为了弥补距离矢量路由协议的不足,IEFI组织开发了一种基于链路状态的内部网关协议OSPF 实验环境:红,绿,蓝三个颜色区域代表三个不同网络的办公场所,要求使用OSPF协议实现网络互通. pc1:172 ...

  8. linux 劫持广告技术,屏蔽运营商广告劫持 - gcudwork的个人空间 - OSCHINA - 中文开源技术交流社区...

    在今天早上我查找知乎时再次遇到了恶心的运营商广告劫持,右下角硕大的广告直接让知乎挂掉了,我刷了五次知乎才好,之前休息的时候逛知乎也是多次加载错误,估计也是这劫持的锅,相信各位也遇到过不少的运营商劫持插 ...

  9. linux卸载apk命令,apk的安装和卸载 - Jenly的个人空间 - OSCHINA - 中文开源技术交流社区...

    之前写了一篇关于静默安装apk的.那个其实是在获取root权限的条件下来通过执行命令完成的.其功能本身已经很强大了.只是前提条件是需要root权限.然后什么静默安装卸载就都是浮云了.对于以下刚刚学an ...

最新文章

  1. Eclipse 如何安装,以及jdk如何设定环境变量
  2. jquery---基本标签
  3. python3 字符串方法
  4. java 10进制转2进制递归算法_十进制转二进制
  5. matlab 元胞调用方法你真的理解了么?
  6. 支付系统详解:清结算系统
  7. 移远BC95 nbiot接入华为OC云平台(电信云)
  8. 使用计算机制图的心得,学习cad制图心得体会
  9. dub解析json为构
  10. 关于3分频电路的讨论
  11. ubuntu永中office的快捷键
  12. 【打卡-Coggle竞赛学习2023年4月】图像检索与重复图像识别
  13. 餐厅预订系统如何选?餐厅预订系统推荐
  14. json字符串与python对象互转
  15. 什么是Timestamp——时间戳?
  16. 基于WiFi 的CSI和RSS混合指纹室内定位
  17. 老化的骨骼干细胞产生炎性退行性微环境
  18. 一个靠谱的淘客开发公司有哪些条件?
  19. 【每日一题】美国节日(基姆拉尔森公式、蔡勒公式)
  20. 【HTTP】百度贴吧WEB版签到流程分析

热门文章

  1. Redis 发布订阅,小功能大用处,真没那么废材!
  2. 使用 Spring Validation 优雅地进行参数校验
  3. 教你使用Vue.js的DevTools来调试你的vue项目
  4. 双边滤波器—— Matlab实现
  5. jfinal-swagger让你的应用接口更加简单
  6. 数学 - 线性代数导论 - #10 线性相关性、向量空间的基和维数
  7. 关于docker环境下mysql的使用相关
  8. 使用Bootstrap + Vue.js实现 添加删除数据
  9. 在线重定义的补充测试
  10. HDU1248 寒冰王座 【数学题】or【全然背包】