webdevqa.jp.net

Vimの自動終了ブラケット

ブラケット( '{}'、 '[]'、 '()')を自動的に閉じ、(少なくとも '{}'の場合)キャリッジリターンを挿入するVim 7.4用のWORKINGプラグインはありますか?

私はこの質問が何度も聞かれたことを知っていますが、vim 7.4でうまくいかないようであるか、プラグインが更新されていないか、何かがありません。

これまでのところ、vim-smartinput、autoclose、delimitmateを試してみましたが、プラグインを有効にしているとアクティブになっているように見えますが、これらのどれも終了文字を挿入できませんでした。これらのプラグインを何らかの形で壊すvimの変更があったかどうかはわかりません。これらのプラグインはどれも、少なくとも1年は更新されないようです。 vim 7.4で動作する実用的なソリューションはありますか?

38
Dago

プラグインがどれも私にとってうまくいかないように思えた理由を見つけたので、私は自分の質問に答えています。問題はvimのmksession機能に関連しているようです。保存されたセッション内でこれらのプラグインのみを試していましたが、何らかの理由でプラグインが何らかの理由で機能しないようです。プラグインはインストールされ、正常に「動作」しているようです(プラグインからのコマンドが見つかった場合など)。保存されたセッションを開かずに、少なくともdelimitMateが機能し始めました。

3
Dago

バニラvimを必要とする私たちにとって:

inoremap " ""<left>
inoremap ' ''<left>
inoremap ( ()<left>
inoremap [ []<left>
inoremap { {}<left>
inoremap {<CR> {<CR>}<ESC>O
inoremap {;<CR> {<CR>};<ESC>O

set pasteが設定されていない場合、insertモードでのこのオートコンプリート。毎回入力しないようにvimrcに保持し、マッピングが必要ない場合は、次を使用してエスケープする必要があります。 ctrl + v ( {などのようなマッピングされた文字を入力する前.

92
dlmeetei

UbuntuのVim 7.4.131でPathogenを使用して、 ClosePairsAutoCloseDelimitMate および AutoClose をテストしました。

驚くことではありませんが、それらはすべて機能します。

「7.4で動作する自動終了プラグイン」を検索していないため、質問は言い換える必要があります。あなたが尋ねるべきことは、「ここに私のセットアップがあります。なぜ「自動クローズ」プラグインがどれも私のために機能しないのですか?」です。

「これは混乱です。まず、行95の前のすべてをコメント化することから始めてください。」

また、Vimは非常に安定した環境です。「積極的に作業されていない」ということは、「試す価値がない」という意味ではありません。実際、まったく逆です。

33
romainl

に投票する delimitMate 怒っているmodが意見に基づいているという質問を閉じる前に。

26
krystah

新しい候補の追加: lexima というプラグインがあります。 2014年10月に導入されたため、かなり新しいものです。著者によると、高いカスタマイズ性とドット繰り返し性が特徴です。 Rubyのようにdef-endペアを自動的に閉じるようにカスタマイズすることもできます。

日本で開催された VimConf の著者による プレゼンテーション は、自動クローズ機能を実現するさまざまな方法を比較しています。

13
Yosh

xptemplate は、ブラケット/ブレース/などを自動補完するオプションを含むスニペットプラグインです。インストールして設定する

let g:xptemplate_brace_complete = '([{'

あなたの.vimrc。同じ行から始まりますが、Enterキーを押すと、正しい位置に配置されます。

2
Conner