Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vim:如何通过`#!`设置无扩展名文件的文件类型?_Vim - Fatal编程技术网

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修复了它。