如何在Tmux emacs复制模式下复制文件(>;1窗格)的全部内容?

如何在Tmux emacs复制模式下复制文件(>;1窗格)的全部内容?,emacs,tmux,Emacs,Tmux,我想在tmux中使用emacs复制模式复制文件的全部内容 但是,当我进入复制模式时,键入C-space开始高亮显示文本,然后键入M->跳到文件的末尾,最后我只跳到tmux窗格底部的文件信息部分 下面是一张照片,展示了发生的情况: 编辑:我是新用户,显然还不能发布图片。但基本上,您可以想象在tmux复制模式下高亮显示(选中)的黄色文本。我只能在窗格底部高亮显示文件的结尾(看起来有点像这样): 我的问题是,如何进入复制模式,开始选择文本,然后跳到文件的末尾 如果这不是实现我的目标(在tmux中复制整

我想在tmux中使用emacs复制模式复制文件的全部内容

但是,当我进入复制模式时,键入C-space开始高亮显示文本,然后键入M->跳到文件的末尾,最后我只跳到tmux窗格底部的文件信息部分

下面是一张照片,展示了发生的情况:

编辑:我是新用户,显然还不能发布图片。但基本上,您可以想象在tmux复制模式下高亮显示(选中)的黄色文本。我只能在窗格底部高亮显示文件的结尾(看起来有点像这样):

我的问题是,如何进入复制模式,开始选择文本,然后跳到文件的末尾

如果这不是实现我的目标(在tmux中复制整个文件的内容)的最佳方法,那么还有什么更好的方法呢

谢谢

p、 美国

我遵循了这里的说明:

还有实用tmux手册中的说明

如果有帮助,下面是我的.tmux.conf文件中的相关行(我主要是从实用的tmux书籍中复制的):

tmux并不真正理解您正在其提供的tty中运行emacs。它只知道写了什么给那个tty;因此,当您在tmux
copy mode
中按M->时,它只会移动到窗格滚动历史的底部(在
copy mode
中按M->运行(
copy mode
-specific)tmux命令
history bottom

您确实需要从emacs内部解决这个问题。以下是一些(可交互运行的)示例函数,可以绑定到emacs中的键:

如果要绕过缓冲区而使用文件(即,从磁盘上的文件而不是缓冲区(可能已修改)的内容创建缓冲区),可以使用以下方式:

-u-:----F1 file_name.rb      Top L1      (Ruby)---------------------------------
(defun write-buffer-file-to-tmux-buffer ()
  (interactive)
  (let ((fn (buffer-file-name)))
    (if fn
        (shell-command
         (concat "tmux load-buffer "
                 (shell-quote-argument fn)))
      (error "Not a file-backed buffer"))))

答案是肯定的,而且很简单:

您需要运行一个tmux命令。您可以通过执行Ctrl+b+:并键入命令来运行tmux命令

load-buffer path


简而言之

thx是答案。由于到目前为止我只复制/粘贴了emacs配置,因此可能需要一些黑客技术才能弄清楚这一点。所以一旦我弄明白了,我会重新考虑你的答案。注:我有o'reilly的“学习GNU emacs,3d版”,“编写GNU emacs扩展”,以及FSF的“GNU emacs手册”供参考。如果您熟悉这些源代码(或其他参考资料)——并且有几分钟的时间——请随时向我指出将教我如何使用示例函数绑定到emacs中的键的信息-谢谢!我确实不是一个Emacs用户,但是类似于
(全局设置键(kbd“C-C t”)'将区域写入tmux缓冲区)
可能会工作(即在
.Emacs
文件中,以及函数定义中)。这太棒了-thx!为了解决这个问题,我在我的~/.emacs文件中添加了
(将缓冲区文件写入tmux缓冲区()…
(全局设置键(kbd“C-C t”)“将缓冲区文件写入tmux缓冲区”)
。然后,在tmux内部,我将emacs放入一个文件中,按下
C-C
然后
[前缀]C-C
,并将输出粘贴到TextEdit.app(测试).worked like a charm.yep这同样有效。在tmux中不实际查看文件时,复制文件内容似乎更方便。在SSH中不起作用
(defun write-buffer-file-to-tmux-buffer ()
  (interactive)
  (let ((fn (buffer-file-name)))
    (if fn
        (shell-command
         (concat "tmux load-buffer "
                 (shell-quote-argument fn)))
      (error "Not a file-backed buffer"))))
load-buffer path
loadb path