将vim打造成IDE(二)


将vim打造成IDE(二)一、多文档编辑二、Vim自带的配色方案三、解决vim中复制黏贴排版混乱或中文乱码的问题1.复制黏贴排版混乱2. 解决gVim下中文乱码的问题四、系统构建五、一键编译六、让vim识别markdown文本,实时预览README.md文件1.Linux下(1)安装新版的node.js(2)安装npm(3)安装instant-markdown-d(4)安装vim-instant-markdown2. Windows下七、让Vim透明化1.Windows下2. Linux下

一、多文档编辑

 

这相当于IDE中的标签,虽然它看起来不好看,但是用起来很方便,尤其看工程文件的时候,结合Tlist和NERDTree,体验直线上升。

vim 的多文档编辑涉及三个概念:buffer、window、tab,这三个事物与我们常规理解意义大相径庭。vim 把加载进内存的文件叫做 buffer,buffer 不一定可见;若要 buffer 要可见,则必须通过 window 作为载体呈现;同个看面上的多个 window 组合成一个 tab。一句话,vim 的 buffer、window、tab 你可以对应理解成视角、布局、工作区。我所用到的多文档编辑场景几乎不会涉及 tab,重点关注 buffer、window。

vim 中每打开一个文件,vim 就对应创建一个 buffer,多个文件就有多个 buffer,但默认你只看得到最后 buffer 对应的 window,通过插件 MiniBufExplorer(https://github.com/fholgado/minibufexpl.vim ,原始版本已停止更新且问题较多,该版本是其他人 fork 的新项目)可以把所有 buffer 罗列出来,并且可以显示多个 buffer 对应的 window。如下图所示:

img

图中关于 buffer 列表再说明两点:

你注意到 buffer 序号 1 和 4 不连续的现象么?只要 vim 打开一个 buffer,序号自动增一,中间不连续有几个可能:可能一,打开了 1、2、3、4 后,用户删除了 2、3 两个 buffer,剩下 1、4;可能二,先打开了其他插件的窗口(如,tagbar)后再打开代码文件;

配置:将如下信息加入 .vimrc 中:

 

操作:一般通过 NERDtree 查看工程文件列表,选择打开多个代码文件后,MiniBufExplorer 在顶部自动创建 buffer 列表子窗口。通过前面配置,ctrl-tab 正向遍历 buffer,ctrl-shift-tab 逆向遍历(光标必须在 buffer 列表子窗口外);在某个 buffer 上键入 d 删除光标所在的 buffer(光标必须在 buffer 列表子窗口内)。

注意:快捷键有可能不适用你的vim,尤其是buffer切换快捷键,我将其换成了Ctrl+k和Ctrl+j。

img

二、Vim自带的配色方案

img

我将喜欢的配色方案全部放到vimrc中,偶尔换一下。

img

三、解决vim中复制黏贴排版混乱或中文乱码的问题

1.复制黏贴排版混乱

主要是Linux下的vim容易出现的问题,这其实主要是paste模式引起的问题,可以在网上查一下paste为你做了什么,然后你就大概了解为什么复制黏贴会出现混乱的原因了,在网上查到一个我感觉比较合适的解决方法,设置paste模式的开关键,我这里设置的是F2,vimrc中内容如下:

"解决复制粘帖排版混乱的问题

 

2. 解决gVim下中文乱码的问题

"解决gvim下中文乱码

 

四、系统构建

这一步结合下一步的一键编译就可以实现工程文件在vim内部进行编译了,最后再实现在vim内部执行可执行程序,那么我们就实现了将vim变成IDE的伟大目标。

对于只有单个代码文件的项目来说,无非是保存代码文件、shell 中调用 GCC 编译、链接这样的简单方式即可实现;但,对于动辄几十上百个文件的工程项目,采用这种方式只会把自己逼疯,必须借助构建工具管理工程的整个构建过程。

linux 有两类工程构建工具 —— Makefile系 和非 Makefile 系,Makefile 系常见构建工具有 GNU 出品的老牌 autoconf、新生代的 CMake,非 Makefile 系中最著名的要数 SCons。KDE 就是通过 CMake(http://www.cmake.org/cmake/resources/software.html )构建出来的,易用性灵活性兼备,洒泪推荐。

ubuntu下可以直接apt-get安装,当然你也可以源码安装,这不仅可以学习下整个编译安装流程,如果你做嵌入式的话,还可以帮助你熟悉交叉编译某些库时的操作。

一般来说,你需要先写个名为 CMakeLists.txt 的构建脚本,然后执行 cmake CMakeLists.txt 命令将生成 Makefile 文件,最后执行 make 命令即可编译生成可执行程序。

第一步,编写 CMakeLists.txt,这又是一门学问了,就和编写makefile脚本一样,你可以套用模板,也可以系统学习一下怎么去写CMakeLists.txt,这些都是你了解Linux系统,增加学习兴趣的基石。

 

其中,PROJECT 指定工程名、SET 是 cmake 变量赋值命令、ADD_EXECUTABLE 指定生成可执行程序的名字。括号内的大写字符串是 cmake 内部预定义变量,这是 CMakeLists.txt 脚本的重点,下面详细讲述:

· SRC_LIST 指定参与编译的源码文件列表,如果有多个文件请用空格隔开,如,你工程有 main.cpp、lib/MyClass.cpp、lib/MyClass.h 三个文件,那么可以指定为:

· SET(SRC_LIST main.cpp lib/MyClass.cpp)

· CMAKE_CXX_COMPILER 指定选用何种编译器;

· CMAKE_CXX_FLAGS 设定编译选项;

· CMAKE_EXE_LINKER_FLAGS 设定链接选项。一定要将 -lc++ 和 -lc++abi 独立设定到 CMAKE_EXE_LINKER_FLAGS变量中而不能放在 CMAKE_CXX_FLAGS,否则无法通过链接;

· CMAKE_BUILD_TYPE 设定生成的可执行程序中是否包含调试信息。

第二步,基于 CMakeLists.txt 生成 Makefile。

第三步,基于 Makefile 生成可执行程序。

五、一键编译

工程项目的构建过程游离于 vim 之外终究不那么方便,前面章节介绍的构建过程是在 shell 中执行的,全在 vim 中执行又是如何操作。第一步的创建 CMakeLists.txt 没问题,vim 这么优秀的编辑器编辑个普通文本文件易如反掌;第二步的生成Makefile 也没问题,在 vim 内部通过 ! 前缀可以执行 shell 命令,:!cmake CMakeLists.txt 即可;第三步的编译过程更没问题,因为 vim 自身支持 make 命令,直接在 vim 中输入 :make 命令它会调用外部 make 程序读取当前目录中的 Makefile文件,完成编译、链接操作。当然,一次性编译通过的可能性很小,难免有些语法错误(语义错误只能靠调试器了),vim 将编译器抛出的错误和警告信息输出到 quickfix 中,执行 :cw 命令即可显示 quickfix。说了这么多,概要之,先通过构建工具(CMake 可通过 CMakeLists.txt 文件,autotools 可通过 configure 文件)生成整个工程的 Makefile,再在 vim 中执行 :make,最后显示 quickfix。

要实现一键编译,无非是把这几步映射为 vim 的快捷键,即:

nmap m :wa:make:cw

分解说明下,m 为设定的一键编译快捷键,:wa 保存所有调整文档内容,:make 调用 make 命令,后面的 消除执行完 make 命令屏幕上“Press ENTER or type command to continue”的输入等待提示,:cw 显示 quickfix(仅当有编译错误或警告时)。

六、让vim识别markdown文本,实时预览README.md文件

1.Linux下

新版vim自动识别markdown文件并语法高亮,所以仅需要安装实时预览插件,实时预览插件采用vim-instant-markdown插件,安装之前需要安装node.js和npm。

 

(1)安装新版的node.js

 

(2)安装npm

 

(3)安装instant-markdown-d

 

(4)安装vim-instant-markdown

在~/.vim/bundle/目录下(我使用的是bundle管理插件,直接将插件克隆到bundle目录下即可)

2. Windows下

Windows下使用火狐浏览器,安装火狐浏览器插件,然后使vim调用火狐浏览器实时浏览markdown文件。

安装火狐浏览器,Windows用户在安装完Firefox以后需要将它添加到环境变量中,如下:

img

img

在火狐浏览器中安装Markdown ViewerAuto Reload这两个插件并重启Firefox,然后在vimrc中添加如下内容:

"按使用Firefox预览文件

 

这样,当你在Vim中打开Markdown文件并按一次以后就会自动打开Firefox预览窗口,每次保存文件时,Firefox就会自动更新预览页面的内容。

七、让Vim透明化

1.Windows下

在网上下载vimtweak.dll,并且将dll文件放到gvim.exe所在的目录,然后在vimrc中加入如下内容,透明度更改最后的数值即可,感觉200左右较好。

 

2. Linux下

暂无