Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将当前线路发送至vim中的外部命令(无捕获)_Vim - Fatal编程技术网

将当前线路发送至vim中的外部命令(无捕获)

将当前线路发送至vim中的外部命令(无捕获),vim,Vim,目标是使用当前行作为TODO,并将其发送给某些外部程序。大概是这样的: :! /usr/bin/todo "content of current line" :!/usr/bin/todo ^R' 我知道filtering命令,但这意味着我想编辑我不想要的当前缓冲区(:.!用作筛选器)。我知道如何使用“%”获取当前文件,但是没有任何方法获取其他内容吗?也许可以使用:execute…将寄存器的内容插入命令行,这样做类似于: "1y$ //yank current row to registe

目标是使用当前行作为TODO,并将其发送给某些外部程序。大概是这样的:

:! /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 -