在默认情况下,当从 Tmux 中复制文本时,复制下来的文本只能粘贴到同一个 Tmux 会话中。若要使复制下来的文本可以粘贴到任何位置,就需要让 Tmux 将文本复制到系统的剪贴板。为此,我们需要这样做:
安装 retach-to-user-namespace。用 brew 安装的话将会非常简单,只需要运行下面这条命令:
$ brew install reattach-to-user-namespace
在配置文件 ~/.tmux.conf 中加入以下内容:
# invoke reattach-to-user-namespace every time a new window/pane opens
set-option -g default-command "reattach-to-user-namespace -l bash"
选择并复制文本既然已经设置成了 vi 模式,也安装了 rettach-to-user-namespace,下面就让我们来看看如何从 Tmux 的会话中复制文本吧。假设要复制的是 IP 地址,于是我们先运行了 ifconfig 命令。接下来就请跟随以下的步骤:
首先按下 Ctrl-b [ 进入复制模式,然后可以看到一小段高亮的文本出现在了屏幕的右上角 (“[0/0]”)(如下图所示)。
接下来就可以像在 Vim 中一样用 j、k、l 和 h 等键在文本间移动光标了。
把光标移动到想复制的文本上后再按下空格键就可以开始选择文本了(这和在 Vim 中复制文本的步骤一模一样)。
选择完要复制的文本后再按下回车键。
这样 IP 地址就复制下来并可以粘贴到任何地方了。
让复制文本的操作更像 Vim你还可以设置 Tmux 使用 v 键选择文本,用 y 键复制文本。为此只需要将下面的配置项加入到配置文件 ~/.tmux.conf 中。
# start selecting text typing 'v' key (once you are in copy mode)
bind-key -t vi-copy v begin-selection
# copy selected text to the system's clipboard
bind-key -t vi-copy y copy-pipe "reattach-to-user-namespace pbcopy"
高效的结对编程你可以将 Tmux 会话的地址分享给他人,这样他们就可以通过 SSH 接入这个会话了。由于会话是建立在 SSH 之上的,所以不会产生额外的开销。通过使用高速的互联网,对于那些连接到远程会话上的用户而言,他们会觉得这个会话就是运行在本地的。
在Tmux 中使用 TmateTmate 是一个 Tmux 的管理工具,使用它不但能够轻松地创建 Tmux 会话而且还能够通过互联网把该会话共享给其他人。若要使用 Tmate 共享 Tmux 会话,请按照以下步骤操作:
安装 Homebrew
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
安装 Tmate
$ brew update && \
brew tap nviennot/tmate && \
brew install tmate
使用 Tmate 开启一个新的会话
$ tmate
从 Tmux 的会话中复制由 Tmate 产生的 SSH URL。如下图所示,请注意屏幕下方的信息“[tmate] Remote session: ssh …”:
利用刚刚复制下来的 URL 就可以邀请其他人通过 SSH 访问你的会话了。
了解了如何利用 Tmux 的结对编程功能之后,还可以再利用您所喜爱的运营商提供的语音服务进一步加强会话交互性。
调整 Tmux 以增强其同 Vim 的集成度 调整背景的配色方案当我第一次通过 Tmux 打开 Vim 时,我发现 Vim 的颜色没有正确显示。正如下图所示,只有有字符的地方才有背景色。
这个问题是因为通过 Tmux 运行 Vim 需要配置一个特殊的终端参数(term parameter)。请将下面这行配置添加以你的 ~/.vim 文件中。
if exists('$TMUX')
set term=screen-256color
endif
在更新了配置文件 ~/.vimrc 以后,颜色应该就可以正确显示了。
调整光标的形状