Я добавил 4 следующие строки в свой файл vimrc, чтобы добавить ярлыки (чтобы запустить текущий буфер * .html в браузере и запустить текущий файл * .js в узле):

autocmd filetype html map <C-S-F10> :sav %<CR>:! chromium-browser %<Enter>
autocmd filetype html inoremap <C-S-F10> <Esc>:sav %<CR>:! chromium-browser %<Enter>
autocmd filetype javascript map <C-S-F10> :sav %<CR>:! node %<Enter>
autocmd filetype javascript inoremap <C-S-F10> <Esc>:sav %<CR>:! node %<Enter>

Он прекрасно работает, когда у меня открыты только HTML-файлы или только файлы JavaScript. Но когда у меня есть какая-либо комбинация этих типов файлов, открытых в разных буферах (с использованием вкладок), и я хочу открыть файл HTML в браузере и нажать Ctrl+Shift+F10, мой файл HTML переходит в узел, что вызывает ошибку компиляции.

Прогресс:

Когда я :set filetype тип файла, он говорит html для * .html и javascript для * .js файлов. Так что проблема не в неправильном типе файла.

Я попытался установить сочетание клавиш Alt+Shift+F10 для открытия в браузере, и это как-то решает мою проблему. Теперь, когда оба типа файлов плюс файлы без типа открыты одновременно, я могу открыть любой (html, js и обычный текст) тип файла в браузере с помощью Alt+Shift+F10 и отправить его на узел для компиляции с помощью Ctrl+Shift+F10. Почему так происходит?

Вот мой файл vimrc . Версия Vim 7.4

1 ответ1

0

Вам лучше добавлять плагины файловых типов в секцию after вашего пользовательского каталога vim runtime и определять там свои отображения без использования autocmd .

Например, в ~/.vim/after/ftplugin/html.vim вы бы поместили свои HTML-отображения, а ~/.vim/after/ftplugin/javascript.vim для JavaScript-отображений.

Однако это не решит вашу проблему. Вы должны сделать ваши отображения буфера локальными. Попробуйте это для HTML-буферов:

map <buffer> <C-S-F10> :sav %<CR>:! chromium-browser %<Enter>
inoremap <buffer> <C-S-F10> <Esc>:sav %<CR>:! chromium-browser %<Enter>

И это для буферов JavaScript:

map <buffer> <C-S-F10> :sav %<CR>:! node %<Enter>
inoremap <buffer> <C-S-F10> <Esc>:sav %<CR>:! node %<Enter>

Увидеть:

:help :map-local

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