当前位置: 首页 > 知识库问答 >
问题:

.vimrc如何设置自己的文件类型?

荆钱明
2023-03-14

为了回答超级用户的这个问题,我写了一个小的vimscript,它将检测符号链接的文件类型并改变语法高亮显示:

au BufNewFile,BufRead * if

因此,如果我打开一个没有扩展名的符号链接,它将查看它指向的文件的扩展名。

它起作用了,但一个意想不到的后果是现在我的. vimrc文件的语法高亮显示消失了。默认情况下,我的. vimrc文件具有vim语法高亮显示(: ech

但是当我添加上面的行,:回显

我不知道为什么会这样。不应该<代码>


共有3个答案

冀俊良
2023-03-14

当前文件为< code>~/时。vimrc,这部分代码

matchstr(resolve(@%),'.[^.]*$')

返回您的文件名:. vimrc

我不知道你怎么能想象/home/username/. vimrc会产生vim

对于您试图解决的问题来说,这显然是一个糟糕的方法,但是没有错误:您得到的正是您想要的。使用filetype的文件名/扩展名不能可靠地工作(< code > js vs < code > JavaScript ,< code > py vs < code > python …)。

如果您希望您的代码执行您想要的操作,您可能需要一个文件名/文件类型列表或许多if/elseif

请参见: h语法加载

辛渝
2023-03-14

jszakmeister的答案准确地诊断了问题:<code>filetype。vim设置vimrc的文件类型。

不过,另一种解决方案是使用以下方法来保留. vimrc文件中包含的所有内容:

au BufNewFile,BufReadPre*如果

请注意从BufRead到BufReadPre的更改。此更改会导致此行在 filetype.vim 之前执行。语法将更改为 vimrc,但随后更改为 vim。结果是脚本按预期工作,但保留了 vimrc 的语法突出显示。

裴宜春
2023-03-14
匿名用户

在Vim的运行时区域中查找filetype.Vim。您可以通过以下方式在vim中提起:

:e $VIMRUNTIME/filetype.vim

在我的版本中,看起来这条线可以解决问题:

" Vim script
au BufNewFile,BufRead *vimrc*           call s:StarSetf('vim')

也许您想将< code>autocmd放在< code>~/中。vim/after/filetype.vim。我相信这会导致它在系统之后被注册,然后< code >

 类似资料:
  • 问题内容: 我想用继承自JFrame icon的icon创建我自己的文件,并在java中对其进行设置,而我自己的文件使用FileOutputStream和ObjectOutputStream Thank you in advance 问题答案: @David是对的,因为主机平台拥有这些装饰,但是您可以使用这些图标,这些图标通常可以 概括该平台的图标。例如, 其他装饰默认列举 here. SSCCE

  • 如何在这里设置我自己的消息,在我自己的语言上 无论设置为得到的消息是

  • 在继续学习Vimscript之前,我们先找个添加新映射到~/.vimrc文件中的更方便的方法。 有时你正在疯狂的编码,突然发现加个映射会加速你的进度。你要立即将其加到~/.vimrc 文件中以防止忘记,但是你 不想 退出当前的文件,因为灵感稍纵即逝。 本章的主题是你想使编辑文件更为方便变得更为方便。 有点绕,但我没有拼错。再读一次。 本章的主题是你想使(((编辑文件)更为方便)变得更为方便)。 编

  • exVim 为用户提供4种不同的 .vimrc: .vimrc, .vimrc.plugins, .vimrc.plugins.local,.vimrc.local. 首先被载入的文件是 .vimrc,我们都熟悉它。在 .vimrc 配置你的 vim 之前,它会在同一个目录检查是否存在 .vimrc.plugins 然后载入它。这是 exVim 插件的默认设置。在 .vimrc.plugins 被

  • 问题内容: 假设我们需要使用一个名为“ BaseNode”的类来实现不同类型的树,从该类派生其他类型的Node,并且它假定具有一个自己类型的实例变量,通常看起来像这样: 现在,如果我要为具有更多成员的AVL树派生Node: 原始(&)节点成员仍然会类型我实施AVL树,其防止。谁能告诉我如何解决这一继承问题?谢谢! 问题答案: 解决方案1- 每次访问时,都将其转换为。您可以在其中编写访问器以使其更加

  • 我已经用这个方法在选择之前查看照片了。请注意照片。