Ubuntu 复制多行和文本,直到VIM中有一个空格
我必须在bash脚本中运行一系列命令,并且我想回显当前正在运行的命令: 我有这个文件(大约100行): 我想: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 我试过猛拉,但它一次复制一行,有没有办法复制所有的行?你可以录制一个宏 假设您位于文件的第
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/