问题标签 [autocmd]

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 回答
3247 浏览

vim - Vim:结合 autocmd?

我需要在 vim 中执行两个 autocmd 事件的逻辑与。基本上,当 FileType 为 tex 时,该命令必须在 InsertLeave 上运行。看起来这应该有效(在.vimrc中):

但事实并非如此。嵌套选项似乎也没有帮助,即使手册表明它应该这样做。

很容易做一个逻辑或:

做一个逻辑与一定不会太难。

0 投票
2 回答
3525 浏览

vim - 在 Vim 的 `autocmd` 命令中调用函数

我想expandautocmd. 特别是,我正在改编 Paul Biggar 的提示,并且我想在我的 中使用以下自动命令.gvimrc

– 这当然行不通。所以我真正想要的意思是,在打开tex文件时,makeprg变量被设置为其中的值rubber-info filename.logwherefilename是没有文件扩展名的 TeX 文件的名称。

我怎样才能做到这一点?

0 投票
2 回答
1147 浏览

latex - 基于文件内容的 Vim autocmd

我正在尝试设置 Vim 以检测 .tex 文件何时包含命令 '\usepackage{sagemath}',并相应地运行命令。我已经到了

但这将对所有 .tex 文件触发,这不是我想要的。

0 投票
2 回答
699 浏览

c++ - vim + c++:在保护子句中插入 uuid

我正在尝试自动化文件注释标题。我一直在试图弄清楚如何uuidgen使用 vim 的 autocmd 将命令的结果插入到我的标题中。

在标题内,存在占位符文本,如下所示:

_UUID_在 .vimrc 中填充的 autocmd 行是:

问题出现在 r!uuidgen 下。 如何将 shell 命令执行的结果作为文本插入 autocmd 行?或者在 vi 替换命令中?

0 投票
2 回答
873 浏览

function - 写入新文件时运行 CommandTflush 命令

每当写入新文件时,我都试图让 Vim 运行命令“CommandTflush”。对于那些不使用 Command-T 插件的人,“CommandTflush”命令用于重建当前目录中的文件索引。

我想要做的是在文件写入磁盘后运行命令,以便 CommandTFlush 找到该文件并将其添加到它的索引中。

我自己尝试过编写一个函数,但是它要么不触发,要么触发得太快(在写入文件之前,重点是将文件添加到索引中):

我怀疑它可以通过在 BufWritePre 中设置一些布尔变量 (isTheFileNew) 来解决,然后如果文件刚刚创建,则在 BufWritePost 中执行 CommandTflush 命令,但我无法弄清楚语法。如果可能的话,另一个解决方案可能是从 BufWritePre 回调中设置/取消设置 BufWritePost 回调......

有人可以帮我吗?;)

0 投票
2 回答
2009 浏览

vim - 将 vim 变量插入文本以获取注释快捷方式

我有一个简单的目标:映射 Ctrl-C,一个我认为我从来没有用来杀死 vim 的命令,自动在行首插入正确的字符以根据文件的文件类型。

我想我可以使用自动命令来识别文件类型,并在文件打开时将 vim 变量设置为正确的注释字符。所以我尝试了类似的东西:

该地图标记了我当前的位置,以插入模式进入行首,在该点回显注释字符,进入命令模式,返回设置标记,然后向右移动两个字符以弥补插入注释字符(假设 C 样式注释)。

斜体部分是我遇到问题的部分;它只是作为一个占位符来代表我想做的事情。你能帮我弄清楚如何实现这一目标吗?如果您使用 strlen(CommentChar) 向右步进正确数量的空格,则可获得奖励积分!vim-master 的额外奖励积分,包括如果您处于可视模式,如何进行块式注释!

我对 vim 脚本还是很陌生;我的 .vimrc 仅有 98 行长,所以如果你能帮助我解释你提供的任何答案!谢谢。

0 投票
2 回答
3525 浏览

python - 在注释和文档字符串中使用较短的文本宽度

来自强大的PEP 8

[P]lease 将所有行限制为最多 79 个字符。对于流动的长文本块(文档字符串或注释),建议将长度限制为 72 个字符。

在 Vim 中编辑 Python 代码时,我将 my 设置textwidth为 79,当我达到字符限制时,Vim 会自动为我包装长行 Python 代码。但在注释和文档字符串中,我需要将文本换成 72 个字符。

当我在评论或文档字符串中时,有什么方法可以让 Vim 自动设置textwidth为 72,并在我完成后将其设置回来?

0 投票
1 回答
31625 浏览

vim - 在 Vim 中保存文件后如何自动执行 shell 命令?

这是因为我想在每个文件保存后自动运行测试。

我看过autocmdBufWritePost不能让它工作。

0 投票
1 回答
1559 浏览

vim - Vim 缓冲区已修改

我正在尝试AutoCmd在 Vim 中实现一个需要在当前缓冲区被修改时执行的。

我已经阅读AutoCmd了文档中所有可用的事件,但找不到有助于确定缓冲区何时被修改的内容。

这并不一定意味着“写入缓冲区时”,因为当缓冲区已被修改(包括被写入)时,需要调用我需要触发的操作。

关于如何实施BufIsModified可以实现这一目标的任何想法?

注意:不是重复什么是 vimrc 函数来确定缓冲区是否已被修改?,因为这个问题是关于一个autocmd而不仅仅是缓冲区修改检查

0 投票
1 回答
874 浏览

vim - 如何使vim在insertleave上将光标向右移动一个字符?

由于 mac os xterminal.app不支持 vim 的许多视觉方面,包括切换到插入模式时光标从块到行的变化,我使用osascriptaccopmlisch 类似的东西。

在我的.vimrc文件中,我写道:

其中settings set 11是一组具有行光标并且settings set 12具有块光标的终端设置。

这实际上工作得很好,但有一个小问题。在 InsertLeave 上,光标总是向左移动一个字符,这没什么大不了的,但它可能很烦人。

我试图通过放入 autocmd InsertLeave hmy来补偿.vimrc,但无济于事(它给了我一个错误)。

我应该如何告诉 vim:

  1. 不向左移动?
  2. 如果以上不可行,则通过向右移动来补偿