如何在vim中运行cut命令并更改正在编辑的文件的内容.我试过以下但没有奏效.
:r ! cut -d ":" -f 1 % > %
Run Code Online (Sandbox Code Playgroud)
以及它的一些其他变体.我想使用剪切编辑当前打开的文件,并想知道如何使用仅在vim内部切割来完成此操作.
它不起作用的原因是因为重定向操作符>使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)