2016-01-04 2 views
0

В моем ~/.vimrc, у меня есть, если заявление, которое должно определить, есть ли открытый файл питон файл или нет:Vim Filetype, если оператор не работает

if (&ft=='python') 
    map <F9> <esc>:w<enter>:!python3 '%'<enter> 
endif 

Цель состоит в том, чтобы привязать команда выполнения python для F9, если файл является файлом python, но когда я нажимаю F9 в файле .py, ничего не происходит. Я вынул заявление if, и это сработало. Что происходит не так?

ответ

1

Try что-то подобное вместо:

au FileType python map <buffer> <F9> <esc>:w<bar>!python3 '%'<cr> 

Ваш .vimrc конфигурационный файл запускается только один раз при запуске. Поэтому, если вы на этот раз поставили тест if, это не сработает, потому что в настоящее время не редактируется файл python.

Но вы можете использовать .vimrc для установки в автоматического поведение: то, что vim будет делать каждый раз, когда он будет сталкиваться особое состояние. Условие может быть в вашем случае: «Новый файл редактируется, а его тип файла -« python ». См :h :au

В таких случаях, как ваша, это полезно добавить параметр <buffer> в команде :map: он ограничивает сферу вашего отображения только текущего буфера: так что, когда вы будете нажимать F9 на непитоновские буфера , отображение не будет тригером.

EDIT:
В моем первом ответе, я также удалил <esc> в вашей команде, но может быть, я неправильно об этом, потому что это может вызвать проблемы в визуальном режиме, так что я положил его снова. Вы должны проверить его в визуальном режиме, я этого не делал.

+0

Спасибо, что сработало. Но знаете ли вы, что случилось с моей версией? – Vityou

+0

Пожалуйста, посмотрите мое редактирование – yolenoyer

Смежные вопросы