vim小技巧总结
一直在使用vim开发,无论是前端还是后端,甚至是写笔记也用的vim模式。遂总结一些使用过程中的小技巧。
vim使用时需要频繁地在不同模式间切换,Esc
距离稍远,不太方便,建议用Ctrl+[
替代Esc
,并交换Tab
键和Ctrl
键的绑定。方便在编辑模式和normal模式切换。
维护一个vimrc,通过同步vimrc文件,可立即还原熟悉的开发配置。
推荐安装插件
- dense-analysis/ale:提供语法检查、自动格式化等功能。
- kien/ctrlp.vim:快速文件名搜索。
- junegunn/fzf.vim:集成各种内容搜索工具: Ag, ripgrep等。
快速运行正在编辑的源文件
开发中,经常要做冒烟测试,修改后快速运行,查看效果。通过配置,在normal模式下,先后按下,
和r
,可以运行当前源文件。具体配置如下:
" 更改命令引导符
let mapleader = ','
let g:mapleader = ','
" 根据文件类型绑定快速执行命令
au FileType sh nmap <leader>r :w !sh<CR>
au FileType go nmap <leader>r <Plug>(go-run)
au FileType python nmap <leader>r :exe "!python -m" shellescape(substitute(expand('%:r'), '/', '.', 'g'))<CR>
" au FileType python nmap <leader>r :!python %:p<CR>
au FileType javascript nmap <leader>r :w !node --experimental-modules<CR>
以上配置中,根据源文件的类型,将,r
绑定到不同的命令,对shell文件,会绑定到:w !sh
,实现运行shell脚本文件。对golang文件,绑定到go-run
命名,此命令由插件提供。对python文件,配置中有有两种写法,第一种方法,通过module的方式执行当前文件,第二种方法,将文件内容直接输入给python解释器,第一种有更好的适应性,第二种,在没有复杂的import路径时,也是基本可用的。对node文件,也是将文件内容直接输入给node解释器。
快速移动
目标在显示区域外的移动,使用Ctrl-f
和Ctrl+b
。目标在屏幕中后,使用H
,M
,L
快速移动到目标附近。剩下的可以通过h
,j
,k
,l
,w
,b
,0
,$
等来完成。
另外,强烈建议开启显示相对行号,通过set relativenumber
,可以配置在vimrc中。开启此配置后,编辑器显示的行号,是相对光标位置的行号。这样通过行数移动会比较方便。
如果一行中有比较容易识别的标记字符,通过f
,F
,t
,T
,也可以实现极快速的移动。
快速全局搜索
开发过程中,经常需要在项目中搜索关键词(变量、函数、类名等),了解相关的使用情况。通过以下配置:
" search current word use Rg
vmap <space> "xy:Rg <C-r>x<CR>
在visual模式中,选中关键词,并按空格键,即能通过Rg
在当前目录中搜索目标词。
复制到系统剪贴板
vim中yank默认不会到系统剪贴板,寄存器*
代表的系统剪贴板,可以通过"*y
的方式复制到系统剪贴板,需要3个键,相对麻烦,可以在vimrc中配置:
vmap <leader>y "*y
这样,在visual模式中,通过,y
即可复制到系统剪贴板。
如果有什么好用的vim小技巧,希望能不吝分享。