问题标签 [vim-syntax-highlighting]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
662 浏览

vim - 什么 vim 模式匹配以点结尾的数字?

在 PDP11/40 汇编语言中,以点结尾的数字被解释为十进制数。我使用以下模式,但无法匹配该表示法,例如8.

当我\.D模式替换时可以匹配8D没有任何问题。谁能告诉我我的“以点结尾”模式有什么问题?谢谢。

0 投票
1 回答
669 浏览

vim - vim 正则表达式和高亮语法:查找匹配项并忽略其中的子匹配项

我正在尝试在 VIM 中编写语法荧光笔。你如何在另一场比赛中突出比赛?

为了找到每个匹配项,我创建了两条syn match线,它们在匹配项分开的地方工作。


突出语法结果 - 第一行有单独的匹配,而第二行有重叠的匹配

  • xpath 字符串的第一行是粉红色的,字符串的第一行是蓝色的${..}

  • 对于 xpath 字符串,第二行是粉红色的,但该${..}字符串中包含的内容将被忽略。

我试图改变syn match线条的顺序,但这没有任何效果。

我很感激你的想法。

0 投票
2 回答
1742 浏览

vim - 在没有有效文件扩展名的情况下检测 vim 中的文件类型

我正在寻找一种方法来确定 vim 中文件的文件类型并根据文件类型设置语法突出显示。唯一的问题是我不能使用文件扩展名来确定文件类型。

这是我的场景:我使用vimdifforgvimdiff作为我的P4DIFF工具,它显示了本地副本中的文件与 perforce 服务器中的文件之间的更改。Perforce 似乎将文件从 perforce 服务器引入 /tmp 目录并使用PID来命名文件,例如:

这是针对 C++ 源文件的。

我在 perforce 存储库中遇到的最常见的文件类型是 C/C++ 源文件和头文件、Makefile、python 脚本、perl 脚本、ruby 脚本和 tcl 脚本。

  • 我已经研究过使用modeline,但我们树中的大多数源都没有在文件中嵌入此信息。

  • 这篇文章提到了一种搜索和识别魔法模式的可能方法。我找不到任何能获得高成功率的一致魔法模式。

  • 尝试file在我的 linux 机器上使用二进制文件来查看我得到的结果。它似乎可以很好地识别 C/C++ 源,但对于 Makefile 甚至 python 脚本(没有 hashbang)都失败了

一件好事是,在比较的 2 个文件中,右侧的文件来自我的本地副本,因此具有正确的文件名和扩展名,从而为右侧的文件正确启用了语法突出显示。

有没有办法可以利用它为左侧显示的文件设置相同的语法突出显示?

也欢迎对此问题的任何替代解决方案。

0 投票
2 回答
2813 浏览

regex - 匹配分隔列表中的最后一个元素?

我有一些用冒号分隔的数据,如下所示:

我想使用正则表达式来匹配最后一个元素,在这种情况下,qux. 列表可以是任意长度,如果只有一个元素,则根本没有冒号。

我尝试过使用 vim 的零宽度匹配结构,但我似乎无法让它做我想做的事。

0 投票
11 回答
73662 浏览

vim - 为 VIM 添加 GoLang 语法高亮

我正在尝试在 ubuntu 上向 VIM 添加 Go 语言语法突出显示,并在此处提供资源和方向http://go-lang.cat-v.org/text-editors/vim/

Go 附带一个go.vim包含 VIM 语法设置的文件,上面的页面提供了以下说明

将 $GOROOT/misc/vim/syntax/go.vim 放入 ~/.vim/syntax/ 并将以下内容放入 ~/.vim/ftdetect/go.vim:

这或多或少与我在其他地方看到的自定义 vim 语法的过程相同(Ubuntu 12.10 上的 Vim 7.3 在任何地方都没有 'ftplugin' 目录https://github.com/jnwhiteh/vim-golang/blob /master/readme.txt )

所以我认为我在创建目录时做对了:
~/.vim
~/.vim/syntax
~/.vim/ftdetect

并按照上述说明添加

go.vim 到 ~/.vim/syntax/ 并在 ~/.vim/ftdetect/ 中创建一个文件 go.vim,其中包含

然而语法高亮似乎没有发生。我需要做些什么来强制 VIM 查看这些新的设置文件吗?

0 投票
1 回答
2459 浏览

vim - 当 cursorline 突出显示一行时,设置 listchars 的可见性和/或颜色或在 vim 中隐藏 cchar

我知道我可以使用 setlist listchars=...来显示NonTextSpecialKey字符,以突出显示不同种类的非文本字符。一般来说,这是直截了当的并且有效。但它有一个让我感到不安的视觉副作用——当光标线设置为打开时,将光标“悬停”在一行上时,listchars会以不同的颜色突出显示。该线程中已经提到了该问题,并且似乎没有解决该行为的解决方案。

结果,我开始使用隐藏功能,这给了我不同的结果。set concealcursor=n||v||i||c让我控制隐藏字符在哪些模式下可见。我希望能够始终看到隐藏的字符,所以我设置了以下内容:

结果,无论我当前处于哪种模式,它都会突出显示始终可见的所有空间。但同样有一个令人不安的副作用 - 当我在可视模式下标记线条或用光标线突出显示线条时,突出显示区域在隐藏的地方被打断字符被找到。只需查看屏幕截图:

具有选定区域的可视模式:

Vim 在可视模式下隐藏字符

带光标线的普通模式:

Vim 在普通模式下用光标线隐藏字符

所以我想让我们试试set concealcursor=ic。这导致不间断的突出显示区域,但随后字符被隐藏。

在此处输入图像描述

那么我在这篇文章开头提到的线程是否有某个地方和某种解决方案,或者有什么方法可以使光标线和视觉选择区域在使用时不受干扰set concealcursor=nvic

0 投票
2 回答
1102 浏览

vim - Vim 高亮嵌套区域

我已经使用 vim 几个月了,我仍然在尝试改善我对这个伟大编辑器的体验。

我尝试做的是为香料网表(电子资料)创建一个语法高亮文件。

我试图强调以下模式:

.SUBCKT or_gate AB OUT

(*or_gate* 是该单元的单元
ABOUT bieng 引脚的名称)

我尝试做的是用 3 种不同的颜色突出显示它:

  • 一个用于 .SUBCKT
  • 一个用于 or_gate (单元格)
  • 一个用于 A、B 和 OUT(引脚)

所以我正在查看以 .SUBCKT 开头的行,并试图找到一种方法来匹配该行的不同单词。

我尝试了很多不同的syn match组合或嵌套syn region但我只是觉得我做错了。

这是我尝试之一的示例:

syn region spiceCKT start ="\.SUBCKT" end ="$"包含=spiceCell,spicePins

syn region spiceCell start ="\.SUBCKT"rs=e end ="$"包含

syn region spicePins start ="\.SUBCKT\s\S*"rs=e end ="$"包含

I tried to play with the pattern (\s\S*), to add/remove the rs=e parts, or even to define the start or end patterns adding \zs and \ze.

In the end I did not manage to make it work and I just feel like I'm making it way more complicated that it should be.

Anyone could help me figuring out what are my mistakes and how to handle such pattern highlighting?

0 投票
1 回答
244 浏览

vim - 在同一个字符上叠加两个 vim 语法匹配

我在 vimscript 中定义了以下语法规则:

稍后,我想将两个高光应用到同一个角色。所以基本上,我尝试了以下方法:

但随后第二场比赛取代了第一场比赛。因此,我进一步阅读了有关 的帮助以及该问题syntax match的答案,并尝试使用参数:syn match

但它的行为仍然完全相同。

那么,如何使用两个语法匹配来独立更改同一字符的背景和前景呢?

0 投票
1 回答
668 浏览

vim - ~/.vimrc 如何推翻 filetype.vim 对语法高亮的错误猜测?

GLSL 语法荧光笔http://www.vim.org/scripts/script.php?script_id=1002效果很好。但它不能识别通常以 .frag 或 .vert 之类的行开头的着色器文件#version 330。(这是在 Ubuntu 12.04.2 LTS 上,一切都是最新的。)

有了这样一行,加载文件后必须手动键入set syntax=glsl,可能是因为 /usr/share/vim/vim73/filetype.vim 有

" Generic configuration file (check this last, it's just guessing!)

if………… getline(1)=~'^#'_ setf conf_

为什么这不会被 ~/.vimrc's 否决au BufNewFile,BufRead *.frag,*.vert setf glsl?有没有在 filetype.vim 中犯错的解决方法?

0 投票
3 回答
410 浏览

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

针对 SuperUser 上的这个问题,我编写了一个小的 vimscript,它将检测符号链接的文件类型并更改语法突出显示:

au BufNewFile,BufRead * if &syntax == '' | 沉默的!执行 (':set filetype='.matchstr(resolve(@%),'.[^.]*$')[1:]) | 万一

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

它可以工作,但一个意想不到的结果是,现在我的.vimrc文件的语法高亮已经消失了。默认情况下,我的 .vimrc 文件具有 vim 语法高亮显示(:echo &syntax返回vim)。

但是当我添加上面的行时,:echo &syntax返回vimrc(无效类型)。

我不知道为什么会这样。不应该&syntax==''评估为假,从而保持&syntax==vim?我怀疑我的代码在语法高亮设置为vim. 但是,语法高亮究竟如何(以及何时)设置为vimfor 的.vimrc?此外,我怎样才能让我的脚本按照它应该的方式运行?