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

Sau*_*abh 3 linux vim cut

如何在vim中运行cut命令并更改正在编辑的文件的内容.我试过以下但没有奏效.

:r ! cut -d ":" -f 1 % > %
Run Code Online (Sandbox Code Playgroud)

以及它的一些其他变体.我想使用剪切编辑当前打开的文件,并想知道如何使用仅在vim内部切割来完成此操作.

Eug*_*ash 6

它不起作用的原因是因为重定向操作符>使shell 执行命令之前截断文件,因此cut看到一个空输入文件.

您可以改为使用通过stdin :w管道当前缓冲区的内容cut,然后重定向到该文件:

:w ! cut -d ":" -f 1 > %
Run Code Online (Sandbox Code Playgroud)

这有Vim的副作用,提示您重新加载文件.您可以使用不表现出此行为的替代方法,例如替换:

:%s/:.*//
Run Code Online (Sandbox Code Playgroud)

过滤命令:

:% ! cut -d ":" -f 1
Run Code Online (Sandbox Code Playgroud)