В gVim в Windows я хочу отобразить команду в файле vimrc, который использует текущий файл (%). Я пишу что-то вроде:

map <F5> !mycommand %

Но затем, когда gVim загружается впервые, он запускает vimrc и говорит, что не может найти текущий файл, потому что он еще не открыт. Как я могу отобразить это в vimrc, но заставить его анализировать команду% только тогда, когда я нажму F5 (после того, как я открою файл)?

Благодарю.

1 ответ1

2

Вы могли бы сделать

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

shellescape() заставляет экранировать все специальные символы в строке (без пробелов)
expand() расширяет строку, в этом случае текущее имя файла.

Однако карта должна была быть проанализирована только тогда, когда карта была выполнена. Это может произойти, если у вас есть autocmd, который запускает <F5> или это может произойти, если вы использовали map где-то еще и она была выполнена. Было бы лучше использовать версии карты noremap, если вам не нужны рекурсивные отображения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .