问题标签 [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 投票
4 回答
61687 浏览

vim - 在 Vim 中,如何将宏应用于一组行?

我有一个包含一堆行的文件。我记录了一个在单行上执行操作的宏。我想在文件中的所有剩余行上重复该宏。有没有快速的方法来做到这一点?

我尝试了 Ctrl+Q,突出显示了一组行,然后按了 @@,但这似乎没有奏效。

0 投票
15 回答
296514 浏览

vim - Vim 和 Ctags 提示和技巧

我刚刚用我的 Vim(或者更确切地说是 gVim)安装了Ctags(以帮助 C++ 开发),并想找出你最喜欢的命令、宏、快捷方式、伴随它的提示......

分享你最好的武器库。对于 Vim 开发中的 C++,您会推荐哪些其他 Vim 附加组件?

编辑您将与 Ctags 一起使用哪些其他附加组件?

EDIT2你使用什么版本的 gVim 和标签?这有什么不同吗?

EDIT3您如何增强您对大型和小型项目的编程体验?

0 投票
1 回答
854 浏览

regex - 你如何把它变成一个 VIM 宏?

因此,我作为程序员的一项常见任务是调试实时系统。我调试实时系统的方法之一是从控制台捕获详细日志。

通常,对于我感兴趣的每一行,日志文件都有大约 20 行额外的行。

为了最小化我的宏脚本,我开始创建一个宏,它只会抓取 20 行中我感兴趣的一行!(而不是对我不想要的所有行进行 20 次替换......这会使宏比它需要的长 20 倍。)这个宏代码的其余部分会将这一行变成 *.csv文件,这样我就可以在我认为合适的时候使用 Matlab 或 Excel 中的数字。

这是宏的代码(这些命令是 Ultra Edit 特定的命令):

*仅供参考,我已经发布了每个命令在线执行的 API/描述。

让我用一个更易读的伪代码来分解这个宏在做什么:

我知道如何通过在我的 .vimrc 文件中添加映射来在 VIM 中创建简单的宏:

但我想知道是否有某种方法可以在宏中执行 while(1) 和 CopyAppend。就像在某种 .vimrc 定义的函数中一样:

那么如何将上面的 UltraEdit 宏改成 VIM 函数呢?

我真的需要能够在 VIM 中重新创建这种脚本,因为我目前被困在做 20 个替代品(有时更多)和替换......这让我发疯了,浪费我的时间做这种不雅的解决方案来解析日志文件!

0 投票
3 回答
248 浏览

vim - 如何在 vim 中插入类似的行时最小化击键?

有时我需要在文件中插入一些类似的行,这些行仅在序列号上有所不同。例如,

使用vim,我最终使用 [yypppp] 复制粘贴第一行,然后更改最后四行。如果要插入更多行,这真的很慢。

在vim中有没有更快的方法来做到这一点?


这方面的一个例子是:

初始状态

最终状态

0 投票
1 回答
1562 浏览

vim - vim 宏映射

在 Vim 中,如何为 Ctrl+Shift+另一个键设置宏?我做了 noremap 并且映射实际上忽略了这种转变。我可以按下,宏就会通过。

0 投票
1 回答
127 浏览

vim - Vim 宏到 Camel_Case_With_Underscores

我想要一个快速宏来允许我将 qty_on_hand 之类的文本转换为 Qty_On_Hand。没有下划线的单词应该大写,这样描述就会变成描述。源文本中的大小写不一致,因此可能是 QTY_on_Hand -> Qty_On_Hand。

有任何想法吗?

0 投票
2 回答
384 浏览

vim - VIM 智能退出宏

从多年的“手指记忆”中,我的手知道 F2 是保存,而 F3 是退出(IBM 编辑多年的遗留物)。因此,我的第一个 vim 键映射是让 F2 和 F3 做他们应该做的事情。特别是对于 F3:

如果我退出一个有编辑的文件,我仍然会得到E37: No write since last change (add ! to override). 我更喜欢的是一个会发出的函数E37: No write since last change. Press F3 again to really quit.)

我将如何编码?


更新的解决方案建议

有人向我指出,我本来可以confirm完成这项任务。我“知道”我以前看过一些内置的解决方案,但我不记得了。但是请注意,confirm它的意义与宏的意义相反,即它提供“是,保留更改”,而宏提供“是,放弃更改”。如果之前有人建议过,我会接受确认。


我实际上做了什么

首先,感谢@Jamie Schembri 提供的起始示例。在学习新的脚本语言时有一个例子总是好的。

这是我最终使用的宏。是的,它并不完全符合要求。我用 Yes|No|Write 选项替换了第二个 F3,感觉更好。我还必须添加一个 nr2char() 以便对字母进行测试。我还不得不从:map.

更新请参阅此问题以获取使用此宏以及处理tagstack文件的附加功能的解决方案。如果你quit从 .vim 中的一个文件tagstack,vim 会关闭你所有的文件。

0 投票
2 回答
6745 浏览

vim - 如何重复最后一个 VIM 宏?

我知道如何在 Vim 中重复最后一个命令。我用..

但是我怎样才能重复最后一个宏呢?@q每次我想重复它时按起来有点不舒服。

我试过了,.但它只是重复宏中的最后一个命令。

有没有更短的方法呢?

0 投票
1 回答
137 浏览

vim - ccw 在 Vim 宏中做了什么

在本文下面的vim宏,作者给出了解释。我了解一些但不是全部。

这个宏(包括记录开始/停止,如果你想知道的话)会将当前的 'path_to_command' 单词更改为 'command',将文件写入磁盘,将窗口拆分更改为 grep 搜索结果,下移一行在结果中并导航到该结果的位置。

Q1。在这里做什么ccw?是否与cw(更改单词)有关,但我不确定。

Q2。:w 一定要写,对吧?

Q3。在这里做什么<Ctrl-W>jj?以下是:h CTRL-W_J有关内容,但我不确定我是否正在研究正确的帮助,也不确定在这种情况下帮助的含义。

0 投票
2 回答
5249 浏览

emacs - 如何将邪恶模式(vim 风格)宏保存到我的 init.el?

大约一年前从 Vim 搬过来后,我正在使用evil-mode 。我做了一些自定义,但还没有弄清楚如何保存 vim 风格的键盘宏。

我可以在邪恶模式下定义和运行它们,使用与 Vim 中完全相同的键。

  • qa开始录制宏的字母。
  • q停止录制。
  • @a运行宏的字母。

我想将其中一些保存到我的init.el文件中以在会话之间使用,但我无法在网上找到对此的任何参考,也没有找到正确的语法。

如何将这些邪恶模式的键盘宏保存到文件中?有什么原因我应该使用本机 Emacs 键盘宏,有没有办法可以通过@a键运行这些宏?