私は、(GitHub風味のマークダウン)のファイルをpdfに変換するための小さなvimリーダーのマッピングを書いていました。vim exモードでは、@%は何をしますか?
これらの作業の両方、および機能的に同等であるように見える:
nnoremap <expr> <leader>pdf ':! pandoc -f markdown_github --latex-engine=xelatex ' . shellescape(@%,1). ' -o ' . shellescape(expand('%:r'), 1) . ".pdf \<cr>"
nnoremap <expr> <leader>pdf ':! pandoc -f markdown_github --latex-engine=xelatex ' . shellescape(expand('%'),1). ' -o ' . shellescape(expand('%:r'), 1) . ".pdf \<cr>"
私が働いて最初の1(おかげでスタックオーバーフローを;)だったが、私は本当に最初shellescapeで@%
を理解していませんでした。だから私はexpand('%')
と交換しましたが、もう少し詳しく "取得"します。
誰でもこの違いを説明することはできますか?私は:help :@
を読みましたが、Execute the contents of register as an ex command
については、と表示されていません。はここで起こっているようです。
どのようなヘルプ/ポインタも素晴らしいでしょう!
ありがとうございました。私を混乱させたのは「実行する」部分でした。私のファイルの名前を元のコマンドとして実行すると(私は思ったように)壊れてしまったでしょう。それは実際にはレジスタを "実行"しているのですか、または "実行された"ときにそれ自身を返すだけの特別なものです。 –
'@ 'の表記法は、a)Exコマンド(cmd-lineモード)またはマクロ(通常モード)のように' 'の内容を実行し、b)式の中に「」が含まれています。しかし、私はVimscriptがこのようなあいまいさでいっぱいであることを認めなければなりません。疑わしい場合は、文書の該当するセクションを読んでください。 –
romainl