我有一个文本文件..
value #value2
value2 #value3
...
我想对 -f 进行排序并在 # 之前添加两个选项卡,所以我这样做了
:'<,'>norm f#i^I^I |!sort -f
但给我一个糟糕的输出!我知道一个解决方法,使用两个单独的命令
:'<,'>norm f#i^I^I^I
:'<,'>!sort -f
但问题是:可以通过管道传输这些命令吗?
答案1
如果你看一下:help :normal
你会发现
该命令后面不能跟另一个命令,因为任何“|”被视为命令的一部分。
另请注意,这|
不是管道。这只是“连接”命令的一种方法。有点像用 分隔两个 shell 命令;
。因此,应用于一个命令的范围不会延续到后续命令。
我能想到的最接近的替代方案是不涉及自定义函数或类似函数,即使用:substitute
并重新指定范围:
:'<,'>s/#/\t\t\t#/ | '<,'> !sort -f