2014-04-21 12 views
16

Capisco che per eseguire più comandi in una riga, ad esempio salvare ed eseguire pdflatex, posso eseguire le seguenti operazioni.Mappatura di una chiave a più comandi in vim

:w | !pdflatex %:t 

Si noti che il %:t ti dà il nome del file corrente (senza percorso). Questo codice funziona bene in Vim. Ora, se voglio mappare il tutto sopra per, diciamo CTRL + MAIUSC + F6, mi piacerebbe essere in grado di effettuare le seguenti operazioni

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

Ma questo non funziona, e mi ha pronunciato la seguente errore.

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

Significa questo che non riesco a mappare CTRL + MAIUSC + F6 per la funzione desiderata, salvare ed eseguire pdflatex? Cosa posso fare per aggirare questo?

risposta

32

Supponendo <C-S-F6> effettivamente funziona (probabilmente non in CLI Vim), si deve sfuggire al bar o utilizzare <bar> invece:

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

Vedi :help map_bar.

+0

OMG come lo sapevi !? Grazie mille! Il '' funziona davvero. Non so cosa sia CLI Vim. – Ray

+2

Interfaccia a riga di comando Vim, al contrario di GUI Vim. Lo so perché ho incontrato lo stesso problema, ho trovato la risposta nella documentazione di Vim e non me ne sono dimenticato. – romainl

Problemi correlati