Skip to content

sarrow104/vimrc

Repository files navigation

My-vimrc


简单说明

for anyone who need this


vim 是一个高度可定制化的,文本编辑软件。因此,其个性化配置来说,并不适合所有人。但仍然有一定的借鉴意义。


本vimrc配置文件,是我多年使用vim软件积累所得;主要是自己的一些使用习惯和积累下来的大众化插件。

在2016年初的时候,我引入了vim-Bundle的管理插件的方式,升级了自己的vim管理插件的方式,并替换、更改了部分常用插件。

同时,将自己编写的部分插件,也融入到了这种新的vim插件管理方式中去。

特点有:

  1. 持久的guifont管理。通过自己的font.vim管理。本次修改之后,可以在下次启动的时候重新载入字体设置。 同时,快捷键<A-+>,<A--> 可以进行快速的字体大小调整;

  2. 我习惯于用 <A-">, <A-'> 等等 来快速输入,成对的标点;为此,我编写了 pairpunct.vim 插件。 主要提供了英文(含cpp,c等编程语言)的标点成对输入;以及中文如“”的快速输入;

    使用的时候,形如:

    au FileType c,java,d
    	    \ call pairpunct#Bind_punct_complete()|
    	    \ call pairpunct#PairAdd_english_style()

    对于中文标点,则可以使用 call pairpunct#PairAdd_chinese_style() 即可。

  3. 为了与成对标点的快速输入配合,我还增加了插入模式的快速光标移动快捷键,作为配合。以方便地, 跳到成对标点符号的右侧;

    i_A-l; 此外还有 i_A-h,i_A-j,i_A-k。分别表示光标向右、向左、向下、行上移动一个字符。

  4. 此外,还有 system.vim 插件,以方便地从(g)vim中,呼叫出文件系统浏览器、shell/cmd窗口,等等。 另外,该插件还附带有 nerdtree_plugin/ 插件,可以支持在NERDTree窗口中,通过回车键, 执行文件系统浏览器的打开光标行文件夹。以及,用系统打开方式打开光标行所在文件。

  5. 为了方便编写cpp程序,以及,用cmake管理工程,我还额外配套了一个二进制工具: gensketch.vimvim 脚本 simple-cmake.vim;分别用来自动创建 .gitignore;批量创建cpp的头文件和实现文件; 以及,批量创建cmake工程,或者qt工程文件。这些,都是基于模板来创建的。

  6. 自定义text(.txt)文本插件;我将text文本文件,重新设计为,以*前缀为标题行标志的文件, 同时支持 :CC 快速生成大纲的方式,以支持进行快速章节跳转。并自定义了一些快捷功能,以方便中文文本文档的编辑。

插件列表

备注 用到的vim语句:

 '<,'>Collect ^Plugin\ '\zs.\{-}\ze'
 '<,'>s/^\d\s\+\(.\+\)$/- [\1](https:\/\/github.com\/\1)/ge

vim插件机制发展历史

vim插件的管理方式,大致分为三个阶段:

  1. 手动管理阶段

    基于 $vim 文件夹目录的层级结构,手动下载 vim 插件包,并复制到对应的文件夹中。

    插件,一般也是一个目录结构的资源形式,通常用压缩包进行手动安装。这有一个麻烦,往往需要依赖第三方解压软件,而且,用户还可能弄错解压目的路径。

  2. vimball 安装脚本,半手动管理阶段

    vimball 是一种 vim 本身支持脚本打包模式,在用 vim 打开该 vimball (.vba)文件后,再 vim:so %,即可将该插件,正确安装。

    经过时间的积累,第三方 vim 插件越来越多,上述两种方式,其本质,都是将原本分开的插件包,重新放置到 $vim 文件夹中。 就好比 linux 中,C语言头文件一样,通常都是在 /usr/include/ 下面 —— 具体,那个头文件,分属于哪个软件库,一般人是没法一眼就分清楚的。

    $vim 插件,沿用这种管理方式,也必然导致插件之间的耦合,管理的混乱,冲突之后,不方便找出干扰,等等。

  3. &rtp ( 动态 runtimepath 路径) 省心的管理方式

    vim 搜索脚本,有一个特性,就是它会依次搜索 vim 内部变量 &rtp 中的路径,并且按照 $vim 中,文件夹目录的层级关系来搜索。 就是说,如果动态管理这个 &rtp 变量,就可以达到,动态 管理 vim 插件的能力 —— 同时,不同插件,分属于自己的 插件根目录,还能方便进行插件管理。

    同时,github 仓库的流行,也让这种管理方式变得容易。

    利用 vim 这种动态载入特性的脚本,大概有 pathogenvundleneobundle 等等。它们的功能大同小异,都是将存放于 github 上的 vim 插件, 通过 git 命令行工具,下载到 $VIM/bundle/插件名 这样的独立的路径下;并将这个路径,动态添加到 &rtp 中。 区别在于,更多协议的支持,比如从 http://vim-scripts.org/ 下载插件并自动管理;或者,支持更细节的插件管理设置。

    这样,动态启用、禁用某插件,就变得可能。而不像 前 git 时代,只能手动删除某插件的所有文件,或者再手动添加回去……


FAQ

Q: 如何让 NERDTree 插件可以使用 vim-devicons 图标字体?

A: 请参考 https://github.com/chxuan/vimplus 中,sh按照脚本中描述,进行操作。

Q: 为什么在安装 vim-devicons 插件之后, NERDTree 中只有部分图标字体正常显示,而相当部分是乱码“中文”?

A: 可能是设置了 guifontwide 属性的原因;vim-devicons 所用字体,会与部分中文字体混淆; 此时需要执行 :set guifontwide= ,清空 gfw 值即可。

Q: 为什么我的 vim 在终端下,没有 gvim 版本,颜色丰富好看?

A: 终端下,颜色支持有限,比如,windows 下的 cmd window,前景色,背景色,各支持8种。vim 默认只使用8种颜色,必然单调。 不过,可以根据终端的实际种类,设置具体的 t_Co 值,以支持尽可能丰富的颜色。比如,xterm 可以支持 256 种颜色。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published