Ubuntu 复制多行和文本,直到VIM中有一个空格

Ubuntu 复制多行和文本,直到VIM中有一个空格,ubuntu,vim,multiple-instances,yank,Ubuntu,Vim,Multiple Instances,Yank,我必须在bash脚本中运行一系列命令,并且我想回显当前正在运行的命令: 我有这个文件(大约100行): 我想: echo "Running command1" ; nohup command1 param1 param2 echo "Running command2" ; nohup command2 p1 p2 echo "Running cmd3" ; nohup cmd3 p1 p2 param3 我试过猛拉,但它一次复制一行,有没有办法复制所有的行?你可以录制一个宏 假设您位于文件的第

我必须在bash脚本中运行一系列命令,并且我想回显当前正在运行的命令:

我有这个文件(大约100行):

我想:

echo "Running command1" ; nohup command1 param1 param2
echo "Running command2" ; nohup command2 p1 p2
echo "Running cmd3" ; nohup cmd3 p1 p2 param3

我试过猛拉,但它一次复制一行,有没有办法复制所有的行?

你可以录制一个宏

假设您位于文件的第一个字符上,则应键入:

`qa`              "Start recording a macro into a
`w`               "move to first word following nohup
`yiw`             "copy the word under cursor
`^`               "move cursor back to beginning of line
`i`               " enter insert mode
`echo "Runnning<ESC>pi";<ESC>`  "paste the previously copied word
`j`               " go down one line
`^`               "move cursor back to beginning of line
`q`               " stop recording the macro
`@a`              " rexecute macro on second line
`qa`“开始将宏录制到
`w`“移动到nohup后面的第一个单词
`yiw`“复制光标下的单词
`^`“将光标移回行的开头
`我进入插入模式
`回显“Runnningpi”;`“粘贴先前复制的单词
`j`“往下走一行
`^`“将光标移回行的开头
`q`“停止录制宏
`@第二行的`“rexecute宏

如果此操作按预期进行,键入
98@
应该可以调用上一个宏98次并格式化文件。

为什么不直接使用sh set-x

来自bash(1):


正则表达式是您在此需要的:

:%s/^\(nohup\) \([a-zA-Z0-9]*\)/echo "Running \2"; \1 \2/

请转到:help subs:[range]s/{pattern}/{string}/pattern:^-行首(nohup)-是\1[a-zA-Z0-9]*-所有列出的字符0次或多次([a-zA-Z0-9]*)-是\2
          -x      After expanding each simple command, for  command,  case
                  command, select command, or arithmetic for command, dis-
                  play the expanded value of PS4, followed by the  command
                  and its expanded arguments or associated word list.
:%s/^\(nohup\) \([a-zA-Z0-9]*\)/echo "Running \2"; \1 \2/