日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Tmux: 打造精致与实用并存的终端

發(fā)布時(shí)間:2023/12/2 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Tmux: 打造精致与实用并存的终端 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

由于最近需要經(jīng)常 ssh 到遠(yuǎn)程環(huán)境,遂趁此折騰了一番 tmux。畢竟 工欲善其事,必先利其器

以下是我的配置文件地址,并在不斷摸索與更新中。特別喜歡 solarized 主題,于是參考它配了狀態(tài)欄的主題。在后邊我會(huì)列出一些平時(shí)使用的技巧,并且歡迎補(bǔ)充~ 如果能夠幫到你的話,希望點(diǎn)一個(gè)贊或者star

  • github.com/shfshanyue/…

先放張截圖,先睹為快,這是在 Mac 下的截圖。

本文鏈接: shanyue.tech/post/tmux-s…

簡(jiǎn)介

tmux is a terminal multiplexer

tmux 是一個(gè)終端復(fù)用器,你可以在一個(gè)屏幕上管理多個(gè)終端!

就我理解,tmux 有以下三大好處

  • 分屏 誠然,iterm2 也是可以做到分屏的,但是 iterm2 有一個(gè)缺點(diǎn)便是 iterm for Mac。 而且,iterm2 分屏也需要不斷地 ssh <server>。導(dǎo)致的后果就是有多個(gè)用戶連接,使用 ps aux | grep sshd | grep -v grep 查看連接數(shù)。
  • attach attach 可以起到保護(hù)現(xiàn)場(chǎng)的作用,不至于因 ssh timeout,而喪失了工作環(huán)境。
  • 可配置化
  • 基礎(chǔ)

    啟動(dòng)

    新建一個(gè) tmux session,不過建議您使用以下 Tips 1 來新建

    $ tmux # 新建一個(gè) tmux session,不過建議您使用以下 Tips 1 來新建。 復(fù)制代碼

    術(shù)語

    • server 包含多個(gè) session
    • session 包含多個(gè) window
    • window 類似于 iterm2 的 Tab,包含多個(gè) pane,以下中文會(huì)翻譯為窗口
    • pane 類似于 iterm2 的 Pane,以下中文會(huì)翻譯為面板

    常見命令

    • bind-key (bind)?:綁定快捷鍵,按 prefix 鍵與快捷鍵觸發(fā)。
    • set-option (set) : 設(shè)置選項(xiàng)
    • source-file (source) : 生效當(dāng)前配置文件
    • new-window : 新建窗口,默認(rèn)快捷鍵 prefix c
    • split-window : 分屏

    自定義狀態(tài)欄

    喜歡 solarized 主題,但是背景色在終端下不大漂亮,選擇了 tomorrow 中的一個(gè)背景色替代。

    message-command-style

    設(shè)置狀態(tài)欄信息的樣式,以逗號(hào)分隔,可設(shè)置前景色 fg,背景色 bg,與文字修飾,如斜體 italics,粗體 bold 等等。如下例

    "fg=yellow, bg=#abcdef, underscore" 復(fù)制代碼

    自定義狀態(tài)欄

    可以自定義狀態(tài)欄的內(nèi)容,如窗口號(hào),窗口名,host,用電量,時(shí)間等等。

    • #{host} tmux 會(huì)提供一些關(guān)于自身狀態(tài)的變量,比如 session-name,window-name,host 等等。比如以 #{host} 這種形式來代替 host,#{window-name} 代替 window-name。
    • #(uptime) 除了在狀態(tài)欄中 tmux 相關(guān)信息,有時(shí)還需要取到系統(tǒng)相關(guān)信息,如開機(jī)時(shí)間,當(dāng)前用戶。這些系統(tǒng)命令可以表示為 #(uptime)。
    set -g message-style "bg=#00346e, fg=#ffffd7" # tomorrow night blue, base3set -g status-style "bg=#00346e, fg=#ffffd7" # tomorrow night blue, base3 set -g status-left "#[bg=#0087ff] ? #S " # blue set -g status-left-length 400 set -g status-right "#{?client_prefix, ~ , } #[bg=#0087ff] #h #[bg=red] %Y-%m-%d %H:%M " set -g status-right-length 600set -wg window-status-format " #I #W " set -wg window-status-current-format " #I #W " set -wg window-status-separator "" set -wg window-status-current-style "bg=red" # red set -wg window-status-last-style "fg=red" 復(fù)制代碼

    Tmux Tricks

    保持 ssh 連接

    每次新建 session 的時(shí)候帶上名字,方便下次 attach 。稍微提一個(gè)命令 detach,默認(rèn)快捷鍵 prefix d,會(huì)先 detach 掉當(dāng)前 session。

    $ tmux new -s shanyue $ tmux detach $ tmux attach -t shanyue 復(fù)制代碼

    快速移動(dòng)面板

    移動(dòng)面板命令為 select-pane,可配置為 vim 式的移動(dòng)命令。

    bind -r h select-pane -L bind -r l select-pane -R bind -r j select-pane -D bind -r k select-pane -U 復(fù)制代碼

    其中,參數(shù) -r 代表可重復(fù)按鍵,比如 prefix r r 表示 prefix r, prefix r。其中按鍵時(shí)間需要通過 repeat-time 來設(shè)置,一般為500ms。

    另外,也可以開啟鼠標(biāo)支持,通過鼠標(biāo)快速移動(dòng)面板。

    向終端發(fā)送 prefix key

    我習(xí)慣 Crtl-s 來作為前綴鍵,send-prefix 為向終端發(fā)送前綴鍵的命令。

    set -g prefix2 C-s bind C-s send-prefix -2 復(fù)制代碼

    重命名窗口名

    rename-window 為重命名窗口名的命令,默認(rèn)快捷鍵 prefix ,。

    但是有一個(gè)小問題,每當(dāng)重命名窗口名后,敲幾個(gè)空格又會(huì)自動(dòng)重命名,自己的辛勤工作又被破壞了...

    需要配置以下兩個(gè)配置把它倆給關(guān)了,終于可以重命名了

    set -wg allow-rename off set -wg automatic-rename off 復(fù)制代碼

    配置編輯和重啟快捷鍵

    把打開和重啟配置文件設(shè)為快捷鍵可以快速提高配置效率。設(shè)置 prefix r 重啟并更新配置,便于調(diào)試配置文件。prefix e 打開配置文件。

    source ~/.tmux.conf 使配置文件生效,即重啟配置。 new-window -n <window-name> command 新建窗口,并設(shè)置窗口名,-n 代表新建的窗口名

    bind r source ~/.tmux.conf\; display "tmux config sourced" bind e neww -n tmux-config "\${EDITOR:-vim} ~/.tmux.conf 復(fù)制代碼

    開啟鼠標(biāo)支持

    $ tmux set -g mouse on

    鼠標(biāo)支持默認(rèn)是關(guān)閉的,開啟鼠標(biāo)后,支持復(fù)制,翻屏,切換面板,切換窗口,resize。

    鼠標(biāo)支持的功能很強(qiáng)大,至此已經(jīng)成功打造了一個(gè) iterm2 了。不過鼠標(biāo)模式我不大喜歡,所以還是禁了。

    何況,開啟鼠標(biāo)支持后,誰都可以操作我的終端了,一點(diǎn)逼格也沒有了

    保持當(dāng)前路徑

    新開 pane 和 window 時(shí),保持當(dāng)前路徑。為以前的命令添加參數(shù) -c,表明新建窗口或者面板的路徑。

    新開面板的命令為 split-window

    bind c new-window -c "#{pane_current_path}" bind % split-window -h -c "#{pane_current_path}" bind '"' split-window -c "#{pane_current_path}" 復(fù)制代碼

    最大化當(dāng)前面板

    命令為 tmux resize-pane -Z,默認(rèn)快捷鍵為 prefix z。需要查看更加詳細(xì)的信息時(shí)可以按 prefix z 進(jìn)入全屏,完畢之后,再按一次恢復(fù)。相當(dāng)酷的一個(gè)功能。

    翻屏

    第一次使用 tmux 時(shí), 使用webpack,輸出信息很多,而有用的錯(cuò)誤信息被覆蓋。此時(shí),往上翻屏就很重要了。此時(shí)要說下 tmux window 下的兩種模式,

    • default-mode

      就是剛進(jìn)入 tmux 默認(rèn)的模式。

    • copy-mode:

      按 prefix [ 鍵進(jìn)入此模式,類似于 vi(emacs) 的 normal mode,支持復(fù)制,粘貼,查找,以及翻頁。具體是 vi 還是 emacs 可以根據(jù)以下命令探知,表明查看全局窗口設(shè)置 mode-keys,默認(rèn)會(huì)是 vi,如果不是,那就請(qǐng)?jiān)O(shè)置為 vi 吧~

      $ tmux show-window-options -g mode-keys 復(fù)制代碼

      與 vi 命令相同,如上下翻頁(半屏)可使用 C-d 以及 C-u,當(dāng)然你也可以使用 hjkl。

    另外,也可以開啟鼠標(biāo)支持,使用滾輪來翻屏。

    復(fù)制與粘貼

    上邊說到 copy-mode,接下來是復(fù)制與粘貼。進(jìn)入 copy-mode 后,v 開始選中,y 來進(jìn)行復(fù)制并會(huì)退出 copy-mode。使用 prefix ] 來進(jìn)行粘貼。

    v & y 為自定義配置,配置如下

    bind -t vi-copy v begin-selection bind -t vi-copy y copy-selection 復(fù)制代碼

    復(fù)制操作會(huì)把內(nèi)容存進(jìn) buffer 里,熟悉以下幾個(gè)命令能夠更熟練地操作 buffer

    $ tmux list-buffers # 列出所有 $ tmux show-buffer -b [name] # 顯示最近 buffer,也可指定 buffer name $ tmux choose-buffer&emsp;&emsp; &emsp;# 進(jìn)入選擇 buffer 界面,更加靈活 復(fù)制代碼

    另外,也可以開啟鼠標(biāo)支持,用鼠標(biāo)來選擇文字。

    查找關(guān)鍵字

    既然進(jìn)入 copy-mode,熟悉 vi 的朋友一定知道查找是 / 與 ?。

    快速定位窗口

    假設(shè)你新建了多個(gè)窗口,需要快速定位到某一個(gè)窗口,而你雖知道那個(gè)窗口中的內(nèi)容,卻忘了窗口號(hào),這樣如何解決呢?

    有一個(gè)很好的解決方案的命令便是 find-window,更好用的便是默認(rèn)的快捷鍵 prefix f。輸入窗口內(nèi)容的關(guān)鍵字,便可以快速定位到窗口,不過有一個(gè)小小的缺點(diǎn),便是不能定位到面板!

    Last but not least

    man tmux ! **不看文檔不足以熟練,不看源碼不足以精通。**所以,平常需要多看幾眼文檔,多瞧幾個(gè)命令。

    擴(kuò)展

    • practical-tmux
    • gpakosz/.tmux (stars 1569)
    • tmux-resurrect 保護(hù)和恢復(fù)工作狀態(tài)

    轉(zhuǎn)載于:https://juejin.im/post/5d33d45b5188254d3c5e59f0

    總結(jié)

    以上是生活随笔為你收集整理的Tmux: 打造精致与实用并存的终端的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。