2014-04-21 20 views
16

Tôi hiểu rằng để thực hiện nhiều lệnh trong một dòng, ví dụ như lưu và thực hiện pdflatex, tôi có thể thực hiện các thao tác sau.Ánh xạ một khóa tới nhiều lệnh trong vim

:w | !pdflatex %:t 

Lưu ý rằng %:t cung cấp cho bạn tên tệp hiện tại (không có đường dẫn). Mã này hoạt động tốt trong Vim. Bây giờ, nếu tôi muốn lập bản đồ toàn bộ nội dung trên, hãy nói ctrl + shift + F6, tôi muốn có thể thực hiện một số sau đây

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

Nhưng điều này không hiệu quả và mang lại cho tôi những điều sau lỗi.

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

Điều này có nghĩa là tôi không thể ánh xạ ctrl + shift + F6 đến chức năng mong muốn, lưu và thực hiện pdflatex? Tôi có thể làm gì để giải quyết vấn đề này?

Trả lời

32

Giả sử <C-S-F6> thực sự hoạt động (nó có lẽ sẽ không CLI Vim), bạn phải thoát khỏi quầy bar hoặc sử dụng <bar> thay vì:

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

Xem :help map_bar.

+0

OMG bạn biết điều đó như thế nào !? Cảm ơn nhiều! '' thực sự hoạt động. Tôi không biết CLI Vim là gì. – Ray

+2

Giao diện dòng lệnh Vim, trái với GUI Vim. Tôi biết rằng bởi vì tôi gặp phải vấn đề tương tự, tìm thấy câu trả lời trong tài liệu của Vim và không quên nó. – romainl

Các vấn đề liên quan