我想调试一个进程,因此我将strace附加到进程并将输出重定向到文件然后执行操作.在此过程中,它创建了许多流程.所以这就是我想要做的,我想选择一个进程执行的所有系统调用.为此,我使用grep命令将pattern作为pid:
:grep pid %
Run Code Online (Sandbox Code Playgroud)
它显示了结果,但我无法遍历结果,它承诺
Press ENTER or type command to continue
Run Code Online (Sandbox Code Playgroud)
并返回文件.我想要做的是将结果存储在缓冲区中,然后查看它,如果需要,将其保存到文件中,或者丢弃它并返回到原始文件.有没有办法在退出vim编辑器时执行此操作?提前致谢.
我想搜索结果并将其存储在缓冲区中.
Mic*_*ral 28
多年来阅读各种日志,我学会了这个小技巧:
:%!grep pattern
Run Code Online (Sandbox Code Playgroud)
它只是用grep输出替换当前缓冲区内容(因此要返回原始日志,只需按下u).
您还可以将其与其他工具一起使用:
:%!ack pattern %
:%!ag pattern %
Run Code Online (Sandbox Code Playgroud)
对我来说,它是在Vim中快速点击大文件的最简单和最好的解决方案,我很惊讶没有人提到它.
seh*_*ehe 17
您可以转到较旧的搜索,然后轻松返回:
:copen
:colder " goes to older
:cnewer " newer
Run Code Online (Sandbox Code Playgroud)
您可以使用其他搜索lvimgrep(使用位置窗口):
:lopen
:lnext
etc...
Run Code Online (Sandbox Code Playgroud)
它也有历史:
:lolder
:lnewer
Run Code Online (Sandbox Code Playgroud)
你可以读入任何缓冲区:
:r!grep bla **/*.cs
Run Code Online (Sandbox Code Playgroud)
最后,任何提供输出的redir命令都可以使用以下命令重定向:
:redir >> file
:grep bla **/*.cs
:redir END
Run Code Online (Sandbox Code Playgroud)
请参阅有关:he redir使用它的多种方法(重定向到寄存器或变量).