问题标签 [autocommand]

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 投票
2 回答
8084 浏览

vim - Autocommand for new file of specific filetype

I want to run some vim commands anytime I create a new file of a specific file type, sort of combination of the BufNewFile and FileType autocommand events.

I have BufNewFile autocommands setup in filetype.vim to set the filetype based on the file extension, but I have multiple extensions that all correspond to the same filetype. I'd like to encapsulate the information about which file-extensions correspond to a particular file-type just in this one place, and then have other autocommands run based just on the filetype. However, I can't just use the FileType event, because I only want to perform the commands for new files, not when editing existing files.

For instance, in filetype.vim, I have:

I thought maybe I could add a BufNewFile autocommand in the ftplugin file for this filetype, like this:

But when I create a new file, e.g., "test.cir", it doesn't run the auto-command. It runs other commands in the ftplugin file (for instance, I get the "Spice file." echo) but not the autocommand.

Alternatively, if there's some way in vimscript that I can tell whether or not a file is new, then I could run the commands directly in the ftplugin, conditioned on whether or not it is new.

0 投票
1 回答
99 浏览

vim - 在 vim 中,如何将文件类型的自动命令应用于文件的区域?

我有一种多语言文件类型,其中可以嵌入 C、python、ruby 等(如果有帮助,请考虑“wiki 页面”)。有没有办法在文件区域上执行已知文件类型的自动命令?

例如,我可能有:

我想将 bash 文件类型自动命令应用于第一部分,将 python 文件类型自动命令应用于后一部分。

我可以通过使用这种方法定义一个区域来获得语法高亮,但我对自动命令的理解不够,无法以类似的方式应用它们。

0 投票
1 回答
75 浏览

vim - 文本包装在vim中时如何调用函数?

在 vim 中,我想在视觉上使我必须在 markdown 中编写文本的空间变得透明。我使用硬包装textwidth=79。例如,我通过一些计算知道一章会有 20 行。所以,我所做的是插入 20 行空行来获得我能写的视觉感受。写了几行后,我手动从空行中删除了已经写的行数,这样视觉印象还是正确的。

我想要做的是自动化这个删除过程。这意味着如果该行为空,我希望 vim 自动删除最后写入的行下方的一行,并且在 vim 自动开始新行之后,因为我在之前的行中达到了 79 个字符。我怎样才能做到这一点?

我知道 vim 中有自动命令,但我没有找到<event>适合该操作的命令:在 vim 自动硬换行/在插入中到达新行之后(或者您想描述它)

0 投票
0 回答
216 浏览

vim - Vim:打开新的缓冲区更改文件

我想我在 Vim 自动命令中观察到一个奇怪的行为,其中打开一个新的缓冲区会改变过去命令的结果(!)。这是一个简单的例子(VIM 7.3 2010 Aug 15)。我刚刚创建了一个test仅包含“磁盘版本”行的文件,然后将此文件保存到磁盘。保持这个文件test在 Vim 中打开,我将文本更改为“SWAP VERSION”,而不保存:现在该文件test有一个关联的交换文件。

空壳:

.vimrc我写了一个init.vim包含单个自动命令的文件,而不是 ,在BufRead调用时输入文件的内容:

然后当我加载vim -u init.vim test并按r键接受交换恢复时,自动命令会按预期打印出“SWAP VERSION”。

奇怪的情况:

init.vim我通过以下方式更改自动命令:

相同的过程 ( vim -u init.vim test, r ) 现在打印出“磁盘版本”。换句话说,该命令在执行前一个命令时new已经修改了缓冲区的内容。用无害的替换命令返回到“空”的情况。newecho

有任何 Vim 向导知道这里到底发生了什么吗?

(编辑)上下文:

我正在尝试构建一个(非常简化的)版本的recover.vim.

  • 为什么不使用现有的插件recover.vim因为我正在尝试做一些既(可能)更简单又不同于它所做的事情。另外,这个插件使用了大量的 shell 转义,这在我的上下文中很糟糕。我很乐意牺牲功能来摆脱这些逃逸。
  • 我至少应该看看是怎么recover.vim做的:可能。但由于它相当复杂,我认为从文档开始工作会更容易......(不过,我会尝试使用 github 的旧版本recover.vim)。
  • 我使用的是旧的 Vim 版本:我在这里别无选择(不是管理员,甚至没有在这个环境中编译权限)。
0 投票
1 回答
31 浏览

vim - 我可以创建一个在执行 :update 时启动的自动命令吗?

每当执行命令时,我都想重新格式化一些代码:update,这可能吗?

我找不到任何用于更新的自动命令挂钩,仅用于:w命令。

0 投票
2 回答
2766 浏览

vim - 运行 BuffWrite 命令时出现 Vim 错误 E20 'Mark not set'

我在我的 vimrc 中设置了一个自动运行脚本,以将 3 个或更多空换行符的任何块压缩为 3 个换行符。我设置了一个标记,因此在脚本执行后,我保留了我的光标位置,但是当光标位于要删除的区域内时,我收到了 E20 Mark not set错误。

发生这种情况时如何解决此问题/使错误静音?

" .vimrc file: autocmd BufWrite * mark ' | silent! %s/\n\{3,}/\r\r\r/e | norm''

0 投票
2 回答
1216 浏览

vim - 在 Vim 的新选项卡上打开缓冲区

我正在创建一个在加载新缓冲区时需要拦截的 Vim 插件。

基本思想在于,当我打开一个新缓冲区时,这个新缓冲区必须在另一个选项卡上进行筛选,并且前一个选项卡必须保持前一个缓冲区的加载。

foo.txt例如:我有一个bar.txt带有. 我知道这样做可以,但是对于我的插件,即使它不用于打开文件,我也需要“行为”。:e bar.txtfoo.txt:tabe bar.txttabe

有谁知道如何用 Vimscript 做到这一点?

这背后的原因:https ://github.com/vim-ctrlspace/vim-ctrlspace/issues/177 。

0 投票
1 回答
700 浏览

if-statement - Vim:在 augroup 中使用“if”?

我只想定义一个执行一些外部命令的自动命令。例如,在编译后删除一些自动生成的文件。我在 Windows 和 Linux 上工作,在这两个平台上使用的外部命令是不同的。

因此,我可以定义:

如果我想在 a 中定义这个自动命令augroup,我应该简单地将这段代码放入一个 augroup 中,如:

我尝试了这种方法,似乎可行。我想知道这是否是正确的方法。我可以考虑的另一种方法是将外部命令写入可以在其中使用if语句的函数。然后以通常的方式定义自动命令并调用此函数。哪个更好?

谢谢!

0 投票
1 回答
472 浏览

vim - 如何在除一个文件类型之外的每个文件类型上运行自动命令?

每当我更改缓冲区和检查时间时,我都会设置我的 vim 来保存文件。问题是我使用 Netrw 并最终保存了 Netrw 缓冲区。我可以对除 netrw 之外的所有类型的文件运行自动命令吗?

0 投票
2 回答
628 浏览

vim - 加载缓冲区后,Vim 中自动命令 ":highlight" 的正确方法是什么?

由于各种原因,我以十六种颜色运行 Vim,与我的终端颜色同步。在最近的 Vim 更新中,我不得不完全修改我的 "~/.vimrc" 以使其恢复在 Linux 上的运行状态。

最初,我震惊地发现这条简单的行不起作用(即使前面有“语法”):

我也在使用“LineNr”ctermfg。无论我将“评论”ctermfg 放置/堆叠在哪里,它都不起作用,或者干扰了其他所有正确采购的东西(即,放置在与“LineNr”相同的行中)。但是,我发现在缓冲区加载后调用“评论”会使评论按预期显示。

我是 Vim 中的 autocmd 新手(无论如何,我想知道它是如何工作的)。我的“~/.vimrc”中是否有一个“autocmd”调用,它将在缓冲区加载后立即运行上述代码行?

我已经尝试了几次迭代(BufWritePre、BufWritePost 等),但都没有成功。这是我之前的尝试: