在VIM中调用外部命令并显示结果
作为vim的重度用户,在迫不得已的时候都不想从vim切换到其它应用(甚至是终端都不想,如windows下的cmd/linux下的bash),就像手不想离开键盘去拿鼠标一样。
于是我写了一个插件叫k.vim,这个插件最初的目的是在vim里调用一个命令行字典工具kv查询某个英文单词,然后把查询结果显示在vim中。
后来发现我需要经常测试某种脚本语言如php/python/javascript等的某种用法。
通常的做法是
-
用vim写一个脚本文件如test.php,test.py,test.js等。
-
打开终端,执行
php test.php
,python test.py
,node test.js
等。 -
回到vim修改脚本,再回到终端测试。如此反复。
使用方法
有了k.vim,你打开vim,写一段脚本,甚至不需要保存,只需设置文件类型,如
:Ft pyt<tab>
or
:set filetype=python
然后按键<leader>r
,该段脚本的执行结果就会显示在一个vim的scratch(:help special-buffers
)窗口。
autocmd FileType python nnoremap <buffer> <leader>r :call k#RunMe('python', 'botri 10', "")<CR>
你可以按键<space><leader>
关闭对应的scratch窗口。
nnoremap <silent> <space><leader> :call k#CloseConsole()<CR>
如果已经安装过kv,可以按键<leader><leader>
获得光标所在单词的解释。
演示如下图
其它命令
:Ri <command> 执行vim命令,并把结果显示在当前buffer,如:Ri version。
:Rc <command> 执行vim命令,并把结果显示在相应的scratch窗口,如:Rc verbose map。
:Ri !<command> 执行外部命令,并把结果显示在当前buffer,如:Ri !ls。
:Rc !<command> 执行外部命令,并把结果显示在相应的scratch窗口,如:Rc !dir。
安装
Bundle 'brookhong/k.vim'
或者,把k.vim放到.vim/plugin即可。
如果你也是ctrlp.vim的用户,推荐看看通过vim快速启动程序
如果你需要字典查询功能,按以下步骤安装kv:
- 编译kv, Windows 可以直接下载.
- 把kv(或者kv.exe)放到环境变量PATH包含的某个目录,如/usr/local/bin,C:\Windows\system32
-
下载或创建你自己的字典,并告诉vim你的字典放在哪里,设置按键
" the plugin will scan this directory to create key mapping globally or specially for some type of file. let g:kdbDir = $HOME.'/kdb' " when press `<leader>,`, will translate word under the cursor, works for all kinds of files. let g:globalDBkeys = { \ 'oxford' : '<leader>,', \ } " when press `K` in normal mode or `C-j` in insert mode, will get referrence of function under the cursor, works for php file or C file. " for file-type dictionaries, the folder must be named same as the file type. let g:localDBkeys = { \ 'php' : ['K', '<C-j>'], \ 'c' : ['K', '<C-j>'], \ }