问题标签 [vim-macros]

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

vim - 宏中的条件操作

在 VIM 宏中,条件操作是如何处理的?

基本示例

文件内容:

宏将执行以下操作:

重复 7 次缓冲区将是:

那么,如何验证条件是否为真然后运行操作?

0 投票
1 回答
377 浏览

regex - 将寄存器递增 n 次会跳过值

我一直在使用 VIM 处理 500 个单独的文件,以使其中一个值独一无二。我不会粘贴它,因为它是一个完整的kludge :)

使一个元素唯一后,我有一个文件,其中包含 500 条记录,由空行分隔。

记录一个宏来标记第 1 行,然后找到空白并标记前一行,然后将该块写入文件,@b 递增 1。

因为在写入文件期间我无法弄清楚如何增加 @a ,所以我粘贴它增加它然后将它拉回 @a 。

这一切都很好,除了每 7 个数字增量命令跳过三个,所以不是 XML0001.xml 到 XML0500.XML 我得到 XML001.xml 到 XML0763.xml 左右。

为什么每 8 次调用跳过 3 个数字?

我只是好奇,因为只要文件名是唯一的,它们的编号无关紧要,但我最终需要使输出名称与 @b 的值相匹配。

编辑 疯狂的猜测它与 0 到 9 寄存器丢失有关?

有没有办法在插入模式下增加 @a 之类的

0 投票
2 回答
67 浏览

vi - VI(M),在两个文件中搜索并自动滚动到两个文件

我一直在做这些操作,需要经常做。

step 1. 搜索字符串 (SHFT + *)
step 2. 切换到上一个视口 (CTRL + w + h)
step 3. 找到字符串 (n)
step 4. 返回到另一个视口 (CTRL + w + l)

使用 Vi(m),是否可以一次性自动化以上 4 个步骤?

我搜索了网络和stackoverflow,我不是在谈论:set scrollbind。

0 投票
1 回答
761 浏览

debugging - 如何逐步执行vim宏(如调试)?

有时当我的 vim 宏变得太长时,会出现一些小错误。但是不能一步步执行宏,真的很难找到问题所在。

是否有可能单步执行 vim 宏或以任何方式调试它们?

0 投票
4 回答
223 浏览

regex - Vim:时间表中的时间增量

我是 Vim 的新手,我想看看我能/不能用它做什么。我想增加这样的时间列表:

假设我醒来太晚了,我想在 Vim 中快速将所有内容增加 45 分钟

我尝试了一个宏:

  • 时间(分钟):09:00 -> 09 * 60 + 00
  • + 45
  • Ctrl+相加R =
  • 试图重新格式化(int)SUM/60 : SUM - ((int)SUM/60)*60

但我无法让它工作(它是一个很长的宏),而且我手动完成它的速度更快。

最重要的是,即使我成功了,我也无法弄清楚如何保留"0"of"09"以将我的数字保留在列中。

在 Vim 中可以吗?也许是一个正则表达式?

[编辑]出于练习的目的,我宁愿使用宏、正则表达式,甚至是 VimScript 中的函数,而不是插件

0 投票
1 回答
98 浏览

vim - 您如何在每行应用宏 x 次数,其中 x 取决于该行

说我有类似的东西

有没有办法使用 vim 宏,这样我可以每行运行宏/命令 x 次,其中 x 取决于行?在这种情况下,我2wx^在每行运行 x 次,其中 x 是行号,因此结果变为

提前致谢

0 投票
1 回答
52 浏览

vim - 使用引用标签的范围操作编辑 Vim 宏

我创建了一个具有范围(http://vim.wikia.com/wiki/Ranges)操作的宏,例如:

然后我想编辑它,我通常会使用 let ( http://vim.wikia.com/wiki/Macros#Editing_a_macro ):

但是对于这些示例,宏定义中的 ' 会导致编辑失败。如何解决这个问题?定义时可以使用替代范围语法或转义引号的方法。

我知道我可以重新录制宏,但实际版本比这长得多!

0 投票
1 回答
3017 浏览

vim - 如何在vim上取消映射插入键?

在 上vim命令模式键可以通过ex命令映射:map <key> <macro>插入模式键可以通过 映射:map! <key> <macro>。映射后,从命令模式键和插入模式键中删除映射的命令分别是unmap <key>unmap! <key>

这适用于命令模式键,但对于插入模式键,键扩展也适用于ex命令行提示符:尝试在宏扩展中键入键最终导致unmap!命令参数错误 ( E474: Invalid Argument) 或者可能该命令可能会尝试取消映射某些与预期 ( E31: No such mapping)不同的键。

有人如何正确删除插入模式映射键vim

0 投票
1 回答
177 浏览

vim - Vim 方法跳转到光标下的数字

在vim中,有没有比跳到光标下的行号更优雅的方法

“gn”或其他一些组合键?这需要确保光标位于数字字符串的开头。此外,根据寄存器“n”中的内容,这个宏可能有点危险。

甚至不完全确定为什么会这样:@n意味着执行寄存器 n(一个数字)中的内容,而不是将其与“G”连接。

具有类似功能的功能

似乎也不起作用。

想法?

0 投票
2 回答
584 浏览

vim - 一键 vim 宏 / 交互式搜索并运行宏

我知道我可以使用录制宏q<char>并使用@<char>. 我也知道我可以使用@@.

而是@@两个完整的击键!这太多了!特别是如果我多次运行该宏。我知道,但如果我事先<num>@<char>不知道怎么办?<num>

实际上,我正在寻找的是类似于运行宏的交互式搜索和替换(请参阅Vim 中的交互式搜索/替换正则表达式? )。这可以做到吗?