将当前线路发送至vim中的外部命令(无捕获)
目标是使用当前行作为TODO,并将其发送给某些外部程序。大概是这样的:将当前线路发送至vim中的外部命令(无捕获),vim,Vim,目标是使用当前行作为TODO,并将其发送给某些外部程序。大概是这样的: :! /usr/bin/todo "content of current line" :!/usr/bin/todo ^R' 我知道filtering命令,但这意味着我想编辑我不想要的当前缓冲区(:.!用作筛选器)。我知道如何使用“%”获取当前文件,但是没有任何方法获取其他内容吗?也许可以使用:execute…将寄存器的内容插入命令行,这样做类似于: "1y$ //yank current row to registe
:! /usr/bin/todo "content of current line"
:!/usr/bin/todo ^R'
我知道filtering命令,但这意味着我想编辑我不想要的当前缓冲区(:.!用作筛选器)。我知道如何使用“%”获取当前文件,但是没有任何方法获取其他内容吗?也许可以使用:execute…将寄存器的内容插入命令行,这样做类似于:
"1y$ //yank current row to register 1
: CTRL-R 1 //CTRL-R followed by register id pastes register to command line
应该这样做。您可能会喜欢这些映射(即保存在
.vimrc
中或粘贴到:
提示符中):
(键入实际控件‑R,上面的示例显示^R
)
您可以将它们视为基于register的Control-R和Control-R Control-R的命令行模式版本(请参见和),其中“虚拟”寄存器“
始终包含当前行的shell引用内容
由于这些映射使用与内置映射相同的前缀(请参阅上面提到的
:help
主题),因此必须在timeoutlen
毫秒内输入最终的单引号(请参阅:set timeoutlen?
),否则它将默认为内置映射(请参阅)。:代码>用作过滤器,但:.w代码>(注意空格!)只传递输出。请参阅:帮助:w_c
。即
:.w !/usr/bin/todo -
这正是我要找的。我以这样的贴图结束ta:silent.w!todo从当前行创建todo。谢谢我看了这个答案并投了赞成票,因为我有兴趣做类似的事情。为了从光标位置开始对文件执行外部命令,我使用:,$w!命令&对我无效。:。Wls:无法访问-:未返回此类文件或目录shell2@ka3ak,它不应与ls
一起使用。你想在这里实现什么?w
命令将数据从缓冲区发送到命令的标准输入,但ls
不处理标准输入。@ka3ak,是;有点笨拙,但这是“正确”的解决方案。但是,也可以让xargs处理带有空格的名称,并提供一组合适的选项(应该是-d'\n'
)。
:.w !/usr/bin/todo -