相关疑难解决方法(0)

将视觉选择发送到外部程序而不影响缓冲区

我想要实现的是将视觉选择发送到外部程序而不影响缓冲区的内容.

让以下代码块表示当前缓冲区.设[<]表示视觉选择的开始,[>]表示结束.

This is not a test 1
[<]This is not[>] a test 2
This is not a test 3
This is not a test 4
Run Code Online (Sandbox Code Playgroud)

由此我想将此文本发送到外部程序.例如:

:<some vim command>!<some shell command>
Run Code Online (Sandbox Code Playgroud)

几乎解决方案?

几乎可行的解决方案是:

:[range]w ! cat | <some shell command>
Run Code Online (Sandbox Code Playgroud)

这适用于按行发送内容.例如:

:%w ! wc -l      # produces --> '4'
:2,3w ! wc -l    # produces --> '2'
:2w ! wc -w      # produces --> '6'
Run Code Online (Sandbox Code Playgroud)

但是,使用上面的示例缓冲区:

:'<,'>w ! wc -w  # produces --> '6'
Run Code Online (Sandbox Code Playgroud)

但我想要产生'3'并且不影响缓冲区内容的东西.

想法?

vim

4
推荐指数
1
解决办法
1021
查看次数

标签 统计

vim ×1