我试图找出一种体面的方法来将 tmux 缓冲区中的内容复制到剪贴板中。我尝试了一些不同的东西,比如
bind-key p select-pane -t 2 \; split-window 'xsel -i -b' \; paste-buffer
Run Code Online (Sandbox Code Playgroud)
这让我相当接近,我所要做的就是在我做前缀 p 之后点击 control-d。
我尝试通过这样做来解决这个问题
bind-key p select-pane -t 2 \; split-window 'xsel -i -b << HERE\; tmux paste-buffer\; echo HERE'
Run Code Online (Sandbox Code Playgroud)
但这根本行不通。事实上,如果我把它配对到只是
bind-key p select-pane -t 2 \; split-window 'xsel -i -b << HERE'
Run Code Online (Sandbox Code Playgroud)
它没有做任何事情,所以我假设拆分窗口不喜欢 shell 命令中的 << 。
有任何想法吗?
编辑:select-pane -t 2如果你愿意,你可以跳过,这并不重要。我只使用特定的布局,而窗格 2 是我在做其他事情时更喜欢拆分的布局,以便默认情况下进入涉及拆分的绑定。
我正在运行 tmux 1.6,并尝试将其配置为使用 vi 样式的键绑定以及在交互模式下复制时使用系统剪贴板:
set-window-option -g mode-keys vi
bind-key -t vi-copy 'v' begin-selection
bind-key -t vi-copy 'y' "copy-selection && run \"tmux save-buffer | xclip -selection clipboard\""
Run Code Online (Sandbox Code Playgroud)
简而言之,我希望能够执行C+[然后使用v开始选择要复制的文本,然后在y推送时,将选择复制到 tmux 选择,然后使用xclip.
不幸的是,当我尝试这样做时,我看到以下内容:
.tmux.conf: 14: unknown command: copy-selection && run "tmux save-buffer | xclip -selection clipboard"
Run Code Online (Sandbox Code Playgroud)
有没有办法在 tmux 配置中做到这一点?
我即将通过电子邮件与我的一个朋友一起参与一些散文写作。作为一个普通人,他当然会使用 MS Word 文档格式;作为一个大书呆子,我更喜欢在电脑上写作时使用 Markdown。
我需要的是这个关于将从网页复制的富文本转换为 markdown 的问题完全相反。我天真的最坏情况工作流程是:
pandoc -S file.mkd -o temp.htmltemp.html在网络浏览器中打开我确信这可以优化。
(在这种情况下,Google Docs 不是一个选项)。
尽管我已经回答了主要问题,但我仍然觉得这可以进一步优化。如果有任何方法可以连接 .doc 文件(我将接收和 pandoc 可以写入的文件),也许使用 libreoffice 命令行界面,那么我想有可能构建一个过于复杂的单行和完全避免离开航站楼。如果有人找到一种方法来做到这一点,我会很乐意接受我自己的答案。
将文本复制到剪贴板时,xclip提供了几个选择目标:
-selection
specify which X selection to use, options are:
"primary" to use XA_PRIMARY (default),
"secondary" for XA_SECONDARY
"clipboard" for XA_CLIPBOARD
Run Code Online (Sandbox Code Playgroud)
有没有办法针对多个选择?
我尝试了以下选项
echo "Hello world" | xclip -i -selection primary -selection clipboardecho "Hello world" | xclip -i selection primary | xclip -i selection clipboardecho "Hello world" | xclip -i selection primary,clipboard但他们都没有工作。
我注意到,如果源应用程序(内容是从其中复制的)关闭,有时剪贴板内容会变得不可用。
这让我想知道是否有可能知道源应用程序是什么(例如,可能通过 PID)。
为什么?如果源应用程序是终端,我想找到终端的工作目录,以防复制的内容是相对路径,以构建文件的完整路径。
仅供参考,我目前正在使用 xclip 来确定剪贴板内容,例如
xclip -selection primary -t STRING -o 2> /dev/null
Run Code Online (Sandbox Code Playgroud) 我试图找出一种方法,无需触摸鼠标即可将命令行中的当前文本复制到剪贴板。换句话说,我只需要用键盘选择文本。我找到了一个可能导致完整解决方案的半途而废的解决方案:
Ctrl+a - 移动到行首。
Ctrl+k - 切断整条线。
Ctrl+y - 将剪切的文本拉回来。
或者,我也可以Ctrl+u用来执行前两个步骤。
这当然有效,但我想弄清楚剪切文本的确切保存位置。有没有办法在不使用的情况下访问它Ctrl+y?我知道xclip并且我什至用它来将文本直接传输到剪贴板,所以我正在考虑通过管道传输Ctrl+kto保存的数据xclip,但不知道该怎么做。
到目前为止,我得到的方法是编写一个脚本,用于xdotool添加echo到行首和| zxc行尾,然后按回车键(zxc是一个自定义别名,基本上是通过管道连接到xclip)。这也有效,但它不是一个真正“干净”的解决方案。
如果这有什么不同,我正在使用 Cshell。
编辑:我不想screen用作解决方案,忘了提及。
谢谢!
我正在尝试给出以下命令:
echo "hi" | xclip -selection c
Run Code Online (Sandbox Code Playgroud)
这行不通?它过去曾奏效,但从未始终如一。我也试过
echo "hi" | xclip -selection primary
echo "hi" | xclip -selection clipboard
Run Code Online (Sandbox Code Playgroud)
等等....
xclip 已安装(我对 Linux 非常熟悉 :-) )并且没有输出,它只是移动到下一行并且我的剪贴板内容不会改变。
这是我的 linux 版本:
[1450] cgeorge@uaf-7 $ cat /proc/version
Linux version 2.6.18-371.1.2.el5 (mockbuild@builder10.centos.org) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-54)) #1 SMP Tue Oct 22 12:51:53 EDT 2013
Run Code Online (Sandbox Code Playgroud) 在 mu Ubuntu 12.04 设置上,我的 tmux 剪贴板复制和粘贴命令设置如下:
set -g prefix M-a
unbind C-b
bind C-c run "tmux save-buffer - | xclip -i -sel clipboard"
bind C-v run "tmux set-buffer \"$(xclip -o -sel clipboard)\"; tmux paste-buffer"
Run Code Online (Sandbox Code Playgroud)
直到大约一个月前,这在最长的时间内都非常有效,当时我怀疑进行了一些配置更改或包更改,从而破坏了上述情况。在 GNOME 终端中,粘贴对于prefix+ctrl-v和ctrl-shift-v.
然而,xclip无论我做什么,复制命令都不再起作用,我已经尝试删除上面的自定义前缀绑定,使用-select而不是-sel,不使用clipboard等。这对于像我这样的 GVim 用户来说几乎是一个表演塞子,因为我不甚至可以ctrl-shift-c使用 tmux 接管 shell的 GNOME 终端解决方法。我进入复制模式,用space+选择文本movement,当我执行prefix+ 时ctrl-c绝对没有任何反应。在此之前,tmux 会在底部的通知部分显示一条确认消息。
有没有人有关于如何调试这个的建议?这是一个相当大的生产力打击。我现在可能可以使用临时文件解决方法,但很高兴知道xclip.
我的目标是让我的远程机器 (CentOS 7.2) 上的文本可以使用标准的 ⌘V 快捷方式无缝粘贴到我的本地机器 (OS X 10.12.2) 上。我的设置连接到远程机器,ssh -Y然后附加到 tmux(如果不存在,则创建一个新会话)。当我运行echo "test" | xsel -ib或echo "test" | xclip挂起时。该$DISPLAY变量localhost:10.0。如果我退出 tmux,$DISPLAY变量似乎为空,并且出现无法打开显示错误。
假设我选择了一些 png 文件并运行以下命令:
xclip -selection clip -t image/png image.png
Run Code Online (Sandbox Code Playgroud)
我现在在剪贴板中有那个图像。如果我将它粘贴到接受图像的地方,它会按预期粘贴,一切都很好。
现在,请考虑我在 Firefox 地址栏或文本字段中按 ctrl+V 键入此内容。文件的二进制内容逐字粘贴到文本字段中,在某些情况下会导致浏览器挂起一阵子。
当然,我知道在那里粘贴图像没有意义,但有时我会不小心这样做,然后会导致问题。
当我粘贴我使用 firefox 的“复制图像”按钮复制的图像时,当我尝试粘贴它时它不会被粘贴,因此必须可以将它存储在剪贴板中以允许这种行为。
如何在剪贴板中放置图像而不使图像作为二进制数据逐字粘贴到文本字段中?如果可以以某种方式将图像和文本字符串(例如图像的路径或其他内容)放在剪贴板中,并在粘贴时选择合适的一个,那就太棒了。