这个 vim 脚本可以正常工作了
#!/usr/bin/vim
%!sed 's/ .*//'
%!sort -fu
norm dd
% norm $D
唯一的问题是最后的这条消息(我必须按键盘中的 ENTER)
"20 lines filtered
20 lines filtered
Press ENTER or type command to continue
"
如何在脚本中模拟ENTER?所以我可以避免手动按下我把它放在脚本的末尾但不起作用
norm <^M>
检查问题的是 sed (产生输出),而不是 vim。如何让 sed 更安静?使用“sed -n”会产生空输出。
尝试使用带有这些行的文本
字面答案
使用 vim
:silent
或:silent!
为不应输出消息的各个命令添加前缀,例如::silent
对于和之间的区别:silent!
,请参见静音与静音!- 有什么不同?不同的(正确的)方法
根据脚本中的操作是否与您在 Vim 中打开的文件相关,最好使用 Vim 自己的命令
:sort
和:s
,避免不必要的外部命令,或者创建 shell 脚本(或 shell 别名或 shell 函数)否则。使用Vim功能
以下脚本sort.vim:
可以使用 来获取,并且可以通过按 或来调用
:source sort.vim
该函数。或者,可以将该函数添加到$HOME/.vimrc中,从而无需手动获取脚本。Sortit
:silent! call Sortit()
\s
使用shell函数
以下文件sortit.sh包含 shell 函数
sortit
:并且可以被获取,之后可以在 shell 中调用该函数:
与 Vim 脚本一样,可以将此函数添加到用户的$HOME/.profile或类似文件中,从而无需获取脚本。
编辑:使用问题中链接的粘贴中的示例文本:
当然,如果您
-n
在 shell 函数中传递给 sed(1)sortit
,除非给出显式命令,否则它将不会产生任何输出p
,但在本例中没有意义。只是不要使用该选项,而是使用此答案中的文字命令?