vim进阶,打造自己的vim

转载原文1:use_vim_as_ide
转载原文2:easymotion
转载原文3:nerdtree
转载原文4:php常用vim插件
转载原文5:VIM插件: TAGBAR
这些插件都是可以在github上找到的

语法高亮

vim 自身支持语法高亮,只需显式打开即可:

" 开启语法高亮功能
syntax enable
" 允许用指定语法高亮配色方案替换默认方案
syntax on

代码缩进

在 vim 中有两类缩进表示法,一类是用 1 个制表符('\t'),一类是用多个空格(' ')。两者并无本质区别,只是源码文件存储的字符不同而已,但,缩进可视化插件对两类缩进显示方式不同,前者只能显示为粗块,后者可显示为细条。增加如下配置信息:

" 自适应不同语言的智能缩进
filetype indent on
" 将制表符扩展为空格
set expandtab
" 设置编辑时制表符占用空格数
set tabstop=4
" 设置格式化时制表符占用空格数
set shiftwidth=4
" 让 vim 把连续数量的空格视为一个制表符
set softtabstop=4

注意下 expandtab、tabstop 与 shiftwidth、softtabstop、retab:

  • expandtab
    把制表符转换为多个空格,具体空格数量参考 tabstop 和 shiftwidth 变量;

  • tabstop 与 shiftwidth 是有区别的
    tabstop 指定我们在插入模式下输入一个制表符占据的空格数量,linux 内核编码规范建议是 8,看个人需要;shiftwidth 指定在进行缩进格式化源码时制表符占据的空格数。所谓缩进格式化,指的是通过 vim 命令由 vim 自动对源码进行缩进处理,比如其他人的代码不满足你的缩进要求,你就可以对其进行缩进格式化

  • softtabstop,处理连续多个空格
    因为 expandtab 已经把制表符转换为空格,当你要删除制表符时你得连续删除多个空格,该设置就是告诉 vim 把连续数量的空格视为一个制表符,即,只删一个字符即可。通常应将这tabstop、shiftwidth、softtabstop 三个变量设置为相同值

  • retab 命令
    另外,你总会阅读其他人的代码吧,他们对制表符定义规则与你不同,这时你可以手工执行 vim 的 retab 命令,让 vim 按上述规则重新处理制表符与空格关系

将相同缩进的代码关联起来(竖条对齐)

Yggdroot/indentLine
indentLine

代码折叠

vim 自身支持多种折叠:手动建立折叠(manual)、基于缩进进行折叠(indent)、基于语法进行折叠(syntax)、未更改文本构成折叠(diff)等等,其中,indent、syntax 比较适合编程,按需选用。增加如下配置信息:

" 基于缩进或语法进行代码折叠
"set foldmethod=indent
set foldmethod=syntax
" 启动 vim 时关闭折叠代码
set nofoldenable

操作:za,打开或关闭当前折叠;zM,关闭所有折叠;zR,打开所有折叠

目录树scrooloose/nerdtree

原文地址
相关配置
Yggdroot/indentLine
启动插件

:NERDTree

add to your .vimrc,a加会报错

let NERDTreeDirArrows = 1
let NERDTreeDirArrowExpandable = '▸'
let NERDTreeDirArrowCollapsible = '▾'

常用快捷键

别人的配置

 " NERDTree config
 map <F2> :NERDTreeToggle<CR>
 autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") &&b:NERDTreeType == "primary") | q | endif

第一条是说使用F2键快速调出和隐藏它;
第二条是关闭vim时,如果打开的文件除了NERDTree没有其他文件时,它自动关闭,减少多次按:q!。
如果想打开vim时自动打开NERDTree,可以如下设定

autocmd vimenter * NERDTree

快捷键

ctrl + w + w    光标自动在左右侧窗口切换
ctrl + w + r    移动当前窗口的布局位置
o       在已有窗口中打开文件、目录或书签,并跳到该窗口
go      在已有窗口 中打开文件、目录或书签,但不跳到该窗口
t       在新 Tab 中打开选中文件/书签,并跳到新 Tab
T       在新 Tab 中打开选中文件/书签,但不跳到新 Tab
i       split(横着分) 一个新窗口打开选中文件,并跳到该窗口
gi      split(横着分) 一个新窗口打开选中文件,但不跳到该窗口
s       vsplit (竖着分)一个新窗口打开选中文件,并跳到该窗口
gs      vsplit(竖着分) 一个新 窗口打开选中文件,但不跳到该窗口
!       执行当前文件
O       递归打开选中 结点下的所有目录
x       合拢选中结点的父目录
X       递归 合拢选中结点下的所有目录
D       删除当前书签
P       跳到根结点
p       跳到父结点
K       跳到当前目录下同级的第一个结点
J       跳到当前目录下同级的最后一个结点
k       跳到当前目录下同级的前一个结点
j       跳到当前目录下同级的后一个结点
r       递归刷新选中目录
R       递归刷新根结点
m       显示文件系统菜单 #!!!然后根据提示进行文件的操作如新建,重命名等
cd      将 CWD 设为选中目录
I       切换是否显示隐藏文件
f       切换是否使用文件过滤器
F       切换是否显示文件
B       切换是否显示书签
**tab**
:tabc   关闭当前的 tab
:tabo   关闭所有其他的 tab
:tabs   查看所有打开的 tab
:tabp   前一个 tab
:tabn   后一个 tab

标准模式下:
gT      前一个 tab
gt      后一个 tab

共享目录树

jistr/vim-nerdtree-tabs

" 关闭NERDTree快捷键
map <leader>t :NERDTreeToggle<CR>
" 显示行号
let NERDTreeShowLineNumbers=1
let NERDTreeAutoCenter=1
" 是否显示隐藏文件
let NERDTreeShowHidden=1
" 设置宽度
let NERDTreeWinSize=31
" 在终端启动vim时,共享NERDTree
let g:nerdtree_tabs_open_on_console_startup=1
" 忽略一下文件的显示
let NERDTreeIgnore=['\.pyc','\~$','\.swp']
" 显示书签列表
let NERDTreeShowBookmarks=1
[原文地址:上古神器vim插件:你真的学会用NERDTree了吗?](http://www.jianshu.com/p/3066b3191cb1)

在NERDTree 中显示git信息

nerdtree-git-plugin
配置

let g:NERDTreeIndicatorMapCustom = {
    \ "Modified"  : "✹",
    \ "Staged"    : "✚",
    \ "Untracked" : "✭",
    \ "Renamed"   : "➜",
    \ "Unmerged"  : "═",
    \ "Deleted"   : "✖",
    \ "Dirty"     : "✗",
    \ "Clean"     : "✔︎",
    \ "Unknown"   : "?"
    \ }

快速跳转

Lokaltog/vim-easymotion
原文

基本使用:

<leader><leader>+w/b
<leader><leader>+j/k行级跳转

.vimrc配置

let g:EasyMotion_leader_key='<Space>'

或者可以直接修改mapleader
let mapleader = "\<Space>"

w 光标之后查找单词
b 光标之前查找单词
它会高亮一些地方,然后输入字母就可以跳到你想要的区域

语法检查

scrooloose/syntastic
官方推荐的配置

 set statusline+=%#warningmsg#
 set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*
let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 0

php的debug

joonty/vdebug
需要先安装php的xdebug拓展

pecl install xdebug

php.ini配置文件内:

    zend_extension=/path/to/xdebug.so
    xdebug.remote_enable=on
    xdebug.remote_handler=dbgp
    xdebug.remote_host=localhost
    xdebug.remote_port=9000

在.vimrc中增加

 let g:debuggerPort = 9000

如何使用?
把要调试的php文件放在本地服务器目录下,在浏览器中打开要调试的php页面,在URL后加上?XDEBUG_SESSION_START=1参数
vdebug默认按键:
: start/run (to next breakpoint/end of script)
: step over
: step into
: step out
: stop debugging
: detach script from debugger
: run to cursor
: toggle line breakpoint

TAGBAR[大纲式导航]

majutsushi/tagbar
可以显示程序函数列表和变量列表
需要先安装ctags

# ubuntu
sudo apt-get install ctags
# centos
sudo yum install ctags
# mac
brew install ctags

设置快捷键为F3

nmap <F3> :TagbarToggle<CR>

NERDCOMMENTER,快速注释

scrooloose/nerdcommenter
配置:

 let mapleader=';'    "设置前缀键为';'
let g:NERDSpaceDelims=1    " 注释的时候自动加个空格

使用:

<leader>cc   加注释
<leader>cu   解开注释
<leader>c<space>  加上/解开注释, 智能判断

自动补全

shawncplus/phpcomplete.vim
使用

ctrl+x然后ctrl+o就出来了

vim自带的CTRL-N和CTRL-P补全:它们会在当前缓冲区、其它缓冲区,以及当前文件所包含的头文件中查找以光标前关键字开始的单词

posted @ 2016-08-12 16:35  jcuan  阅读(333)  评论(0编辑  收藏  举报