Atalhos de tipo de arquivo no vim

0

Eu adicionei 4 linhas a seguir ao meu arquivo vimrc para adicionar atalhos (para executar o buffer atual * .html no navegador e para executar o arquivo * .js atual no nó):

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>

Funciona bem quando tenho apenas arquivos html ou apenas arquivos JavaScript abertos. Mas quando eu tenho qualquer combinação desses tipos de arquivos abertos em diferentes buffers (usando abas) e quero abrir o arquivo HTML no navegador e pressione Ctrl + Deslocamento + F10 meu arquivo HTML vai para o Node, que gera erro de compilação.

Progresso:

Quando digito :set filetype , diz html para * .html e javascript para arquivos * .js. Portanto, o problema não está no tipo de arquivo impróprio.

Tentei definir o atalho Alt + Deslocamento + F10 para abrir no navegador e isso de alguma forma resolve o meu problema. Agora, quando ambos os tipos de arquivos mais arquivos sem tipo de arquivo estiverem abertos ao mesmo tempo, eu posso abrir qualquer tipo de arquivo (html, js e plain text) no navegador com Alt + Shift + < kbd> F10 e enviá-lo para o Node para compilar com Ctrl + Deslocamento + F10 . Por que isso acontece?

Aqui está o meu arquivo vimrc . Versão do Vim é de 7,4

    
por Alexander 18.01.2016 / 18:38

1 resposta

0

É melhor adicionar plug-ins de tipo de arquivo à seção posterior do diretório de tempo de execução do vim do usuário e definir seus mapeamentos sem usar autocmd .

Por exemplo, em ~/.vim/after/ftplugin/html.vim você colocaria seus mapeamentos HTML e ~/.vim/after/ftplugin/javascript.vim para mapeamentos JavaScript.

No entanto, isso não resolve o seu problema. Você precisa fazer o seu buffer local de mapeamentos. Tente isso, para buffers de HTML:

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

E isso, para buffers de JavaScript:

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

Veja:

:help :map-local
    
por 18.01.2016 / 20:14