gvim: Ánh xạ một lệnh sử dụng tên tệp hiện tại (%) trong vimrc


0

Trong gVim trong windows, tôi muốn ánh xạ một lệnh trong tệp vimrc sử dụng tệp hiện tại (%). Tôi viết một cái gì đó như:

map <F5> !mycommand %

Nhưng sau đó, khi gVim tải lần đầu tiên, nó chạy vimrc và nói rằng nó không thể tìm thấy tệp hiện tại, vì nó chưa được mở. Làm cách nào tôi có thể ánh xạ cái này trong vimrc, nhưng làm cho nó phân tích lệnh% chỉ khi tôi nhấn F5 (sau khi tôi đã mở tệp)?

Cảm ơn.

Câu trả lời:


2

Bạn có thể làm

map <F5> !mycommand shellescape(expand('%'))<CR>

shellescape()làm cho thoát khỏi tất cả các ký tự đặc biệt trong chuỗi (ex space)
expand()mở rộng chuỗi trong trường hợp này là tên tệp hiện tại.

Tuy nhiên, bản đồ chỉ nên được phân tích cú pháp khi bản đồ được thực thi. Điều này có thể xảy ra nếu bạn có một autocmd chạy <F5>hoặc Điều này có thể xảy ra nếu bạn sử dụng mapở một nơi khác và điều đó đã được thực thi. Sẽ tốt hơn nếu sử dụng các phiên bản noremap của bản đồ trừ khi bạn muốn ánh xạ đệ quy.


Vấn đề là tôi đã sử dụng một đường ống khi tôi không nên có, vì vậy dù sao nó cũng đã bị xử lý ...
yoki
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.