如何在vim中运行cut命令并更改当前文件

3
我该如何在vim中运行cut命令并更改正在编辑的文件内容。我尝试了以下操作但未成功。
:r ! cut -d ":" -f 1 % > %

还有其他变体。我想使用剪切板编辑当前打开的文件,并想知道如何仅在vim内部使用剪切板来完成此操作。


1
你为什么不使用vim的功能来完成相同的工作呢?调用cut有什么特殊的原因吗? - dlmeetei
在vi中,'s'替换命令真的非常强大。 - Sameer Naik
@dlmeetei,就像我之前说的那样,我想知道如何在vim中使用cut来完成这个任务。 - Saurabh
2个回答

7
由于重定向运算符>在命令执行前会使shell截断文件,因此cut看到的是空输入文件,所以它无法正常工作。
您可以使用:w将当前缓冲区的内容通过stdin传递给cut,然后重定向到文件中。
:w ! cut -d ":" -f 1 > %

这会导致Vim提示您重新加载文件。您可以使用不会表现出这种行为的替代方法,例如替换操作:

:%s/:.*//

可以使用过滤命令filter

:% ! cut -d ":" -f 1

使用过滤器 ! 是最简单和最简便的方法。 - Peter Rincker

3
:%!cut -d":" -f1

请查看:help :range!

谢谢,这个可行,您能否添加一些解释,使得答案更加有用和完整。 - Saurabh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接