私は、その初期化で複数の*noremap
操作を実行するプラグインを使用しています。私はYCM/UltiSnipsに次のマッピングを追加した後:私は<Enter>
キーを参照するには、他のプラグインの能力を壊れました、というか私はオーバーライド新しいinoremapシーケンスで以前のinoremapシーケンスを再利用
inoremap <expr> <CR> pumvisible() ? "<C-R>=<SID>ExpandSnippetOrReturn()<CR>" : "\<CR>"
を/元inoremapを破壊しました。私はその機能を有効にしたいが、Enterキーを使ってオートコンプリートメニューからスニペットを選択する機能を無効にしない。このキーマップは、「メニューが表示されている場合はオプションを選択し、それ以外の場合は<Enter>
キーをシミュレートする」と効果的です。代わりに「メニューが表示されている場合はオプションを選択し、そうでなければ何でもコマンドを実行してください」というメッセージが表示されます。<Enter>
キーは既にマップされています。したがって、基本的には、このinoremapの宣言時に、このキー用の既存のinoremapをelseに拡張する必要があります。
私は<C-R>=feedkeys('<CR>')<CR>
と<C-R>=mapcheck('\<CR>', 'i')<CR>
を見ましたが、どちらも動作できませんでした。誰かが私を助けることができますか?
私はこのマップを.vim/after/plugin/に入れています。マップを繰り返し設定するオートコマンド。 –
マッピングされた機能はプラグインの一部ではありません。これは、既存のプラグインマッピングを壊さずに作業したい私のvim設定の一部です。元のプラグイン(これは私が維持していない、またはフォーク/維持したくない)をバンドルすることは、きれいな解決策ではありません。将来、そのプラグインを切り替えることを選択する必要がありますが、私はExpandSnippetマッピングが消えないようにしたいと思います。 vimrcからExpandSnippet関数を削除しても、プラグインを中断しないようにしてください。 –
Steven Luのコメントは正しくです。 _after_ディレクトリは、 '' runtimepath''のどこにでも置くことができます。プラグインの隣にある必要はありません。 'VimEnter'を使うよりもきれいです。また、 '.vimrc'で':runtime plugin/original.vi'を実行して、そこで再マッピングすることもできます。 –