【问题标题】:How to use prewritten commands in Vim如何在 Vim 中使用预先编写的命令
【发布时间】:2023-03-04 09:58:01
【问题描述】:

有时一遍又一遍地重写类似的命令很无聊,所以我想预先编写所有这些命令,将它们保存到一个自定义命令中并一劳永逸地使用它。但是,由于我将使用的新命令仅用于我当前使用的文件,我真的不想费心更改 vimrc 文件。所以这是我的问题,是否可以将命令预先写入文件并将其加载到 vim 中然后使用它一次使用?如果可以,怎么做?

谢谢。

【问题讨论】:

  • 好的,更明确地说,我想对多个 a[i] 和 b[i] 使用 %s/a[i]/b[i]/g。因为我只能在命令模式下键入一行,并且在命令中更改值不方便。我想我最好在另一个文件中创建一个新命令并像威廉建议的那样获取它。我不确定这是不是最好的方法,但这是我目前能想到的......

标签: vim command customization


【解决方案1】:

只需来源文件:

:source /p/a/t/h

另外,您可以在 .vimrc 中使用 autocmd:

autocmd BufRead,BufNewFile *.whatever source /p/a/t/h

或者,而不是采购文件,直接将命令放在autocmd 中。

【讨论】:

  • 此外,您还可以设置一些 AutoCmd,以便根据您打开的文件自动加载它们。
【解决方案2】:

没有具体的例子,很难给出建议。听起来您想为特定文件类型定义自定义命令,如下所示:

:command -buffer ComplexSubstitute %substitute/foo/bar/g

:help user-commands。对于缓冲区范围,将它们放入~/.vim/ftplugin/<filetype>_commands.vim 左右。使用:filetype plugin on,这些文件是自动获取的。或者,您可以在此处以几乎相同的方式定义缓冲区本地 :mappings。

【讨论】:

  • 嗯,其实不是针对一个文件类型,只是针对一个文件,我需要用另一个系列的模式来改变多个模式。在普通模式下,我不得不多次使用“:%s/a[i]/b[i]/g”,所以我很想把它们全部变成一个命令并运行一次。
【解决方案3】:

要快速重复上一个命令,你可以试试我的redocommand plugin。它重复历史中包含传递模式的最后一个命令。示例:

:%substitute/foo/bar/g
" ... some time later ...
:R %s

使用内置命令,您可以开始重复命令 (:%s),然后使用 完成最后一个此类命令。

【讨论】:

  • 这是一个不错的插件~虽然我仍然需要为不同的模式进行循环,但我每次都重复该命令。不过谢谢,有帮助~
【解决方案4】:

好吧,如果只是一次,有一种自然(正常)的方式

  1. 在任何文件的单行中编写您的命令。您可以将其拉到您想要处理的任何其他文件中。
  2. 在这一行,^y$ 拉取代码。不要yy否则马车会被猛拉
  3. 通过: 转到命令行,点击C-r " 将其粘贴到命令行。 <CR> 盈利。

有点麻烦,但它有效。我有时也会这样做:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-11
    • 1970-01-01
    • 1970-01-01
    • 2020-07-16
    • 1970-01-01
    • 2011-07-04
    • 2016-12-16
    • 1970-01-01
    相关资源
    最近更新 更多