2014-04-21 16 views
16

Rozumiem, że w celu wykonania wielu poleceń w jednym wierszu, na przykład zapisz i wykonaj pdflatex, mogę wykonać następujące czynności.Odwzorowywanie jednego klawisza na wiele poleceń w vim

:w | !pdflatex %:t 

Zauważ, że %:t daje aktualną nazwę pliku (bez ścieżki). Ten kod działa dobrze w Vimie. Teraz, jeśli chcę map całość wyżej, powiedzmy CTRL + SHIFT + F6, chciałbym być w stanie wykonać następujące

:nnoremap <C-S-F6> :w | !pdflatex %:t<CR> 

Ale to nie działa i daje mi następujące błąd.

:!pdflatex paper.tex<CR> 
/bin/bash: -c: line 0: syntax error near unexpected token `newline' 
/bin/bash: -c: line 0: `pdflatex paper.tex<CR>' 

Czy to znaczy, że nie mogę na mapie CTRL + SHIFT + F6, aby przejść do żądanej funkcji, zapisywać i wykonywać pdflatex? Co mogę zrobić, żeby to obejść?

Odpowiedz

32

Zakładając <C-S-F6> faktycznie działa (prawdopodobnie nie będzie w CLI Vima), trzeba uciec pasek lub użyj <bar> zamiast:

:nnoremap <C-S-F6> :w \| !pdflatex %:t<CR> 
:nnoremap <C-S-F6> :w <bar> !pdflatex %:t<CR> 

Zobacz :help map_bar.

+0

OMG skąd o tym wiesz? Dziękuję Ci bardzo! "" rzeczywiście działa. Nie wiem, co to jest CLI Vim. – Ray

+2

Interfejs wiersza poleceń Vim, w przeciwieństwie do GUI Vim. Wiem, że ponieważ napotkałem ten sam problem, znalazłem odpowiedź w dokumentacji Vima i nie zapomniałem o tym. – romainl

Powiązane problemy