vim中的文件类型快捷方式


0

我在我的vimrc文件中添加了4行以添加快捷方式(在浏览器中运行当前* .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 + 转移 + F10 我的HTML文件转到Node,这会引发编译错误。

进展:

当我输入 :set filetype 它说 html 对于* .html和 javascript 对于* .js文件。所以问题不在于不正确的文件类型。

我试着设定 Alt键 + 转移 + F10 在浏览器中打开的快捷方式,以某种方式解决了我的问题。现在,当文件类型加上没有文件类型的文件同时打开时,我可以在浏览器中打开任何(html,js和纯文本)文件类型 Alt键 + 转移 + F10 并将其发送到Node进行编译 按Ctrl + 转移 + F10 。为什么会这样?

在这里我的 的vimrc 文件。 Vim版本是7.4

Answers:


0

最好将filetype插件添加到用户vim运行时目录的after部分,并在不使用的情况下定义映射 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

谢谢,您的解决方案有效。 “你最好将文件类型插件添加到用户vim运行时目录的后面部分” - 除了没有膨胀的vimrc文件之外还有什么优点呢?我认为将所有配置放在一个地方会更方便。
Alexander

主要是你确定你的映射将在所有系统资源被提取后定义,所以你的映射可以在必要时覆盖系统内容。如果您使用autocmd,则无法保证它将按此顺序发生(事实上,可能不会)。
Heptite
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.