質問
驚くべきことに、vim を使いこなせるようになると、Eclipse などの標準 IDE よりも高速にコーディングできるようになります。しかし、私が本当に見逃しているのは、コード補完、特に長い変数名や関数の場合です。
vim で Perl のコード補完を有効にする方法はありますか?
解決
Ctrl-P (前の一致を取得) および Ctrl-N (Get Next Match) は一種の疑似コード補完です。基本的にファイルを検索します(逆方向) Ctrl-P, 、転送先 Ctrl-N)入力している内容で始まる単語を編集し(開いているバッファー、および TAG ファイル内で TAGS を使用している場合は何か)、ドロップダウン リストを追加します。インテリセンスではない場合でも、変数や関数名については驚くほどうまく機能します。一般的に私が使用するのは Ctrl-P 探している変数または関数は通常、コードの後ろにあるためです。また、Vim の同じコピーを開いたままにしておくと、以前に開いたファイルが検索されます。
他のヒント
Vim 7 はオムニ補完をサポートしています。
たとえば、vimrc にこれがあります
autocmd FileType php set omnifunc=phpcomplete#CompletePHP
そして、私が押すと Ctrl-x Ctrl-o 挿入モードでは、オートコンプリートの可能性のドロップダウン リストが表示されます。
ここはオムニファンクションです パール用. 。ただし、それがどれほどうまく機能するかはわかりません。
Vim の一般的な補完メカニズムは驚くほど優れており、挿入モードで Ctrl-N を使用するだけです。また、C-x C-l を使用した行補完も非常に便利です。
こちらもチェックしてください Perl 用の vim スクリプト.
標準 CTRL-N
そして CTRL-P
以下を ~/.vim/ftplugin/perl.vim ファイルに追加すると、さらにうまく機能します。
iskeyword+= を設定:
その後、モジュール名などが自動補完されます。
他の回答の 1 つにある .vimrc クリップは少し間違っています。Tab キーをオートコンプリート キーに変えるには、次のコードを使用します。
inoremap <tab> <c-r>=InsertTabWrapper()<cr>
function! InsertTabWrapper()
let col = col('.') - 1
if !col || getline('.')[col - 1] !~ '\k'
return "\<tab>"
else
return "\<c-p>"
endif
endfunction
これや他のたくさんの vim トリックを見つけることができます Perlmonks のこのスレッドで--さらに多くのカスタマイズを備えたさらに多くのスレッドにリンクします。
SuperTab プラグインを確認してください。http://www.vim.org/scripts/script.php?script_id=1643^N と ^P の代わりにタブとシフトタブを使用して補完 (OmniCompletion または通常の補完のいずれか) を行うことができます。
Ctrl+N
これについては、パッケージ補完の方法とともに Perl Hacks 本で説明されています。強くお勧めします。