Vim 同一行上有多个命令

Vim 同一行上有多个命令,vim,command,Vim,Command,我一直在努力寻找一种方法,使我能够在Vim中的同一行上运行多个命令,类似于在*nix系统或Windows中使用分号分隔命令。有办法做到这一点吗?vim中的命令分隔符是条形码>将允许您这样做。From:帮助:条形码 “|”可用于分隔命令,因此您可以在一个命令中发出多个命令 线路。如果要在参数中使用'\',请在其前面加上'\' 例如: :echo“你好”| echo“再见” 输出: hello goodbye 注意:您可能会发现您的~/.vimrc不支持映射,或\\\。在这些情况下,请尝试使用。我

我一直在努力寻找一种方法,使我能够在Vim中的同一行上运行多个命令,类似于在*nix系统或Windows中使用分号分隔命令。有办法做到这一点吗?

vim中的命令分隔符是

条形码>将允许您这样做。From
:帮助:条形码

“|”
可用于分隔命令,因此您可以在一个命令中发出多个命令 线路。如果要在参数中使用
'\'
,请在其前面加上
'\'

例如:

:echo“你好”| echo“再见”

输出:

hello
goodbye

注意:您可能会发现您的
~/.vimrc
不支持映射
,或
\\\
。在这些情况下,请尝试使用

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

您可以定义一个执行命令的函数

function Func()
     :command
     :command2 
endfunction
并将其放入,例如,您的vimrc中。使用运行函数

exec Func()
在命令之间和之后放置
(回车/回车)。例如:

map <F5> :w<CR>:!make && ./run<CR>
map:w:!制作和运行
不要使用
|
,因为:

  • 如果在某些命令之后使用
    |
    ,则这些命令会出现问题

  • |
    在配置文件中无法始终工作,请参阅
    :帮助映射栏


您可以创建一个新文件,并在其上写入命令。然后
:so%
,这意味着源当前文件。

认为这可能有助于尝试在链中进行替换,但其中一个失败


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

只需注意少数不适用于
|
的命令!当您发现自己想要在
map
语句中使用多个命令时(相信我,您会的),请查看
:help map\u bar
。这是正确的。几个月前,我在超级用户上问了这个问题。我的
.vimrc
不支持映射的转义条(
\\\124;
)。我学会了我必须实际输入
。谢谢你的有效解决方案<代码>:帮助栏
显示motion.txt,但没有显示任何关于多个命令的内容。@geekQ应该是
:帮助
哇,我正试图从你的问题中了解vim(我做到了),发现我可以使用
而不是
&&
来分离Unix shell命令@ebyrob我觉得重要的是要注意,
&
在shell命令中是“布尔and”,因此如果您有
command1&&command2
command2
只有在
command1
成功执行时才会执行。带有
您只需手动指定该行的结尾并开始新的一行。这与在shell脚本中的不同行上编写每个命令相同……而command1 | | command2只有在command1失败时才会执行。这是因为在计算机逻辑中,| |和&&是按位的,即使“&&”意味着command1和command2都要求值,但如果command1失败,command2也不需要求值,因为无论cmd2返回什么,它总是会失败,因为第一个返回的值为false(0),而0&&1仍然是零。类似地,如果command1=true,则没有理由在OR计算中使用命令2,因为此时它已经为true(1),因为1 | | 0是1,并且只有当它为0时,才需要0 | | 1(仍然为1)@osirisgothra,这就是所谓的短路/短路计算。干净的解决方案。对于两个以上的命令或长的命令来说肯定很方便。对于使用try/catch处理错误的能力来说也非常有用。使用
:call Func()
更为传统,因为
:execute Func()
意味着更多。它意味着作为命令执行函数的返回值。此处描述的函数通常不会有以
:return
开头的命令,因此其返回值将为零。作为一个命令执行该操作会将光标移动到当前缓冲区的第一行,这并不总是您想要的。这似乎是唯一有效的解决方案。如果要在字符串中使用它,我应该指定谁?您不能在字符串中使用
^J
作为命令分隔符,因为它正在插入终止字符串的空字符。但是,您可以使用=“\n”。
exe”echo'foo'\n echo'bar'
exe”echo'foo'”。nr2char(0x0a)。“echo‘bar’”
映射aa:echo‘foo’echo‘bar’
%s/word/newword/ge | %s/word2/newword2/ge