如何将可视选择的文本传递给UNIX命令,并将输出附加到Vim中的当前缓冲区

drs*_*der 7 sql vi vim editor

使用Vim,我正在尝试将在可视模式下选择的文本管道传输到UNIX命令,并将输出附加到当前文件的末尾.例如,假设我们有一个SQL命令,例如:

SELECT * FROM mytable;
Run Code Online (Sandbox Code Playgroud)

我想做类似以下的事情:

<ESC>
V                 " select text
:'<,'>!mysql -uuser -ppass mydb
Run Code Online (Sandbox Code Playgroud)

但是,我希望将输出附加到文件的末尾,而不是让输出覆盖当前选定的文本.你可能会看到它的发展方向.我正在使用Vim作为一个简单的SQL编辑器.这样,我不必让Vim进行编辑,调整,测试SQL代码.

mwe*_*den 7

如何将所选文本复制到文件末尾,选择副本并运行命令?如果您不想一遍又一遍地重复相同的命令,则可以使用q或添加新命令来记录序列.我尝试过后者如下:

:com -range C <line1>,<line2>yank | $ | put | .,$ !rev
Run Code Online (Sandbox Code Playgroud)

有了它,您可以选择一些行,然后键入:C.这将首先拉动选择,然后转到文件的末尾,粘贴被拉动的文本并rev在新文本上运行命令(在本例中).