Ich schrieb ein kleines vim leader mapping, um eine Datei in (GitHub aromed markdown) in ein PDF zu konvertieren.Im vim ex-Modus, was macht @%?
Beide dieser Arbeit, und scheinen funktional äquivalent zu sein:
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>"
Ich hatte die erste Arbeit (dank Stack-Überlauf;) aber ich habe nicht wirklich verstehen, die @%
im ersten shellescape. Also habe ich es durch die expand('%')
ersetzt, die ich ein bisschen "bekomme".
Kann jemand den Unterschied erklären, oder sogar wohin man geht, um nachzusehen? Ich habe gelesen :help :@
, aber es spricht über Execute the contents of register as an ex command
, die nicht scheint zu sein, was hier passiert.
Jede Hilfe/Zeiger wäre großartig!
Danke dafür. Es war der "execute" -Teil, der mich verwirrte. Wenn ich den Namen meiner Datei als ex-Befehl ausführte, hätte ich (glaube ich) kaputte Dinge. Wird das Register tatsächlich "ausgeführt" oder ist das Register "%" ein besonderes, wenn es "ausgeführt" wird, kehrt es sich selbst zurück? –
Die Schreibweise '@' wird für zwei Dinge verwendet: a) führe den Inhalt von '' so aus, als wäre es ein Ex-Befehl (im cmd-line-Modus) oder ein Makro (im normalen Modus) und b) benutze den Inhalt von '' in einem Ausdruck. Aber ich muss zugeben, Vimscript steckt voller Zweideutigkeiten wie dieser. Im Zweifelsfall lesen Sie den entsprechenden Abschnitt des Dokuments. –
romainl