vim个人配置
2015-10-22 23:12
344 查看
前言:
这几天用的k-vim:https://github.com/wklken/k-vim
后面发现里面有些不爽的配置,敲代码总有些不爽,有些根本就不适合的配置,所以发誓用两天时间配置最适合自己的vim,也方便以后重装系统什么的或者移到别的电脑的时候配置,哪里都适合自己的vim配置。
一.安装vim:
因为现在用的Mac os,所以安装vim之后安装MacVim(如果不先安装xcode是安装不成功MacVim的):
二.安装Vim插件管理器Vundle:
在~/.vimrc中写入以下东西:
然后先输入 :w 保存,然后输入:BundleInstall安装,就可以安装vundle了
Vundle命令:
:BundleList #已安装列表
:BundleInstall #安装
:BundleInstall! #升级
:BundleClean #删除
三.安装vim-go:
在~/.vimrc中加入Bundle 'fatih/vim-go',然后:BundleInstall即可安装
然后:GoInstallBinaries可以安装go的其他工具,这步要***才能成功下载全部,如果有的下载不成功的话,可以用命令:http_proxy=xxx go get xxx 或者 http_proxy=xxx git clone xxx得到。
如果上面方法都不行,那可以去:https://github.com/golang/tools/先clone下来,然后到golang.org/x/tools/cmd夹下一个文件夹go install就行了;
比如:go install golang.org/x/tools/cmd/goimports
go工具运用:
参考:http://tonybai.com/2014/11/07/golang-development-environment-for-vim/
编辑.go文件后:
- 新起一行输入fmt.,然后ctrl+x, ctrl+o,Vim 会弹出补齐提示下拉框,不过并非实时跟随的那种补齐,这个补齐是由gocode提供的。
– 输入一行代码:time.Sleep(time.Second),执行:GoImports,Vim会自动导入time包。
– 将光标移到Sleep函数上,执行:GoDef或命令模式下敲入gd,Vim会打开$GOROOT/src/time/sleep.go中 的Sleep函数的定义。执行:b 1返回到hellogolang.go。
– 执行:GoLint,运行golint在当前Go源文件上。
– 执行:GoDoc,打开当前光标对应符号的Go文档。
– 执行:GoVet,在当前目录下运行go vet在当前Go源文件上。
– 执行:GoRun,编译运行当前main package。
– 执行:GoBuild,编译当前包,这取决于你的源文件,GoBuild不产生结果文件。
– 执行:GoInstall,安装当前包。
– 执行:GoTest,测试你当前路径下地_test.go文件。
– 执行:GoCoverage,创建一个测试覆盖结果文件,并打开浏览器展示当前包的情况。
– 执行:GoErrCheck,检查当前包种可能的未捕获的errors。
– 执行:GoFiles,显示当前包对应的源文件列表。
– 执行:GoDeps,显示当前包的依赖包列表。
– 执行:GoImplements,显示当前类型实现的interface列表。
– 执行:GoRename [to],将当前光标下的符号替换为[to]。
安装好vim-go和go的其他工具之后,对golang就能自由掌控了,但是像上面编译还要输入:GoBuild,觉得麻烦,所以在~/.vimrc中配置如下:
这样我们在命令模式下,输入 ,r 就是运行当前main包,以此类推。
另外下面这个配置使得我们在 :w 保存文件时既可以格式化代码,又可以自动插入包导入语句(或删除不用的包导入语句):
四.配置vim高亮等特性:
五.安装实时补全插件:YouCompleteMe
在~/.vimrc中写入Bundle 'Valloric/YouCompleteMe',保存后:BundleInstall安装
(安装过程比较慢,下载东西多,所以需静等10到20分钟左右,这时可以做其他配置……)
安装完后,重装用vim打开.go文件的时候可能会提示YouCompleteMe还没编译安装
如果没有cmake,make等先brew install make cmake等别的东西(提示缺啥补装啥)
然后:
cd ~/.vim/bundle/YouCompleteMe
因为我想提示的是golang,所以我这样安装:
./install.py --gocode-completer
别的想要提示什么语言的可以参考:https://github.com/Valloric/YouCompleteMe
这时再进入编辑.go文件的时候就可以有自动提示了。
六.solarized配色:
git clone https://github.com/altercation/vim-colors-solarized下来,
然后我是把solarized.vim放到/usr/local/Cellar/vim/7.4.891/share/vim/vim74/colors/,
然后设置:
七.别的插件:
nerdtree树形目录插件:Bundle 'scrooloose/nerdtree'
Tagbar标签跳转插件:Bundle 'majutsushi/tagbar'
syntastic多语言语法检查插件:Bundle 'scrooloose/syntastic'
vim-multiple-cursors多光标选中编辑:Bundle 'terryma/vim-multiple-cursors'
delimitMate自动补全单引号、双引号等:Bundle 'Raimondi/delimitMate'
八.最终~/.vimrc文件配置:
九.配置之后的用法:
十.效果图:
之后有好的使用方法,会继续更新……
这几天用的k-vim:https://github.com/wklken/k-vim
后面发现里面有些不爽的配置,敲代码总有些不爽,有些根本就不适合的配置,所以发誓用两天时间配置最适合自己的vim,也方便以后重装系统什么的或者移到别的电脑的时候配置,哪里都适合自己的vim配置。
一.安装vim:
因为现在用的Mac os,所以安装vim之后安装MacVim(如果不先安装xcode是安装不成功MacVim的):
brew install vim brew install MacVim
二.安装Vim插件管理器Vundle:
mkdir ~/.vim mkdir ~/.vim/bundle git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim
在~/.vimrc中写入以下东西:
set nocompatible "与vi不一致 filetype off set rtp+=~/.vim/bundle/Vundle.vim "载入特定目录插件 call vundle#rc() Bundle 'gmarik/vundle' filetype plugin indent on
然后先输入 :w 保存,然后输入:BundleInstall安装,就可以安装vundle了
Vundle命令:
:BundleList #已安装列表
:BundleInstall #安装
:BundleInstall! #升级
:BundleClean #删除
三.安装vim-go:
在~/.vimrc中加入Bundle 'fatih/vim-go',然后:BundleInstall即可安装
然后:GoInstallBinaries可以安装go的其他工具,这步要***才能成功下载全部,如果有的下载不成功的话,可以用命令:http_proxy=xxx go get xxx 或者 http_proxy=xxx git clone xxx得到。
如果上面方法都不行,那可以去:https://github.com/golang/tools/先clone下来,然后到golang.org/x/tools/cmd夹下一个文件夹go install就行了;
比如:go install golang.org/x/tools/cmd/goimports
go工具运用:
参考:http://tonybai.com/2014/11/07/golang-development-environment-for-vim/
编辑.go文件后:
- 新起一行输入fmt.,然后ctrl+x, ctrl+o,Vim 会弹出补齐提示下拉框,不过并非实时跟随的那种补齐,这个补齐是由gocode提供的。
– 输入一行代码:time.Sleep(time.Second),执行:GoImports,Vim会自动导入time包。
– 将光标移到Sleep函数上,执行:GoDef或命令模式下敲入gd,Vim会打开$GOROOT/src/time/sleep.go中 的Sleep函数的定义。执行:b 1返回到hellogolang.go。
– 执行:GoLint,运行golint在当前Go源文件上。
– 执行:GoDoc,打开当前光标对应符号的Go文档。
– 执行:GoVet,在当前目录下运行go vet在当前Go源文件上。
– 执行:GoRun,编译运行当前main package。
– 执行:GoBuild,编译当前包,这取决于你的源文件,GoBuild不产生结果文件。
– 执行:GoInstall,安装当前包。
– 执行:GoTest,测试你当前路径下地_test.go文件。
– 执行:GoCoverage,创建一个测试覆盖结果文件,并打开浏览器展示当前包的情况。
– 执行:GoErrCheck,检查当前包种可能的未捕获的errors。
– 执行:GoFiles,显示当前包对应的源文件列表。
– 执行:GoDeps,显示当前包的依赖包列表。
– 执行:GoImplements,显示当前类型实现的interface列表。
– 执行:GoRename [to],将当前光标下的符号替换为[to]。
安装好vim-go和go的其他工具之后,对golang就能自由掌控了,但是像上面编译还要输入:GoBuild,觉得麻烦,所以在~/.vimrc中配置如下:
" set mapleader let mapleader = "," " vim-go custom mappings au FileType go nmap <Leader>s <Plug>(go-implements) au FileType go nmap <Leader>i <Plug>(go-info) au FileType go nmap <Leader>gd <Plug>(go-doc) au FileType go nmap <Leader>gv <Plug>(go-doc-vertical) au FileType go nmap <leader>r <Plug>(go-run) au FileType go nmap <leader>b <Plug>(go-build) au FileType go nmap <leader>t <Plug>(go-test) au FileType go nmap <leader>c <Plug>(go-coverage) au FileType go nmap <Leader>ds <Plug>(go-def-split) au FileType go nmap <Leader>dv <Plug>(go-def-vertical) au FileType go nmap <Leader>dt <Plug>(go-def-tab) au FileType go nmap <Leader>e <Plug>(go-rename)
这样我们在命令模式下,输入 ,r 就是运行当前main包,以此类推。
另外下面这个配置使得我们在 :w 保存文件时既可以格式化代码,又可以自动插入包导入语句(或删除不用的包导入语句):
" vim-go settings let g:go_fmt_command = "goimports"
四.配置vim高亮等特性:
set number " 显示行号 set backspace=2 "设置按delete键的时候可往左删除 set nocompatible " 关闭 vi 兼容模式 syntax on " 自动语法高亮 set cursorline " 突出显示当前行 autocmd InsertLeave * se nocul autocmd InsertEnter * se cul set smartindent " 智能对齐 set autoindent " 自动对齐 set confirm " 在处理未保存或只读文件的时候,弹出认 set ruler " 打开状态栏标尺 set shiftwidth=4 " 设定 << 和 >> 命令移动时的宽度为 4 set softtabstop=4 " 使得按退格键时可以一次删掉 4 个空格 set tabstop=4 " 设定 tab 长度为 4 set nobackup " 覆盖文件时不备份 set autochdir " 自动切换当前目录为当前文件所在的目录 filetype plugin indent on " 开启插件 set backupcopy=yes " 设置备份时的行为为覆盖 set ignorecase smartcase " 搜索时忽略大小写,但在有一个或以上大写字母时仍保持对大小写敏感 set nowrapscan " 禁止在搜索到文件两端时重新搜索 set incsearch " 输入搜索内容时就显示搜索结果 set hlsearch " 搜索时高亮显示被找到的文本 set noerrorbells " 关闭错误信息响铃 set novisualbell " 关闭使用可视响铃代替呼叫 set t_vb= " 置空错误铃声的终端代码 set noexpandtab " 不要用空格代替制表符 set history=50 " 历史纪录数 set gdefault " 行内替换 set encoding=utf-8 " 编码设置 set fileencodings=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936,utf-16,big5,euc-jp,latin1 set langmenu=zn_CN.UTF-8 set helplang=cn " 语言设置 set cmdheight=2 " 命令行(在状态行)的高度,默认为1,这里是2 set laststatus=2 " 总是显示状态行 set showcmd " 在状态行显示目前所执行的命令,未完成的指令片段亦会显示出来 set scrolloff=3 " 光标移动到buffer的顶部和底部时保持3行距离 set showmatch " 高亮显示对应的括号 set matchtime=5 " 对应括号高亮的时间(单位是十分之一秒) set wildmenu " 增强模式中的命令行自动完成操作 set linespace=2 " 字符间插入的像素行数目
五.安装实时补全插件:YouCompleteMe
在~/.vimrc中写入Bundle 'Valloric/YouCompleteMe',保存后:BundleInstall安装
(安装过程比较慢,下载东西多,所以需静等10到20分钟左右,这时可以做其他配置……)
安装完后,重装用vim打开.go文件的时候可能会提示YouCompleteMe还没编译安装
如果没有cmake,make等先brew install make cmake等别的东西(提示缺啥补装啥)
然后:
cd ~/.vim/bundle/YouCompleteMe
因为我想提示的是golang,所以我这样安装:
./install.py --gocode-completer
别的想要提示什么语言的可以参考:https://github.com/Valloric/YouCompleteMe
这时再进入编辑.go文件的时候就可以有自动提示了。
六.solarized配色:
git clone https://github.com/altercation/vim-colors-solarized下来,
然后我是把solarized.vim放到/usr/local/Cellar/vim/7.4.891/share/vim/vim74/colors/,
然后设置:
set background=dark set t_Co=256 colorscheme solarized
七.别的插件:
nerdtree树形目录插件:Bundle 'scrooloose/nerdtree'
Tagbar标签跳转插件:Bundle 'majutsushi/tagbar'
syntastic多语言语法检查插件:Bundle 'scrooloose/syntastic'
vim-multiple-cursors多光标选中编辑:Bundle 'terryma/vim-multiple-cursors'
delimitMate自动补全单引号、双引号等:Bundle 'Raimondi/delimitMate'
八.最终~/.vimrc文件配置:
" set mapleader
let mapleader = ","
let g:mapleader = ","
"安装vundle
set rtp+=~/.vim/bundle/Vundle.vim/ "载入特定目录插件
call vundle#rc()
filetype on "允许文件类型
filetype indent on "针对不同的文件类型采用不同的缩进格式
filetype plugin on "允许插件
filetype plugin indent on " 开启插件
set history=50 " 历史纪录数
syntax enable "打开语法高亮
syntax on " 自动语法高亮
set number " 显示行号
set backspace=2 "设置按delete键的时候可往左删除
set nocompatible " 关闭 vi 兼容模式
set cursorcolumn "突出显示当前行等
set cursorline " 突出显示当前行
"设置 退出vim后,内容显示在终端屏幕, 可以用于查看和复制
"好处:误删什么的,如果以前屏幕打开,可以找回
set t_ti= t_te=
set mouse= "允许使用鼠标,设值为a后虽然可以使用鼠标,但是却屏蔽了鼠标右键功能,
"导致不能复制粘贴,所以还不是设为a了,还是设为空吧
set novisualbell "去掉输入错误时的提示音
set noerrorbells "去掉输入错误时的提示音
set t_vb= " 置空错误铃声的终端代码
set magic "正则表达式设置哪些元字符需要加反斜杠
autocmd InsertLeave * se nocul "用浅色高亮当前行
autocmd InsertEnter * se cul "用浅色高亮当前行
set smartindent " 智能对齐
set autoindent " 自动对齐
set autoread "文件修改之后自动载入
set shortmess=atI "启动的时候不显示那个援助索马里儿童的提示
set confirm " 在处理未保存或只读文件的时候,弹出认
set ruler " 打开状态栏标尺
set shiftwidth=4 " 设定 << 和 >> 命令移动时的宽度为 4
set softtabstop=4 " 使得按退格键时可以一次删掉 4 个空格
set tabstop=4 " 设定 tab 长度为 4
set nobackup " 覆盖文件时不备份
set noswapfile "关闭交换文件
set autochdir " 自动切换当前目录为当前文件所在的目录
set backupcopy=yes " 设置备份时的行为为覆盖
set ignorecase "搜索时忽略大小写
set smartcase " 但在有一个或以上大写字母时仍保持对大小写敏感
set nowrapscan " 禁止在搜索到文件两端时重新搜索
set incsearch " 输入搜索内容时就显示搜索结果
set hlsearch " 搜索时高亮显示被找到的文本
set expandtab " 不要用空格代替制表符
set nowrap "取消换行
set gdefault " 行内替换
set encoding=utf-8 " 编码设置
set fileencodings=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936,utf-16,big5,euc-jp,latin1
set langmenu=zn_CN.UTF-8
set helplang=cn " 语言设置
set laststatus=2 " 总是显示状态行
set showcmd " 在状态行显示目前所执行的命令,未完成的指令片段亦会显示出来
set showmode "左下角显示当前vim模式
set scrolloff=5 "上下移动光标时,光标的上方或下方至少会保留显示的行数
set showmatch " 高亮显示对应的括号
set matchtime=5 " 对应括号高亮的时间(单位是十分之一秒)
set wildmenu " 增强模式中的命令行自动完成操作
set linespace=2 " 字符间插入的像素行数目
set tabstop=4 " 设置Tab键的宽度
set shiftwidth=4 " 每一次缩进对应的空格数
set softtabstop=4 " 按退格键时可以一次删掉 4 个空格
set smarttab " 按退格键时可以一次删掉 4 个空格
set expandtab " 将Tab自动转化成空格
set shiftround " 缩进时,取整
set ffs=unix,dos,mac "Use Unix as the standard file type
set formatoptions+=m " 如遇Unicode值大于255的文本,不必等到空格再折行
set formatoptions+=B " 合并两行中文时,不在中间加空格
set completeopt=longest,menu "让Vim的补全菜单行为与一般IDE一致
set wildmenu " 增强模式中的命令行自动完成操作
set wildignore=*.o,*~,*.pyc,*.class "忽略编译文件
autocmd InsertLeave * if pumvisible() == 0|pclose|endif "离开插入模式后自动关闭预览窗口
autocmd! bufwritepost _vimrc source % " vimrc文件修改之后自动加载。 windows。
autocmd! bufwritepost .vimrc source % " vimrc文件修改之后自动加载。 linux。
" 相对行号 行号变成相对,可以用 nj nk 进行跳转 5j 5k 上下跳5行
set relativenumber number
au FocusLost * :set norelativenumber number
au FocusGained * :set relativenumber
" 插入模式下用绝对行号, 普通模式下用相对
autocmd InsertEnter * :set norelativenumber number
autocmd InsertLeave * :set relativenumber
function! NumberToggle()
if(&relativenumber == 1)
set norelativenumber number
else
set relativenumber
endif
endfunc
nnoremap <C-n> :call NumberToggle()<cr>
" 定义函数AutoSetFileHead,自动插入文件头,编写脚本时就不用自己写文件头了
autocmd BufNewFile *.sh,*.py exec ":call AutoSetFileHead()"
function! AutoSetFileHead()
"如果文件类型为.sh文件
if &filetype == 'sh'
call setline(1, "\#!/bin/bash")
endif
"如果文件类型为python
if &filetype == 'python'
call setline(1, "\#!/usr/bin/env python")
call append(1, "\# encoding: utf-8")
endif
normal G
normal o
normal o
endfunc
"设置Vim的粘贴模式
function! WrapForTmux(s)
if !exists('$TMUX')
return a:s
endif
let tmux_start = "\<Esc>Ptmux;"
let tmux_end = "\<Esc>\\"
return tmux_start . substitute(a:s, "\<Esc>", "\<Esc>\<Esc>", 'g') .
tmux_end
endfunc
let $t_SI .= WrapForTmux("\<Esc>[?2004h")
let $t_EI .= WrapForTmux("\<Esc>[?2004l")
function! XTermPasteBegin()
set pastetoggle=<Esc>[201~
set paste
return ""
endfunc
inoremap <special> <expr> <Esc>[200~ XTermPasteBegin()
"回车即选中当前项
inoremap <expr> <CR> pumvisible() ? "\<C-y>" : "\<CR>"
"输入大括号后回车光标置于下一行向右缩进4个空格(一个tab)
"imap是输入模式
imap { {}<ESC>i<CR><ESC>ko
"解释:
"<ESC>就是按键盘的ESC键,切换到命令行模式
"i 就是按键盘的i键,进入插入模式
"<CR> 即按回车,此时将右括号换行
"<ESC> 重新回到命令行模式
"k 移到上一行
"o 换行并移到一个tab且进入输入模式
"直接把;当成: 这样可快速进入命令行
nnoremap ; :
" 命令行模式增强,ctrl - a到行首, -e 到行尾
cnoremap <C-j> <t_kd>
cnoremap <C-k> <t_ku>
cnoremap <C-a> <Home>
cnoremap <C-e> <End>
"选中全部,快捷键为:,sa
map <leader>sa ggVG"
"选中块,快捷键为:,v
nnoremap <leader>v V`}
"U快捷键为对撤销的撤销
nnoremap U <C-r>
map Y y$
" kj 替换 Esc , 以便快速进入命令模式
inoremap kj <Esc>
" 设置标记一列的背景颜色和数字一行颜色一致
hi! link SignColumn LineNr
hi! link ShowMarksHLl DiffAdd
hi! link ShowMarksHLu DiffChange
"防止错误整行标红导致看不清
highlight clear SpellBad
highlight SpellBad term=standout ctermfg=1 term=underline cterm=underline
highlight clear SpellCap
highlight SpellCap term=underline cterm=underline
highlight clear SpellRare
highlight SpellRare term=underline cterm=underline
highlight clear SpellLocal
highlight SpellLocal term=underline cterm=underline
"安装插件列表
"vim插件管理器
Bundle 'gmarik/vundle'
"vim的golang环境
Bundle 'fatih/vim-go'
" vim-go快捷键设置,因为平常只用run,build,test,所以只设置这三个
au FileType go nmap <leader>r <Plug>(go-run)
au FileType go nmap <leader>b <Plug>(go-build)
au FileType go nmap <leader>t <Plug>(go-test)
au FileType go nmap <leader>i <Plug>(go-install)
au FileType go nmap <leader>gd <Plug>(go-def)
au FileType go nmap <leader>gc <Plug>(go-doc)
" vim-go settings let g:go_fmt_command = "goimports"
"编程语言自动提示
Bundle 'Valloric/YouCompleteMe'
let g:ycm_complete_in_comments = 1 "在注释输入中也能补全
let g:ycm_complete_in_strings = 1 "在字符串输入中也能补全
let g:ycm_collect_identifiers_from_comments_and_strings = 1 "注释和字符串中的文字也会被收入补全
let g:ycm_collect_identifiers_from_tags_files = 1
" 跳转到定义处, 分屏打开
let g:ycm_goto_buffer_command = 'horizontal-split'
" nnoremap <leader>jd :YcmCompleter GoToDefinition<CR>
nnoremap <leader>ed :YcmCompleter GoToDefinitionElseDeclaration<CR>
nnoremap <leader>hd :YcmCompleter GoToDeclaration<CR>
" old version
if !empty(glob("~/.vim/bundle/YouCompleteMe/cpp/ycm/.ycm_extra_conf.py"))
let g:ycm_global_ycm_extra_conf = "~/.vim/bundle/YouCompleteMe/cpp/ycm/.ycm_extra_conf.py"
endif
" new version
if !empty(glob("~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py"))
let g:ycm_global_ycm_extra_conf = "~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py"
endif
"多语言语法检查
Bundle 'scrooloose/syntastic'
let g:syntastic_error_symbol='>>'
let g:syntastic_warning_symbol='>'
let g:syntastic_check_on_open=1
let g:syntastic_check_on_wq=0
let g:syntastic_enable_highlighting=1
"修改高亮的背景颜色,适应主题
highlight SyntasticErrorSign guifg=white guibg=black
"支持自定义文本对象
Bundle 'kana/vim-textobj-user.git'
"增加行文本对象
Bundle 'kana/vim-textobj-line'
"增加文件文本对象
Bundle 'kana/vim-textobj-entire.git'
"增加缩进文本对象
Bundle 'kana/vim-textobj-indent.git'
" 选中区块
Bundle 'terryma/vim-expand-region'
vmap v <Plug>(expand_region_expand)
vmap V <Plug>(expand_region_shrink)
"多光标选中编辑
Bundle 'terryma/vim-multiple-cursors'
let g:multi_cursor_next_key='<C-m>'
let g:multi_cursor_prev_key='<C-p>'
let g:multi_cursor_skip_key='<C-x>'
let g:multi_cursor_quit_key='<Esc'
" to see error location list
let g:syntastic_always_populate_loc_list = 0
let g:syntastic_auto_loc_list = 0
let g:syntastic_loc_list_height = 5
function! ToggleErrors()
let old_last_winnr = winnr('$')
lclose
if old_last_winnr == winnr('$')
" Nothing was closed, open syntastic error location panel
Errors
endif
endfunction
nnoremap <Leader>s :call ToggleErrors()<cr>
" 自动补全单引号,双引号等
Bundle 'Raimondi/delimitMate'
" ################### 快速导航 ###################
"目录导航
Bundle 'scrooloose/nerdtree'
map <leader>n :NERDTreeToggle<CR>
let NERDTreeHighlightCursorline=1
let NERDTreeQuitOnOpen=1
let NERDTreeIgnore=[ '\.pyc$', '\.pyo$', '\.obj$', '\.o$', '\.so$', '\.egg$', '^\.git$', '^\.svn$', '^\.hg$' ]
"close vim if the only window left open is a NERDTree
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | end
" s/v 分屏打开文件
let g:NERDTreeMapOpenSplit = 's'
let g:NERDTreeMapOpenVSplit = 'v'
Bundle 'jistr/vim-nerdtree-tabs'
map <leader>n <plug>NERDTreeTabsToggle<CR>
" 关闭同步
let g:nerdtree_tabs_synchronize_view=0
let g:nerdtree_tabs_synchronize_focus=0
" 标签导航
Bundle 'majutsushi/tagbar'
nmap <leader>tb :TagbarOpen fjc<CR>
let g:tagbar_autofocus = 1
" go语言的tagbar配置
let g:tagbar_type_go = {
\ 'ctagstype' : 'go',
\ 'kinds' : [
\ 'p:package',
\ 'i:imports:1',
\ 'c:constants',
\ 'v:variables',
\ 't:types',
\ 'n:interfaces',
\ 'w:fields',
\ 'e:embedded',
\ 'm:methods',
\ 'r:constructor',
\ 'f:functions'
\ ],
\ 'sro' : '.',
\ 'kind2scope' : {
\ 't' : 'ctype',
\ 'n' : 'ntype'
\ },
\ 'scope2kind' : {
\ 'ctype' : 't',
\ 'ntype' : 'n'
\ },
\ 'ctagsbin' : 'gotags',
\ 'ctagsargs' : '-sort -silent'
\ }
"Golang的gocode
Bundle 'Blackrush/vim-gocode'
" 主题 solarized
"Bundle 'altercation/vim-colors-solarized'
let g:solarized_termtrans=1
let g:solarized_contrast="normal"
let g:solarized_visibility="normal"
"" 主题 molokai
"Bundle 'tomasr/molokai'
"let g:molokai_original = 1
"let g:rehash256 = 1
" theme主题
set background=dark set t_Co=256 colorscheme solarized
九.配置之后的用法:
<span style="font-size:18px;">gg: 文件头 G: 文件尾 nh: 光标向左n个字符 nj: 光标向下n行 nk: 光标向上n行 nl: 光标向右n个字符 y: 复制选中的 yy: 复制一行 ynj: 向下复制n行 ynk: 向上复制n行(复制n+1行) nyy: 可以复制光标后的N行(只复制n行) Y: 复制到行尾 u: 撤销上一次操作 U: 对撤消的撤消 p: 粘贴至光标后 x: 删除后面的字符,删除3个字符就是3x X: 删除前一个字符 dd: 删除一行(光标到下一行) S: 删除一整行(光标留在当前行,变成空行) D: 删除到行尾 wdb: 删除单词,留在命令模式 caw: 改写单词,进入编辑模式 J: 删除换行符,使下一行并上来 nJ: 连接后面的n行 dnj: 向下删除n行 dnk: 向上删除n行 :10,20y : 复制10到20行 :10,20d : 删除10到20行 :10,20 m 30 : 把10行到20行的内容,剪切到30行之后(函数调换方便) :10,20 co 30 : 把10行到20行的内容,复制到30行之后 % : 移动到与制匹配的括号上去 fx: 向右跳到本行字符x处(x可以是任何字符)快速跳转用得到 Fx: 向左跳到本行字符x处(x可以是任何字符)快速跳转用得到 #: 到与当前单词相同的上一个单词上 *: 到与当前单词相同的下一个单词上 b、3b、w、3w: 向前\后移动几个单词,标点也算一个单词 zz、zt、zb: 将当前行滚动于屏幕中间、置顶、置尾 $: 移动到行尾 3$:移动到3行后的行尾 ^: 移动到行首,0也是 +: 移到下一行的行首 -: 移到上一行的行首 :%s/str1/str2/g 替换每一行的 str1为 str2 :10,20s/str1/str2/g 替换从行10到行20之间的 str1为 str2 :10,$s/str1/str2/g 替换从行10到最后一行之间的 str1为 str2 :s/str1/str2/g 替换当前行的 str1为 str2 普通快捷键: ctrl+b\f: 向上\下滚动一屏 Ctrl+v: 可视块模式 ctrl+n: 相对/绝对行号切换 kj 代替<Esc>,不用到角落去按esc了 ; 修改成 : ,一键进入命令行模式,不需要按shift ctrl+a/e 命令行模式中到开始结尾 mapleader前置的快捷键: ,sa 全选 ,r ,b ,te 运行、编译、测试main文件 ,v 选中段落 多光标选中编辑: ctrl+m 开始选择 ctrl+x 跳过 esc 退出 目录插件: ,n 打开树形目录窗口,打开某个文件之后自动关闭插件 q 关闭目录窗口 Tagbar窗口: ,t 打开Tagbar窗口,跳转之后自动关闭Tagbar q 关闭Tagbar窗口 YouCompleteMe插件: ,gd 跳转到函数定义处 行数设定: 命令模式下当前行上下行从1开始递增 这是为了上下跳转方便。 比如: 按7k就能往上跳转7行 按8j就能往下跳转8行 区块伸缩: 视图模式下可伸缩选中部分,用于快速选中某些块 v 增加选中范围 V 减少选中范围</span>
十.效果图:
之后有好的使用方法,会继续更新……
相关文章推荐
- iOS讲解迷惑--Swift中函数的使用
- JSP/Servlet-----6、JSP脚本
- Centos 配置eth0 提示Device does not seem to be present
- SQL Server 使用全文索引进行页面搜索
- 20135323符运锦--------家庭作业3.60
- Android属性动画完全解析(一)
- JSP/Servlet-----5、JSP表达式
- Android ListView滑动过程中图片显示重复错乱闪烁问题解决
- C++中逗号表达式和逗号运算符
- 转: 关于流量控制与令牌桶介绍
- iOS dateformatter设置GMT格式时间--iOS开发系列---项目中成长的知识四
- iOS学习笔记
- android 绘制过程摘要
- SEO介绍(读书笔记)
- JSP/Servlet-----4、JSP声明
- js实现2048小游戏
- 关于工程中Portrait的设置相关
- 迷宫游戏
- 设置libevent
- iOS讲解迷惑--Swift的分支结构和循环