1

ファイル を編集しているときにマップ<D-1>したい。<-R

私は最初に編集~/.vim/bundle/Vim-R-plugin/ftdetect/r.vimして追加しました:

inoremap <D-1> <space><-<space>

ただし、すべてのタイプのファイルを編集しているときに利用できました-テスト.pyして、.vimrc.

なぜこれが起こるのですか?

問題を解決するために、次を追加しました。

autocmd FileType r inoremap <D-1> <space><-<space>

私に.vimrc。mvim を最初に開いたときはマップが表示されませんが、ファイルを開く*.rと、他のすべてのファイルのマッピングが存在します。

何が起こっているのかをテストするために、次のように追加しました。

autocmd FileType python inoremap <D-1> <space>==<space>

どちらのタイプのファイルもロードしていない場合、<D-1>マップされていないことがわかりました。*.rファイルをロードしたとき、それは(必要に応じて)ファイルと他のすべて<D-1>のファイルで私を与えました-そして次にファイルを開いたとき、それはすべてのファイルで生成されました-ファイルを含みます。 <-*.r*.py<D-1>==*.r

実験してみると、最近開いたファイルの種類がマッピングを定義することがわかりました。これは、複数のファイル タイプを編集する場合に望ましくない動作です。

この問題に対するベストプラクティスの解決策は何ですか?

MacVim を使用し、バンドルを vundle で管理しています。

4

2 に答える 2

2

sylvain.joyeux が彼の回答で述べたように、マッピングには「ftplugin」ディレクトリを使用する必要があります。しかし、これはマッピングの問題を解決しません。マッピングがすべてのバッファーで使用できる理由<D-1>は、すべてのバッファーに対して (グローバルに) マッピングを定義するためです。特定のバッファへのマッピングを制限したい場合は、コマンド<buffer>の特別な引数を使用する必要があり:mapます。したがって、マッピング コマンドは次のようになります。

inoremap <buffer> <D-1> <space><-<space>

詳細:help :map-<buffer>については、を参照してください。

于 2012-08-19T07:16:32.763 に答える
0

ftdetect ディレクトリは、ファイル自動検出コマンドを登録するファイルを保持するためのものです。つまり、通常は次の形式です。

au BufNewFile,BufRead *.antlr setf antlr

ftplugin ディレクトリは、探していたものです。ただし、ここに r.vim を追加しても、グローバルに利用可能な R プラグインがオーバーライドされないかどうかはわかりません (存在する場合、それについてはわかりません)。

于 2012-08-19T06:47:57.350 に答える