acme“编辑器”有一个很棒的功能,您可以单击一些输出,例如
foobar.foo:212
acme 在该行号处打开该文件。
我很乐意在 tmux 中添加对类似内容的支持(我认为类似的东西已经不存在了)
我认为它的工作方式是,您进入复制模式,将光标放在一行上,然后运行一个命令,在您选择的编辑器中打开该行上的该文件。我的问题是 - 我不认为我可以在不分叉 tmux 的情况下实现类似的功能。有没有人有什么建议?
答案1
我不使用 acme,但我使用 Emacs。在 Emacs 中,可以将文件名传递给 open +<LINE_NUM> <FILENAME>
,例如:+13 ~/HINTS
.我将以下内容添加到我的~/.tmux.conf
:
bind C-e run "tmux save-buffer - | xargs emacs"
现在我可以+1 ~/HINTS
在终端中写入,进入复制模式并复制该字符串,然后按使用 EmacsC-b C-e
打开文件中的第 1 行。~/HINTS
答案2
您不能send-keys
直接使用 in copy-mode
,但您可以执行以下操作:
bind-key O send-keys space e enter \; new-window open-at-line \: paste-buffer \; send-keys enter
然后,在复制模式下,将光标放在 的第一个字母上filename:line
并点击<prefix> O
。
这将复制文件名和行号 ( send-keys space e enter
),使用命令打开一个新窗口open-at-line
,这是一个 shell 脚本:
#!/usr/bin/env zsh
read combo
eval `vim ${combo:s/:/ -c :/}`
得到组合后的filename:line
frompaste-buffer
并将其传递给vim
。