vim - set complete+=k[file] not working for whole line completion? -
i have ~/.bash_history
contains lines such sudo apt-get install
, aplay foo.wav
, etc. thought convenient if use these lines completing whole lines while writing shell scripts.
:h compl-whole-line
says:
ctrl-x ctrl-l
search backwards line starts same characters in current line before cursor. indent ignored. matching line inserted in front of cursor. ** 'complete' option used decide buffers searched match. both loaded , unloaded buffers used.**
note asterisks inserted. :h 'complete'
says:
k k{dict} scan file {dict}. several "k" flags can given, patterns valid too. example: > :set cpt=k/usr/dict/*,k~/spanish
so thought :set complete+=k~/.bash_history
job. didn't.
start vim with
$ vim -u none -n
then
:set complete+=k~/.bash_history :set complete? " complete=.,w,b,u,t,i,k~/.bash_history
, enter insert mode (i
), , when type
su<c-x><c-l>
, vim says whole line completion (^l^n^p) pattern not found
. completion working words, when type
su<c-p>
sudo
suggested.
what missing? how can use history whole line completion without :sp ~/.bash_history
?
set complete+=k[file]
has nothing line completion: whatever file give used source dictionary completion (<c-x><c-k>
) , keyword completion (<c-n>
/<c-p>
).
:help i_ctrl-x_ctrl-l
clear: line completion works lines found in loaded , unloaded buffers. since ~/.bash_history
not loaded buffer, line completion never use source.
so yes, practical solution load file.
:sp ~/.bash_history
not optimal, though, because a) takes room, both physically , in buffer list, , b) requires way many keystrokes.
the "too room" part of problem solved more suited command:
:badd ~/.bash_history
the "too many keystrokes" part of problem solved autocommand runs command above each time edit shell script:
augroup shell autocmd! autocmd bufnewfile,bufread *.sh badd ~/.bash_history augroup end
Comments
Post a Comment