我们在windows环境下使用诸如vscode/vs studio写程序时,tab自动补全变量名/指令非常方便,且可以避免纯手打带来的typo问题等错误,已经成为编程人员高度依赖的友好工具。所以在Linux/集群环境下写程序或者写脚本时,我们自然也希望拥有这个功能,但由于Linux/集群环境的限制,我们不太容易实现vscode上面那样高度智能化的tab补全。经过一番摸索,我们可以使用以下方法,达到一个“半自动化”的补全效果:
到自己的根目录下,打开 .vimrc 文件(如果没有自动新建),输入以下代码并source:
set tabstop=4
set completeopt=preview,menu
function! CleverTab()
if strpart( getline('.'), 0, col('.')-1 ) =~ '^s*$'
return "<Tab>"
else
return "<C-N>"
endif
endfunction
inoremap <Tab> <C-R>=CleverTab()<CR>
简单解释一下,这个代码块的功能就是:当一个脚本文档里出现过某个“字符串”之后,我们可以通过tab来找到它。换句话说,只要你的变量名、代码指令输入过一次之后,你就可以通过tab将其补全。
举个非常简单的例子:
我们需要print一堆东西,我第一次print的时候是:
print *, “hello world”
这个print我需要自己手打
但我第二次需要print的时候,我只需要打个“p”再按tab,它会自动把print补全,因为这是前面出现过的字符串。
那么,如果我又有个变量名叫“pig”,怎么办?这个时候,如果你只打“p”,会提示让你选择,如果你打“pr”,tab会自动补全print
总结:这是一个“半自动化”的补全,它需要我们先手动输入第一次,但后续均可通过tab打出。它的优点是不局限于变量名或者代码的内置命令,只要是手打过的字符串都可以这样找到。