在vim中,如何在执行可视块内容时插入shell命令输出
In vim, how to insert shell command output when executing contents of visual block
使用 Vim,我经常在编辑时执行 bash 脚本的行,
选择带有可视块的行后使用 :'<,'>w !bash
。
现在我想将命令的输出插入到脚本中。
我该怎么做?
如果您希望您的代码被其输出替换,您只需从您的命令中删除 w
。剩下的就是:
:'<,'>!bash`
它的作用类似于所选行的过滤器。参见 :help :!
。
如果您想像这样将代码的输出插入到自身下方:
echo 1
1
你需要有点创意:
:'<,'>t'>|'[,']!bash
:[range]t[address]
将 [range]
中的行复制到第 [address]
行下方。在这里,我们将视觉选择的行复制到它们自己下面。
|
分隔 Ex 命令。
'[,']!bash
的工作原理与上面类似:它通过 bash
过滤给定范围内的行。在这里,范围涵盖了最新更改的行,在本例中是我们刚刚复制的行。参见 :help '[
。
可能的改进…
使用 :help :silent
减少命令噪音:
:'<,'>t'>|sil'[,']!bash
添加注释字符:
:'<,'>t'>|sil'[,']!bash|sed 's/^/\# /'
转成可视模式映射:
xnoremap <key> :t'>\|sil'[,']!bash\|sed 's/^/\# /'<CR>
使用 Vim,我经常在编辑时执行 bash 脚本的行,
选择带有可视块的行后使用 :'<,'>w !bash
。
现在我想将命令的输出插入到脚本中。 我该怎么做?
如果您希望您的代码被其输出替换,您只需从您的命令中删除 w
。剩下的就是:
:'<,'>!bash`
它的作用类似于所选行的过滤器。参见 :help :!
。
如果您想像这样将代码的输出插入到自身下方:
echo 1
1
你需要有点创意:
:'<,'>t'>|'[,']!bash
:[range]t[address]
将[range]
中的行复制到第[address]
行下方。在这里,我们将视觉选择的行复制到它们自己下面。|
分隔 Ex 命令。'[,']!bash
的工作原理与上面类似:它通过bash
过滤给定范围内的行。在这里,范围涵盖了最新更改的行,在本例中是我们刚刚复制的行。参见:help '[
。
可能的改进…
使用
:help :silent
减少命令噪音::'<,'>t'>|sil'[,']!bash
添加注释字符:
:'<,'>t'>|sil'[,']!bash|sed 's/^/\# /'
转成可视模式映射:
xnoremap <key> :t'>\|sil'[,']!bash\|sed 's/^/\# /'<CR>