2015-12-11 2 views
1

Я хочу добавить горячую клавишу, чтобы мой Vim запускать мой питон файлы, так что я добавил следующую строку в мой vimrc:Vimrc autocmd работает команду вместо отображения

autocmd FileType python map <F5> :w|!python3 % 

Но при открытии файла вместо запуская autocmd, он запускает python с моим файлом.

Для меня это ничем не отличается от того, что многие уроки предлагают использовать autocmd и карту, поэтому я хотел бы знать, что именно происходит здесь, а не от того, что я ожидаю.

ответ

1

Ваша команда :map заканчивается на командном разделителе |; оставшаяся часть уже выполняется при запуске :autocmd. Вы должны избавиться от нее (\|), или лучше использовать специальный <Bar> характер:

autocmd FileType python nnoremap <buffer> <F5> :w<Bar>!python3 %<CR> 

Cp. :help map_bar. Также you should use :noremap; он делает отображение неустойчивым к переназначению и рекурсии. И (как предложил @PeterRincker), сделайте буфер отображения локальным, так что он применим только к буферам Python).


Ваш :autocmd FileType подход хорош для нескольких отображений, но это не очень хорошо масштабируется. Если у вас есть :filetype plugin on в вашем ~/.vimrc, вы можете сопоставить наши сопоставления в отдельный скрипт ~/.vim/ftplugin/python_mappings.vim.

+1

Вероятно, лучше всего использовать локальное отображение буфера, а также через ''. См. ': H: map-local'. –

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