1

MS WindowsでLaTeXドキュメントを操作するときに、逆検索(pdfからVimへ)を行うこの機能があります:

function! ViewTex()
    if has('win32') || has('win64')
        let execstr = 'silent! !start SumatraPDF -reuse-instance '.
                    \ '-inverse-search "gvim --remote-silent +\%l \%f"'.
                    \ '%:p:r.pdf'
    endif
    exec execstr
endfunction

これは、閉じた折り目が開かないことを除いて、うまく機能します。だから私の質問は:normal zvコマンドをに渡す方法は--remote-silent? 私は(成功せずに)次のことを試しました:

"gvim --remote-silent +\%l|normal\ zv \%f"
4

2 に答える 2

1

最初の試みに戻ると、ほとんどの場合、Windows の cmd.exe シェルは「\」を使用して何もエスケープしません。したがって、スペースをバックスラッシュでエスケープするのではなく、init コマンドを引用符で囲む必要があると思います。また、 によると:help --remote、init 内のコマンドは、次の「|」を使用できる必要があります。コマンドで囲まないと意味normalが働きません。executeしたがって、あなたの場合、最終的には次のようなものをシェルで実行する必要があります。

gvim --remote-silent +"%l|exe 'normal! zv'" %f(引用符が含まれています)

しかし、これで %1 と %f を希望どおりに展開できるかどうかはわかりません。

編集:

または、foldopen!代わりに使用exe 'normal! zv'して、スペースの必要性を回避したりexe、まったく使用したりしません。ただし、これは実際にはzv;だけでなく、より多くの折り畳みを開くことに注意してください。多分それはあなたにとって大丈夫です。

あなたのコメントから、使用しているどのプラットフォームでも「%」文字をバックスラッシュでエスケープする必要があるようです。

gvim --remote-silent +\%l|foldopen! \%f

于 2013-09-16T03:12:56.027 に答える
1

編集: 以下の説明は少し間違っていますが、方法は適切です。--remoteこのファミリがオプションの「init」コマンド引数を取ることを見逃していました。これはコマンドの一部であり、--remote-silentgvim の新しい引数ではありません。以下の説明は、それが gvim の新しい引数であった場合に当てはまります。


+...問題は、実際にファイルを編集する Vim ではなく、リモート ファイルを送信するために実行する Vim もコマンドを実行することです。,の後に--remote-sendまたはを使用して、ファイルのロード後に実行する必要があるコマンドを送信してみてください。--remote-expr--remote-silent

つまり、次のようなものです。

gvim --remote-silent myfile
gvim --remote-send zv
etc.
于 2013-09-11T04:25:49.273 に答える