Сопоставление одного ключа с несколькими командами в vim

Я понимаю, что для выполнения нескольких команд в одной строке, например save и execute pdflatex, я могу сделать следующее.

:w | !pdflatex %:t

Обратите внимание, что %:t дает вам текущее имя файла (без пути). Этот код отлично работает в Vim. Теперь, если я хочу отобразить все выше, скажем, ctrl + shift + F6, я бы хотел сделать следующее

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

Но это не работает и дает мне следующую ошибку.

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

Означает ли это, что я не могу сопоставить ctrl + shift + F6 с желаемой функцией, сохранить и выполнить pdflatex? Что я могу сделать, чтобы обойти это?

Ответы

Ответ 1

Предполагая, что <C-S-F6> работает (это, вероятно, не будет в CLI Vim), вы должны выйти из панели или вместо этого использовать <bar>:

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

См. :help map_bar.