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
代码折叠
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>"
它会高亮一些地方,然后输入字母就可以跳到你想要的区域
语法检查
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默认按键:
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补全:它们会在当前缓冲区、其它缓冲区,以及当前文件所包含的头文件中查找以光标前关键字开始的单词