同一行上的多个命令

问题描述 投票:186回答:7

我一直在寻找可以让我在Vim的同一行上运行多个命令的东西,类似于在* nix系统或Windows的&中使用分号分隔命令。有办法吗?

vim command
7个回答
239
投票

|条将允许您执行此操作。来自:help :bar

'|'可用于分隔命令,因此您可以将多个命令合二为一线。如果要在参数中使用'|',请在其前面加上'\'

示例:

:echo "hello" | echo "goodbye"

输出:

hello
goodbye

NB:您可能会发现~/.vimrc不支持映射|\|。在这些情况下,请尝试使用<bar>


90
投票

在命令之间和之后放置<CR>(回车/回车)。例如:

map <F5> :w<CR>:!make && ./run<CR>

请勿使用|,因为:

  • 某些命令在您使用|后会出现问题

  • [|在配置文件中不一致,请参见:help map_bar


41
投票

您可以定义一个执行命令的功能。

function Func()
     :command
     :command2 
endfunction

然后将其放在您的vimrc中。使用

运行该功能
exec Func()

26
投票

vim中的命令分隔符为|


16
投票

我一直使用^J通过按Ctrl + vCtrl + j来分隔多个命令。


11
投票

这样可以帮助某人尝试在链中进行替换而失败的人

来自comment

% s/word/newword/ge | % s/word2/newword2/ge

找不到字符串时,可以使用e标志忽略该错误。


2
投票

您可以创建一个新文件,并在其上编写命令。然后是:so %,表示源当前文件。

© www.soinside.com 2019 - 2024. All rights reserved.