Vim:如何通过`#!`设置无扩展名文件的文件类型?
如何使用Vim:如何通过`#!`设置无扩展名文件的文件类型?,vim,Vim,如何使用#设置文件/usr/bin/env节点将文件类型转换为javascript?使用modeline 请写下一行: // vim: set ft=javascript: 在vim中,:e$VIMRUNTIME/scripts.vim。这是一个文件,当文件名中没有告诉vim类型的内容(比如扩展名)时,它会检测“脚本”的文件类型。如果在此文件中搜索“#!”,您将看到执行此操作的逻辑。问题是,这是一堆特殊情况,没有一个细粒度的钩子来完成您想要做的事情。一种可能是修改这个scripts.vim文件
#设置文件/usr/bin/env节点
将文件类型转换为javascript?使用modeline
请写下一行:
// vim: set ft=javascript:
在vim中,
:e$VIMRUNTIME/scripts.vim
。这是一个文件,当文件名中没有告诉vim类型的内容(比如扩展名)时,它会检测“脚本”的文件类型。如果在此文件中搜索“#!”,您将看到执行此操作的逻辑。问题是,这是一堆特殊情况,没有一个细粒度的钩子来完成您想要做的事情。一种可能是修改这个scripts.vim文件,并将修改提交回vim
如果您不想修改vim附带的文件,那么另一种方法是在您的个人运行时路径中创建您自己的scripts.vim
(使用:set rtp?
查看它在您的系统上的设置)。这将在$VIMRUNTIME中运行。您可以包含查看第一行和检测“节点”的逻辑。您可能希望根据$VIMRUNTIME/scripts.vim
中的逻辑对代码进行建模,以检查文件类型(这就是加载$VIMRUNTIME/scripts.vim
的方式)
您可以指定在读取或写入时自动执行的命令
当进入或离开缓冲区或窗口以及退出Vim时的文件
警告:使用自动命令功能非常强大,可能会导致意外后果
影响。小心不要破坏你的文字
将其添加到.vimrc
-打开新文件时将调用它:
autocmd BufNewFile,BufRead * if match(getline(1),"node") >= 0 | set filetype=javascript | endif
我找到了该文件,但是我可以在~/.vimrc或~/.vim/*中执行此操作吗?您应该可以执行此操作
~/.vim/scripts.vim
。请看:h新文件类型脚本以获取示例。@guilin桂林: 见我回答的第二段<代码>~/.vim
在您的运行时路径中(在Unix上默认),因此您可以像Peter Rincker提到的那样编写~/.vim/scripts.vim
。我在一个代码示例中进行了编辑(作为vim插件),但您是正确的,这将在~/.vim/scripts.vim中工作,如帮助中所述。帮助示例也简单得多。请随意拒绝/修改编辑。我只是觉得实际的解决方案是有益的。您需要在.vimrc文件中启用modeline。setmodelines您可能还需要在.vimrc中执行一些操作,行setmodelines=5;这告诉它在第一行或最后5行中查找modeline。有些人将其设置为0,因此它不起作用。谢谢语法。我刚刚在cql文件中使用了SQL着色//vim:set ft=SQL:
。注意后面的:
@taxilian谢谢。我永远也弄不明白为什么我的模型线有一半的时间不工作。设置modelines=5修复了它。