ʕ•ᴥ•ʔ RUNNINGJ

vim小技巧总结

一直在使用vim开发,无论是前端还是后端,甚至是写笔记也用的vim模式。遂总结一些使用过程中的小技巧。

vim使用时需要频繁地在不同模式间切换,Esc距离稍远,不太方便,建议用Ctrl+[替代Esc,并交换Tab键和Ctrl键的绑定。方便在编辑模式和normal模式切换。

维护一个vimrc,通过同步vimrc文件,可立即还原熟悉的开发配置。

推荐安装插件

快速运行正在编辑的源文件

开发中,经常要做冒烟测试,修改后快速运行,查看效果。通过配置,在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-fCtrl+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小技巧,希望能不吝分享。

#工具