如何在Vim中使用预写命令

如何在Vim中使用预写命令,vim,command,customization,Vim,Command,Customization,有时一遍又一遍地重写类似的命令很无聊,所以我想预写所有命令,将它们保存到一个自定义命令中,并一次性使用。然而,由于我将使用的新命令仅适用于我当前使用的文件,因此我真的不想麻烦更改vimrc文件。所以我的问题是,是否可以将一个命令预写到一个文件中,并将其加载到vim中,然后一次性使用它?如果可能,怎么做 谢谢。只要找到文件的来源: :source /p/a/t/h 此外,您还可以在.vimrc中使用autocmd: autocmd BufRead,BufNewFile *.whatever so

有时一遍又一遍地重写类似的命令很无聊,所以我想预写所有命令,将它们保存到一个自定义命令中,并一次性使用。然而,由于我将使用的新命令仅适用于我当前使用的文件,因此我真的不想麻烦更改vimrc文件。所以我的问题是,是否可以将一个命令预写到一个文件中,并将其加载到vim中,然后一次性使用它?如果可能,怎么做

谢谢。

只要找到文件的来源:

:source /p/a/t/h
此外,您还可以在.vimrc中使用autocmd:

autocmd BufRead,BufNewFile *.whatever source /p/a/t/h
或者,只需将命令直接放在autocmd中,而不是源文件。

只需源文件:

:source /p/a/t/h
此外,您还可以在.vimrc中使用autocmd:

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

或者,与其源文件,不如直接将命令放在autocmd中。

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

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

请参见:帮助用户命令。对于缓冲区作用域,将它们放入~/.vim/ftplugin/_commands.vim左右。启用:filetype plugin后,这些文件将自动来源。或者,您也可以用与此类似的方式定义buffer-local:mapping。

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

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

请参见:帮助用户命令。对于缓冲区作用域,将它们放入~/.vim/ftplugin/_commands.vim左右。启用:filetype plugin后,这些文件将自动来源。或者,您也可以用与此类似的方式定义buffer-local:mapping。

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

在任何文件中的单行中编写命令。您可以将其拖动到任何其他要处理的文件。 在这一行,^y$以拖动代码。别偷懒,否则马车会被拉下来的 转到命令行by:,点击C-r将其粘贴到命令行。获利。
虽然有点麻烦,但它是有效的。我有时也会这样做:

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

在任何文件中的单行中编写命令。您可以将其拖动到任何其他要处理的文件。 在这一行,^y$以拖动代码。别偷懒,否则马车会被拉下来的 转到命令行by:,点击C-r将其粘贴到命令行。获利。
虽然有点麻烦,但它是有效的。我有时也会这样做:

要快速重复前面的命令,您可以尝试我的命令。它重复包含传递模式的历史记录中的最后一个命令。例如:

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

使用内置命令,您可以开始重复命令:%s,然后使用↑.

要快速重复上一个命令,可以尝试我的命令。它重复包含传递模式的历史记录中的最后一个命令。例如:

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

使用内置命令,您可以开始重复命令:%s,然后使用↑.

此外,您还可以设置一些AutoCmd,以便根据正在打开的文件自动加载。此外,您还可以设置一些AutoCmd,以便根据正在打开的文件自动加载。实际上,这不是针对文件类型,而是针对单个文件,我需要用另一系列模式更改多个模式。在正常模式下,我必须多次使用:%s/a[I]/b[I]/g,所以我真的想把它们都放到一个命令中并运行一次。实际上,这不是针对一个文件类型,只是针对一个文件,我需要用另一系列的模式来更改多个模式。在正常模式下,我必须多次使用:%s/a[I]/b[I]/g,因此我真的希望将所有这些命令合并成一个命令并运行一次。好的,更明确地说,我希望对多个a[I]和b[I]使用%s/a[I]/b[I]/g。因为我只能在命令模式下键入一行,而且在命令中更改值并不方便。我想我最好在另一个文件中创建一个新命令,并按照William的建议将其来源。我不确定这是不是最好的方法,但这正是我目前所能想到的……好的,更明确地说,我想用%s/a[I]/b[I]/g来表示多个a[I]和b[I]。因为我只能在命令模式下键入一行,而且在命令中更改值并不方便。我想我最好在另一个文件中创建一个新命令,并按照William的建议将其来源。我不确定这是不是最好的方法,但这是我目前能想到的…这是一个很好的插件~尽管我仍然需要对不同的模式进行循环,我每次都重复这个命令。但是谢谢,它很有帮助~这是一个很好的插件~尽管我仍然需要对不同的模式进行循环,我每次都重复这个命令。但是谢谢,这很有帮助~