Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

Vimで定型文の補完を行う簡易な方法(2)

$
0
0

問題

以前の投稿 Vimで定型文の補完を行う簡易な方法にて、任意のテキストファイルから補完するスクリプトを紹介した。
紹介したスクリプトは単純であるが、候補表示してからタグのような <を入力するとポップアップメニューが消えてしまい、不便であった。
そこで、カーソル位置の直前にある文字列(空白またはタブ区切り)で絞り込むように修正したので、紹介しておく。

対処

以下を、~/.vimrcに追加する。

function! s:CompleteFrom(files)
  let pos = col('.') - 1
  let line = getline('.')
  let start = pos
  while start >0 && line[start - 1] !~ '[ \t]'    let start -= 1
  endwhile
  let word = strpart(line, start, pos - start)
  let lines = []
  for f in a:files
    let inputfile = expand(f)
    for line in readfile(inputfile)
      if line =~ '^'.word
        call add(lines, line)
      endif
    endfor
  endfor
  call complete(start + 1, lines)
  return ''
endfunction

inoremap <F10><C-R>=<SID>CompleteFrom(["$HOME/mydict.txt"])<CR><C-P>
nnoremap <F10>i<C-R>=<SID>CompleteFrom(["$HOME/mydict.txt"])<CR><C-P>
inoremap <F11><C-R>=<SID>CompleteFrom(["$HOME/mydict2.txt", "$HOME/mydict3.txt"])<CR><C-P>
nnoremap <F11>i<C-R>=<SID>CompleteFrom(["$HOME/mydict2.txt", "$HOME/mydict3.txt"])<CR><C-P>

仕様については、以前の 投稿を参照してください。


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>