- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我试图让 Vim 以语法高亮任何以扩展名 .Rtex
结尾的文件,方法如下:
\begin{python}...\end{python}
中的任何文本都突出显示为 Python我能够单独达到这些标准中的每一个,但无法同时达到这两个标准。我认为 TeX 突出显示以某种方式覆盖了我的 Python 突出显示区域,或者阻止它们生效,我一直在试图弄清楚如何。
第一步:编辑.vimrc
为扩展名为.Rtex
的文件指定rtex
文件类型:
au BufRead *.Rtex setf rtex
第二步:创建~/.vim/syntax/rtex.vim
。该文件的内容将决定如何突出显示 .Rtex
文件。
第三步:通过使 rtex.vim
看起来像这样来启用一般的顶级 TeX 突出显示:
runtime! syntax/tex.vim
如果我现在打开一个 .Rtex
文件,整个文件将突出显示为 TeX,包括 \begin{python}...\end{python}
中的任何文本>,正如预期的那样。
第四步:按照Vim的:help syn-include
中的说明包含python高亮,并将其应用到所有由\begin{python}分隔的区域
和 \end{python}
。我的 rtex.vim
文件现在看起来像这样:
runtime! syntax/tex.vim
unlet! b:current_syntax
syntax include @Python syntax/python.vim
syntax region pythonCode start="\\begin{python}" end="\\end{python}" contains=@Python
unlet! b:current_syntax
命令用于强制执行 python.vim
语法文件,即使现有语法 (TeX) 已经处于事件状态。
问题:如果我现在打开一个 .Rtex
文件,整个文件仍然只突出显示为 TeX。 \begin{python}...\end{python}
区域似乎没有效果。
实验:如果我删除或注释掉 runtime!
命令,我会在 \begin 中获得 python 高亮显示{python}...\end{python}
区域,完全按照需要,但当然在文档的其余部分没有 TeX 突出显示。因此,我得出结论,TeX 突出显示在某种程度上是导致 python 区域生效的原因。
Vim 高手可以给我一些建议吗?我现在很困惑。我已经查看了几个看似相关的页面和 stackoverflow 问题,但到目前为止都没有找到解决方案:
最佳答案
在对手册进行更多研究并进行更多试验和错误之后,我终于回答了我自己的问题(既令人尴尬又崇高的成就),我现在将其保存在这里以供后代使用。
基本上,我认为问题在于 python 突出显示不会生效,因为 pythonCode
区域本身包含在 tex.vim
定义的区域或突出显示组中>,所以它不是顶级的。解决方案也是 include
(而不仅仅是 runtime
)tex.vim
,给它起一个像 @TeX
这样的名字>,然后将 containedin=@TeX
添加到我的 python 区域定义中。所以 syntax/rtex.vim
现在看起来像这样:
let b:current_syntax = ''
unlet b:current_syntax
runtime! syntax/tex.vim
let b:current_syntax = ''
unlet b:current_syntax
syntax include @TeX syntax/tex.vim
let b:current_syntax = ''
unlet b:current_syntax
syntax include @Python syntax/python.vim
syntax region pythonCode matchgroup=Snip start="\\begin{python}" end="\\end{python}" containedin=@TeX contains=@Python
hi link Snip SpecialComment
let b:current_syntax = 'rtex'
这有效!我不确定是否所有这些 unlet b:current_syntax
命令都是绝对必要的。我还为 python 区域定界符提供了一个匹配组 (Snip
),这样它们就可以自己突出显示(使用 SpecialComment
颜色),而不是简单地保留下来,这显然是什么默认情况下会发生,因为它们不再被视为 TeX 的一部分。
现在为不同的语言添加更多高亮区域是一件微不足道的事情(例如,\begin{Scode}...\end{Scode}
),如果你得到进入文学编程——我提出这个问题的最初动机。
编辑:这里是一个屏幕截图,展示了它如何使用嵌入在 TeX 文档中的 Python 和 R 代码:
关于python - 使用 Vim 的 syn-include 和 syn-region 嵌入语法高亮时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5176972/
从数据包捕获文件(pcap)中,在 TCP 握手期间观察以下内容 Client向Server发送SYN请求,服务器响应SYN包而不是SYN+ACK,客户端响应 Out of Order 数据包消息,服
我遇到过这种情况: 我已经阻止了所有入站端口,除了(tcp 53 和 udp 53 - DNS、2 个内部 ip 类和 ICMP),我尝试连接到 google 但没有成功,这很好。但是,使用数据包捕获
我正在编写以下程序(虽然我不认为这是问题所在): #include #include #include #include #include #include int main() {
如果发送方第一次发送SYN,但发送方在超时时间内没有收到SYN/ACK。 (Q1)当发送方再次重传SYN时,重传的SYN是否与之前的SYN相同? (Q2) 它们的序列号是否相同? 最佳答案 是的,但您
我正在试验 Rust 过程宏。 我希望能够创建一个用于生成 JNI 调用样板的宏。有点像 jni_method!{com.purplefrog.rust_callable.Widget, fn ech
我正在向同一网络中的网络服务器发送 TCP SYN 数据包(无负载)。我正在使用sniffex.c用于捕获数据包。 问题是,在我发送 SYN 数据包后,我没有收到来自服务器的 SYN/ACK 数据包。
我对原始套接字以及如何创建它们感到好奇,并且想实现我自己的 TCP 机制。我已经阅读了一些示例,并成功地发送了带有我自己编写的 IP header 的自定义 TCP 数据包和 UDP 数据包(当然受到
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 8 年前。 Improve this qu
如果您正在编写一个基本的 python TCP 服务器和客户端,您需要自己添加 SYN、SYN ACK 和 ACK 响应,还是由套接字模块处理? 如果需要自己写,会这么简单吗? 客户: #set up
我目前正在开发 TCP/IP 堆栈;我在 Linux 下运行,我使用 libnet(用于传输)和 libpcap(用于捕获以太网帧)来模拟链路层。 我已经开始研究 TCP,更具体地说是主动打开连接。基
使用 hping,我发送 SYN 数据包,第二个对等方正在监听并回复 SYN/ACK,但是 hping(我猜是 linux 内核这样做)在收到 SYN/ACK 后发送 RST。 无论如何我可以在收到
我试图让 Vim 以语法高亮任何以扩展名 .Rtex 结尾的文件,方法如下: 所有顶级文本都突出显示为 TeX 异常(exception):包含在 \begin{python}...\end{pyth
我有 TCP 客户端和服务器套接字,并且在客户端和服务器套接字上设置了具有不同值的套接字选项 IP_TOS(例如 Client dscp = 0x21 和 Server Dscp = 0x38)。现在
我正在解析一个 PCAP 文件,我只需要提取 TCP 标志 (SYN) 来检测 SYN 泛洪攻击。我使用 Python 和 scapy。 主要目标是检测 SYN 洪水攻击的方法!我需要为每个 IP 地
这可能是一个微不足道的问题。这是关于 Syn Cookie 的。为什么只有半打开的连接才被视为DOS攻击。客户端可能完成握手(SYN、SYN-ACK、ACK)后就不再回复。这也会占用系统资源。 那么,
如果我的服务器实现了 SYN Cookies 来避免 DoS 攻击,但攻击者知道服务器使用 SYN Cookies,他们是否可以通过发送 ACK 来创建半/全打开连接? 我知道 SYN Cookies
我正在尝试使用 syn从 Rust 文件创建 AST,然后使用 quote把它写给另一个。但是,当我编写它时,它在所有内容之间放置了额外的空间。 请注意,下面的示例只是为了演示我遇到的最小可重现问题。
我正在 Objective C 和 C 中实现 TCP。当我向服务器发送 Syn 数据包时,我没有得到答复。数据包的 pcap 文件可以在这里找到: Tcp-Syn.pcap 数据包是否格式错误,或者
我正在为将通过以太网发送一些数据的微芯片编写软件,但我遇到了一个问题。我正在发送一个 TCP SYN 段,但没有收到服务器的答复。 一切看起来都很好,获得答案的数据包与我的数据包之间的唯一区别是我的数
我正在使用的 Mac OSX 网络客户端有时无法连接到 HTTPS 端口。查看网络跟踪,我们看到了这一点: T0.0 client:port -> server:443 SYN T0.1 server
我是一名优秀的程序员,十分优秀!