Vim
Published: 2020-02-08 | Lastmod: 2020-11-13
安装 #
cd ~
git clone git@github.com:nuhuo08/MyVimrc.git
mv MyVimrc .vim_mengqi
ln -s .vim_mengqi/.vimrc .vimrc
ln -s .vim_mengqi/.ackrc .ackrc
# ln -s .vim_mengqi/.bash_aliases .bash_aliases
cd .vim_mengqi
mkdir -p cache plugged temp_dirs/undodir
vi
:PlugInstall
#NOTE: You may need to run the command below for several times. Since downloading submodules may fail.
cd ~/.vim_mengqi/plugged/YouCompleteMe
git submodule update --init --recursive
#NOTE: YCM donot support python2.7 any more. For Ubuntu 16.04, checkout 9309f77
git checkout 9309f77
python3 install.py --clang-completer
常用快捷命令 #
,w 保存
,nn 打开文件浏览树
,nf 将文件浏览树定位到当前文件
,tb 打开函数列表
,f 查找工程文件
,j 最近编辑文件列表
,g 开始查找某字符串
,r 替换visual选中的字符串
gv 查找visual选中模式下的字符串
gcc 注释
ga*| 以|符号对选中的多行进行对齐
ctrl+n 开始多光标模式
ctrl+x 多光标模式,跳过当前词
ctrl+p 多光标模式,回到上一次选中词
,q 打开quickfix窗口
,n 下一个quickfix记录
,p 上一个quickfix记录
alt+p 粘贴上一个剪切板内容
alt+m 粘贴下一个剪切板内容
g] 跳转到tag
,,w 高级的移动模式
ctrl+d 窗口翻页
ctrl+u
ctrl+f
ctrl+b
zt 当前行在窗口的位置
zz
zb
* 查找并高亮字符串
#
,m 删除^M符号
gt 下一个tab
gT 上一个tab
2gt 第二个tab
]c 跳到下一处Git修改处
[c
,hs git stash
,hu git undo
,hp git preview
,d toggle gitgutter
ma 设置书签a
`a
'a
Vim的配置 #
vim有强大的可扩展性,请参考Learn Vimscript the Hard Way。
~/.vim_mengqi/vimrc/
文件夹下面时候个人定制的很多配置项,熟悉以后可以自定义很多快捷的操作。
Basic Settings
set
用于配置基本的vim属性。例如,设置下面命令,可以在vim中使用鼠标。
set mouse=a
map
用于映射快捷键。例如,下面的命令,可以使用<C-j>
映射<C-W>j
,实现在窗口中跳转。
map <C-j> <C-W>j
map
的变体有多种,例如vnoremap
可以在visual模式下映射一些命令。
Extended Settings
fun! CleanExtraSpaces()
let save_cursor = getpos(".")
let old_query = getreg('/')
silent! %s/\s\+$//e
call setpos('.', save_cursor)
call setreg('/', old_query)
endfun
if has("autocmd")
autocmd BufWritePre *.txt,*.js,*.py,*.wiki,*.sh,*.h,*.c,*.cpp,*.m :call CleanExtraSpaces()
endif
可以自定义函数CleanExtraSpaces
,可以使用autocmd
自动运行,BufWritePre
则表示在写入buffer之前做一些操作。
上面这段脚本,可以自动清除txt
等文件末尾多余的空白符。
Plugin Settings
使用了Plug
作为插件管理器,插件可以扩展vim的功能,使编辑更为高效。
call plug#begin('~/.vim_mengqi/plugged')
Plug 'tpope/vim-fugitive',
Plug 'airblade/vim-gitgutter'
call plug#end()
上面的命令,为vim添加了两个插件的git仓库,运行:PlugInstall
,就可以安装好相应的两个插件。
插件可以配置相对应的快捷键,例如:
let g:gitgutter_enabled=1
let g:gitgutter_diff_args = '-w'
set updatetime=100
nnoremap <silent> <leader>d :GitGutterToggle<cr>
启动gitgutter插件;忽略空白字符的修改;更新时间为100ms;使用,d
启动或关闭该插件的功能。
其他 #
Add flag to CMakeList.txt: -DCMAKE_EXPORT_COMPILE_COMMANDS=1
: YouCompleteMe就可以自动识别到所需要的代码文件了。
此功能由.ycm_c-c++_conf.py提供。
cd --
:可以看到terminal里面cd的目录历史。此功能由acd_func.sh提供。
Next: Path Planning
Previous: Git