是否可以实现以下目标
➜ ag editNote
src/store/actions.js
8:const editNote = ({ commit }, e) => {
26: editNote,
src/components/Editor.vue
5: @input="editNote"
22: 'editNote',
/frontend on master [✘!?]
➜ vi Ed
例如我想开始输入编辑并将其替换为
vi src/components/Editor.vue
答案1
shell,无论是 bash 还是 zsh,都无法访问终端回滚缓冲区。当 ag 运行时,它的输出直接发送到终端,并且不能被 shell 拦截。
根据您的终端类型,也许可以捕获回滚缓冲区的内容。可以诱导 rxvt-unicode 将其转储到带有转义序列“\e[0i”的临时文件中。对于 tmux,您可以使用tmux -q capture-pane \; save-buffer -b 0 $TMPFILE \; delete-buffer -b 0
.而屏幕也可以做到screen -X hardcopy $TMPFILE
。但是,所有这些解决方案只能在本地 zsh 会话中工作。一旦您使用 ssh 或类似工具,临时文件就不会与 zsh 位于同一系统上。
这些临时文件可用于自定义完成小部件。我有这样一个小部件,但粘贴在这里有点太长了。