tmux和vim精簡教程(非常詳細實用!)

来源:https://www.cnblogs.com/xxctx/p/18343036
-Advertisement-
Play Games

tmux tmux(Terminal Multiplexer)是一個終端復用器,它允許你在一個單一終端視窗內運行和管理多個終端會話。通過tmux,我們可以創建、訪問和控制多個終端視窗,併在這些視窗之間自由切換。這對於遠程工作、管理多個任務和長期運行的任務非常有用。 1、安裝 tmux 在 Ubunt ...


tmux

tmux(Terminal Multiplexer)是一個終端復用器,它允許你在一個單一終端視窗內運行和管理多個終端會話。通過tmux,我們可以創建、訪問和控制多個終端視窗,併在這些視窗之間自由切換。這對於遠程工作、管理多個任務和長期運行的任務非常有用。

1、安裝 tmux

在 Ubuntu 上安裝 tmux :

  1. 更新包列表:

    sudo apt update
    
  2. 安裝 tmux:

    sudo apt install tmux
    
  3. 配置 tmux:

    編輯 ~/.tmux.conf, 可以對 tmux 進行設置, 比如: 預設tmux 是不支持滑鼠滾動顯示內容, 滑鼠選擇對應的窗格, 不只是拉動分割線調整窗格大小的

    步驟 1:編輯 ~/.tmux.conf

    nano ~/.tmux.conf
    

    步驟 2:修改內容

    這裡我們把 tmux 預設的首碼按 修改成了 ctrl + a, 預設是 ctrl + b (個人習慣ctrl + a比較容易按, 感覺)。
    下麵講的命令當中 ctrl + a 預設是 ctrl + b

    # 設置新的首碼鍵為 Ctrl + a
    unbind C-b
    set-option -g prefix C-a
    bind-key C-a send-prefix
    # 啟用滑鼠支持
    set -g mouse on
    

    步驟3: 重新載入 tmux 配置

    tmux source-file ~/.tmux.conf
    

2、tmux 的結構

tmux 包括三個部分

Session(會話)

定義

  • 會話 是 tmux 的最頂層容器。它代表了一個獨立的終端環境,可以包含多個視窗。
  • 每個會話都是獨立的,意味著你可以在不同的會話之間切換,每個會話可以有自己的視窗和窗格。

特點

  • 會話可以在後臺運行,允許你在會話中斷開連接後仍然保留其狀態,稍後可以重新連接。
  • 在一個會話中,可以運行不同的任務或程式,每個會話可以配置不同的工作環境。

Window(視窗)

定義

  • 視窗 是會話中的一個虛擬終端。每個視窗可以視為一個獨立的工作區域,類似於你在一個終端中打開的不同標簽頁。
  • 一個會話可以包含多個視窗,每個視窗可以顯示不同的終端會話或任務。

特點

  • 視窗之間可以快速切換,使你可以在同一個會話中方便地切換不同的工作任務。
  • 每個視窗都有自己的獨立終端會話和命令行環境。

Pane(窗格)

定義

  • 窗格 是視窗中的子區域。一個視窗可以被分割成多個窗格,允許你在同一個視窗中併排顯示多個終端會話。
  • 窗格可以通過水平或垂直分割來創建,從而在一個視窗中同時顯示多個窗格。

特點

  • 每個窗格可以運行獨立的程式或命令,使你可以在同一個視窗中同時處理多個任務。
  • 窗格的分割和調整使你可以更高效地利用屏幕空間。

之間的關係

  1. 會話包含視窗

    • 一個 tmux 會話可以包含多個視窗。會話是所有視窗的容器,你可以在一個會話中創建、刪除或切換視窗。
  2. 視窗包含窗格

    • 每個視窗可以被分割成多個窗格。窗格是視窗的組成部分,你可以在視窗中創建、調整和關閉窗格。
  3. 會話 → 視窗 → 窗格

    • 一個會話可以包含多個視窗,每個視窗可以包含多個窗格。這樣的層級結構允許你在一個 tmux 實例中組織和管理多個任務和工作環境。

總結

  • 會話 是 tmux 的最頂層結構,包含了多個視窗。(會話可以不止一個,可以創建多個會話)
  • 視窗 是會話中的獨立工作區域,可以進一步分割成多個窗格。
  • 窗格 是視窗中的子區域,允許在同一個視窗中併排顯示多個終端會話。
+---------------------------------------------------------+
|                           Session                      |
|                           (會話)                        |
|                                                        |
|  +---------------------+  +---------------------+      |
|  |       Window 1      |  |       Window 2      |      |
|  |       (視窗 1)       |  |       (視窗 2)       |     |
|  |                     |  |                     |      |
|  |  +-------------+    |  |  +-------------+    |      |
|  |  |   Pane 1    |    |  |  |   Pane 3    |    |      |
|  |  |  (窗格 1)   |    |  |  |  (窗格 3)   |    |       |
|  |  +-------------+    |  |  +-------------+    |      |
|  |  +-------------+    |  |  +-------------+    |      |
|  |  |   Pane 2    |    |  |  |   Pane 4    |    |      |
|  |  |  (窗格 2)   |    |  |  |  (窗格 4)   |    |       |
|  |  +-------------+    |  |  +-------------+    |      |
|  +---------------------+  +---------------------+      |
|                                                        |
+---------------------------------------------------------+


2、tmux常用命令

啟動 tmux

打開終端,輸入以下命令啟動 tmux 會話:

tmux

# 這將啟動一個新的 tmux 會話,並自動進入該會話。

# 預設會創建一個 session 、 一個 window 、 一個 pane。 輸入 `tmux` 後進入的是 pane。

# 當 當前widow的所有pane都關閉的時候, 當前的window會自動關閉, 當 當前session的所有window都關閉時 當前的session會自動關閉

窗格管理

  • 將視窗拆分為上下兩個窗格:

    Ctrl + a 然後按 "
    
  • 將視窗拆分為左右兩個窗格:

    Ctrl + a 然後按 %
    
  • 在窗格之間切換:

    Ctrl + a 然後按箭頭鍵
    
  • 關閉當前窗格:

    Ctrl + d
    
  • 複製窗格內容

    1. 進入複製模式:
        Ctrl + a 然後按 [
        
    2. 使用箭頭鍵移動游標,選擇要複製的文本。可以使用 `Shift + 箭頭鍵` 來選擇多行內容。
    
    3. 按下 `Enter` 鍵以複製選定的文本。
    
    4. 在其他位置粘貼文本:
        Ctrl + a 然後按 ]
    
  • 全屏 當前窗格 和 退出 當前窗格

    Ctrl + a 然後按 z
    

會話管理

  • 掛起當前會話

    Ctrl + a 然後按下 d
    
  • 選擇性的打開掛起的會話

    Ctrl + a 然後按 s
    ← → 分別控制 展開和摺疊
    ↑ ↓ 分別控制 上下移動
    

(下麵的命令是在終端中輸入)

  • 打開之前的會話

    tmux a
    
  • 創建一個session

    # 這將創建一個名字叫 mysession 的session, 併進入到這個session中
    tmux new-session -s mysession
    
    # 這將創建一個名字叫 mysession 的session, 但不進入到這個session中
    tmux new-session -s mysession -d
    tmux new-session -d -s mysession
    
  • 顯示所有的 session

    tmux ls
    
  • 進入指定的 session

    tmux attach-session -t sessionname
    
  • 關閉指定的 session

    tmux kill-session -t sessionname
    
  • 關閉所有的 session

    tmux kill-service
    

以上就是 tmux 常用的命令,還有一些是對 視窗的操作, 但是不常用,當我們需要在一個 session 中開多個視窗的時候,完全可以再創建一個 session。

vim

vim(Vi IMproved)是一個強大的文本編輯器,它基於經典的 vi 編輯器,並增加了許多功能和改進。

1. 基礎概念

  • 模式vim 有幾種模式,最常用的是正常模式(Normal Mode)、插入模式(Insert Mode)、命令行模式(Command-Line Mode)。
    • 正常模式:這是 vim 的預設模式,你可以在此模式下進行文本導航和執行命令。
    • 插入模式:在此模式下,你可以像在普通文本編輯器中一樣輸入和編輯文本。在正常模式下按 iIaA 等鍵進入插入模式。
    • 命令行模式:在此模式下,你可以輸入命令以執行各種操作。在正常模式下按 :?\ 進入命令行模式。

模式切換

  • 從 正常模式 進入 插入模式 :按 iIaA
  • 從 正常模式 進入 命令行模式 :按 :/?
  • 從 插入模式 返回 正常模式 :按 Esc
  • 從 命令行模式 返回 正常模式 :按 Enter 執行命令或 Esc 取消命令。

它們的關係如圖所示:

				      	 	 +-------------------+
				      		  |                   |
				      		  |   正常模式        |
				      		  |  (Normal Mode)    |
				       		  |     (預設)         |
				       		 +----+----------+----+
				             /          		  \
				         按 i a A         			 按 : /
				           /              			  \
				+--------v--------+ 			 +--------v--------+
				|                 | 			 |                 |
				|   插入模式      |  			|  命令行模式     |
				|  (Insert Mode)  |  			| (Command-Line   |
				|                 | 			 |      Mode)      |
				+--------+--------+ 			 +--------+--------+
				          \              			  /
				        按 Esc      			    按 Esc
				          \         			   /
				       		   +----v-----+----+
				               |          		|
				               |   正常模式		|
				               |  (Normal  		|
				               |   Mode)   		|
				               +----------------+

1. 基礎操作

1.1、游標

移動游標

h j k l: 分別控制 左右上下
↑ ↓ ← →: 分別控制 上下左右

下麵這些都是正常模式下可用:

n<space>: 按下任意數字, 然後按下 space, 游標向後移動 n 位。()

home 或 0: 游標移動到本行開頭
end 或 $: 游標移動到本行結尾

G: 游標移動到最後一行開頭
gg: 游標移動到第一行開頭
n<G>: 按下任意數字n 然後按下 G, 游標移動到第n行開頭, 第一行是 1G

n<Enter>: 按下任意數字n 然後按下 Enter, 游標向下移動到n行

查找字元串

正常模式下輸入 "/"、"?" 進入命令行模式, 然後輸入 word, 回車,全文搜索匹配 "word" 字元串
/word: 向游標之下查找匹配word的字元串
?word: 向游標之上查找匹配word的字元串
n: 查看下一個匹配"word"的字元串
N: 查看上一個匹配"word"的字元串

1.2、操作文本

v: 按下 v, 然後移動游標, 會選中文本
d: 刪除選中內容,同時會複製到剪切板
dd: 刪除游標所在的一整行,同時會複製到剪切板
gg d G: 刪除所有內容。(按下 gg 游標移動到第一行開頭, 按下 d 開始刪除, 按下 G 游標移動到最後一行開頭), 當然你也可以用"gg v G d"
y: 複製選中內容
yy: 複製游標所在的一整行
p: 將剪切板的內容粘貼到 游標的下一個位置 或 游標所在行的下一行
u: 撤銷
Ctrl + r: 取消撤銷
Shift + >: 將所選內容向右移
Shift + <: 將所選內容向左移

:w : 保存
:q : 退出
:wq : 保存退出
:wq! : 強制保存退出

1.3、其他

:set nu : 顯示行號
:set nonu : 不顯示行號
gg = G : 格式化全部代碼。 (按下gg回到開頭, = 格式化代碼, G回到最後一行)
== : 格式化游標所在行的代碼
:set hlsearch
:noh : 關閉查找關鍵詞高亮
Ctrl + q: 取消當前正在執行的命令

:set paste : 設置成粘貼模式
:set nopaste : 取消粘貼模式

2. 配置文件

以下是一個常用的 vim 配置文件內容示例,這些配置可以提升 vim 的使用體驗。

你可以在用戶的根目錄下創建~/.vimrc文件, 然後把下麵內容粘貼進去就行了

# 輸入下麵命令, 然後右鍵把 vimrc 內容粘貼進來
nano ~/.vimrc

# 保存
Ctrl + O 然後回車

# 退出
Ctrl + x 

.vimrc 文件內容

" 顯示行號
set number

" 高亮當前行
set cursorline

" 顯示行號和列號
set ruler

" 啟用語法高亮
syntax on

" 啟用文件類型檢測和自動縮進
filetype plugin indent on

" 使用空格而不是製表符進行縮進
set expandtab

" 設置縮進寬度為 4 個空格
set shiftwidth=4
set tabstop=4

" 啟用自動縮進
set autoindent

" 啟用智能縮進
set smartindent

" 顯示匹配括弧
set showmatch

" 啟用搜索高亮
set hlsearch

" 啟用實時搜索
set incsearch

" 允許使用系統剪貼板
set clipboard=unnamedplus

" 使搜索不區分大小寫
set ignorecase

" 在搜索時考慮大小寫
set smartcase

" 顯示搜索提示
set showcmd

" 啟用拆分視窗
set splitbelow
set splitright

" 設置更好的撤銷功能
set undofile
set undodir=~/.vim/undodir

" 更好地顯示長行
set wrap

" 啟用摺疊功能
set foldmethod=syntax
set foldlevelstart=99

" 配置顏色方案(你可以選擇自己喜歡的主題)
colorscheme desert

" 配置狀態欄
set laststatus=2

" 增強插入模式下的體驗
set backspace=indent,eol,start

" 自動保存文件
set autowrite

" 顯示 tab 的寬度
set list
set listchars=tab:>-,trail:.,eol:$

" 在每行末尾顯示字元
set showbreak=+++

" 高亮當前行
hi CursorLine cterm=NONE ctermbg=darkgray

" 設置歷史記錄
set history=1000

" 自動縮進格式化
set formatoptions+=cro

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言 當我們需要快速測試代碼片段時,常見的做法是啟動Visual Studio或使用線上代碼編輯器。然而,Visual Studio的啟動可能較為緩慢且占用較多系統資源,而線上編輯器則可能遇到語法支持局限或網路延遲問題。 為解決這個問題,給大家推薦一款輕量級的本地C#執行工具——CSharpRepl ...
  • Spectre.Console.NET程式員可能都不陌生,寫控制台程式美化還是不錯的,支持著色,表格,圖標等相當Nice,如果對這個庫不熟悉我強烈推薦你瞭解一下,Spectre.Console.Cli作為Spectre.Console的子集,對於寫一些CLI小工具還是相當方便 本文主要講講 Spec ...
  • 一.事件回放二.主要問題剖析三.對博客園團隊的忠告 一.事件回放7 月 15 日,知名的經典博客站點 —— 博客園再次發佈了求救信,大概的意思是說現在園子又到了生死攸關的時候,需要開發者開通會員來相救。我用紅圈給大家標註了一些重點: 可以看出園子現在真的是很難了。。。不管怎麼樣,作為在博客園多年的作 ...
  • 前置 移除連接 要刪除連接,只需監聽來自連接器本身或編輯器的斷開連接事件,並刪除具有連接器作為源或目標的連接。為了簡單起見,我們將為 NodifyEditor 實現 DisconnectConnectorCommand。首先讓我們將其添加到 EditorViewModel。 public class ...
  • 在日常開發中,有時候需要將我們的程式隨著操作系統一起運行,並且無需人工干預。要實現這種效果,有很多種方法,比如:如果是桌面程式,可以設置到程式的啟動項;如果是Web程式,還可以托管到IIS中,而對於控制台程式,最常見在做法是將程式部署成Windows服務,並設置成自動運行,這樣當操作系統開機時,就會... ...
  • 拿到這道題,我們想一下,我們將整個字元串都反轉過來,那麼單詞的順序指定是倒序了,只不過單詞本身也倒序了,那麼再把單詞反轉一下,單詞不就正過來了。 所以解題思路如下: 移除多餘空格 將整個字元串反轉 將每個單詞反轉 舉個例子,源字元串為:"the sky is blue " 移除多餘空格 : "the ...
  • 前言 MethodTimer.Fody 是一個功能強大的庫,可以用於測量 .NET 應用程式中的方法的執行時間。允許你在不修改代碼的情況下,自動地測量和記錄方法的執行時間。 這個工具是基於.NET的 weaving 技術,通過修改IL(Intermediate Language,中間語言)代碼來插入 ...
  • 1、Linux文件系統概述 Linux文件系統是指操作系統用來控制文件如何存儲和檢索的結構和邏輯。 文件系統結構 根目錄: / Linux文件系統從根目錄(/)開始,這是所有文件和目錄的起點。 目錄結構: Linux使用層次化目錄結構,每個目錄包含文件和子目錄。 掛載點: 各種文件系統通過掛載點(m ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...