これautocmd
は、an に続くものが ex コマンド (コロンで始まるもの) であるためです。通常モード コマンドの実行をシミュレートするには、 コマンドを使用します
:normal
。<C-O>
問題は、 a ( ではなく
<Ctrl-O>
) を に直接渡すことができないことです:normal
。これは、あまり意味のある通常のコマンドではないリテラル文字 (<、次に C、次に r) と見なされます。次の 2 つのオプションがあります。
1.リテラル ^O 文字を挿入する
を使用controlvcontroloして取得します:
au BufEnter *.pdf normal! ^O
2.:execute
あなたのコマンドを構築するために使用します
このようにして、エスケープされたシーケンスでより読みやすい結果を得ることができます。
au BufEnter *.pdf exe "normal! \<c-o>"
とにかく、これは最も適切なコマンドではありません。<C-O>
ジャンプ リストの前の場所にジャンプするだけなので、バッファは開いたままです。私は次のようなことをします:
au BufEnter *.pdf bdelete
その代わり。それでも、別の解決策があります。
たとえば、マップを使用して別のコマンドを作成しますgO。次に、PDF リーダーを直接使用するかopen
、MacOS X や Darwin を使用している場合のようなユーティリティを使用します (他の Unix システムにあるのか、どのように呼び出されるのかはわかりません)。引数として渡されたファイルのアイコンをダブルクリックするのと同じように、デフォルトの PDF リーダー、または画像など、デフォルトで任意のファイルを開くように構成された他のアプリケーションが開きます。
:nnoremap gO :!open <cfile><CR>
これ<cfile>
は、カーソルの下のファイルに展開されます。そのため、ファイルを Vim で開きたい場合は、gf. デフォルトのアプリケーションで開きたい場合は、 を使用しますgO。
このコマンドがない場合、または PDF のみのソリューションを希望する場合は、希望するコマンドへのマップを作成します。
:nnoremap gO :!FoxitReader <cfile> &<CR>