1. 程式人生 > >Vi編輯器必備操作

Vi編輯器必備操作

溫馨提示:請結合右邊框的目錄結構快速檢視和判斷是否內容為自己需要!

vi 編輯器

內容組成

  • vi 說明
  • 開啟和新建檔案
  • 三種工作模式
  • 常用命令
  • 分屏命令
  • 常用命令列圖解

1. vi 簡介

1.1 vi 學習的必要性

  • 要對遠端伺服器進行相關的配置檔案的編輯,在無法使用圖形介面的情況下操作導致學會使用vi/vim的必要性,這一點被視為必須學會使用vi/vim的最重要原因。

  • 我想大多數情況下最好還是將檔案下載下來修改完成,確定無誤之後再提交可能是最好的方式,不然一條忘記判空 的 rm -rf(xxx==false)

    可能導致令人帥歪歪的結果。

  • 考慮到windows與linux即使在回車換行上都存在著差異,所以更加準確的最好使用伺服器端的環境進行檔案的編輯可以避免執行的異常。

  • 在沒有圖形介面的環境下,要編輯檔案,vi 是最佳選擇,理由是系統自帶,無需安裝其他的外掛/是軟體!

1.2 vi

  • viVisual interface 的簡稱,是 Linux 中系統自帶的一塊的文字編輯器。

  • 鍵盤有效鍵位區域-紅色標記部分。

  • vi 的特點:

    • 沒有圖形編輯器介面下的檔案,新建等選項,所以這是一款完全無指導意識的檔案編輯器,要麼
      /要麼 不會
    • 不能對字型、段落進行排版,比如設定字型大小,段落換行,像自帶的python,縮排決定程式邏輯的層次結構。
    • 值得恭喜的是概況檔案編輯器,不能通過點選滑鼠定位到具體位置。

vim

  • 可以視為vim是對vi友好型的改進,vim = vi improved

  • vim 是從 vi 發展出來的一個文字編輯器,支援 程式碼補全編譯錯誤跳轉 等方便程式設計的功能特別豐富,在程式設計師中被廣泛使用,被稱為 編輯器之神

  • 但是我最想表達的是: 懵逼,一直懵逼,全程懵逼(我在哪兒,我在幹什麼,這特麼是什麼鬼玩意,我要怎麼退出…

  • 導致的結果是,這款牛逼的編輯器,需要極多的快捷鍵-包括但不限於組合鍵,快捷命令需要記憶!

查詢命令位置

  • 在很多 Linux 發行版中直接把 vi 做成 vim 的軟連線,比如執行 vi test, 可能呼叫的是vim,vim初次進入編輯有簡單的快捷鍵提示。
# 查詢 vi 的執行檔案.

which vi
ls -l /usr/bin/vi
ls -l /etc/alternatives/vi
ls -l /usr/bin/vim.basic

# 查詢 vim 的執行檔案.
which vim
ls -l /usr/bin/vim
ls -l /etc/alternatives/vim
ls -l /usr/bin/vim.basic 

2. vi/vim檔案操作

2.1檔案開啟/建立

  • 在終端中輸入 vi 在後面跟上檔名 即可。
# for example.
# 當前目錄下建立Test.py檔案,若該檔案存在則開啟該檔案。
vi Test.py

2.1 開啟檔案並且定位行

  • 格式:vi Test.py + number
# 開啟Test.py,並且游標移動到10行。
vi Test.py + 10

提示:如果只帶上 + 而不指定行號,會直接定位到檔案末尾。

2.2 異常關閉檔案

  • 如果 vi 異常退出,在磁碟上會儲存Test.py.swap。
  • vi Test.py開啟後會有檔案提示,按下字母 d 可以將其刪除。

提示:按下鍵盤時,注意關閉輸入法。

3. 三種工作模式

  • vi 有三種基本工作模式:

    1. 命令模式
      • 開啟檔案首先進入命令模式,是使用 vi入口,可以理解為預覽模式。
    2. 末行模式 —— 執行 儲存退出 等操作
      • 要退出 vi 返回到控制檯,需要在末行模式下輸入命令
      • 末行模式vi出口
    3. 編輯模式 —— 正常的編輯文字。
    4. 切換方式:編輯模式->按鍵esc可以切換到命令模式->命令模式輸入:切換到末行模式->esc到命令列模式->按鍵i/I/a/A->編輯器模式。
    5. 記憶方式:任何模式下按 esc命令列 模式。以此為中轉,i 編輯;或者是 : 末行模式

提示:在 Touch Bar 的 Mac 電腦上 ,按 ESC 不方便,可以使用 CTRL + [ 替代。

末行模式命令

# 按esc進入命令列模式,:切換到末行模式,x儲存並且退出。
:x

4. 常用命令

命令學習

  1. 重複次數
    • 在命令模式下,先輸入一個數字再跟上一個命令,可以讓該命令 重複執行指定次數
  2. 移動和選擇(多練
    • vi 之所以快,關鍵在於 能夠快速定位到要編輯的程式碼行
    • 移動命令 能夠 和 編輯操作 命令 組合使用
  3. 編輯操作
    • 刪除複製貼上替換縮排
  4. 撤銷和重複
  5. 查詢替換
  6. 編輯

溫馨提示

  1. vi 的命令較多,記憶很多的命令列只會是忘記的更多而已,先掌握基礎的即可,熟練使用之後可以看手冊,效果更好。
  2. linux作業系統下注意輸入法的切換問題。

4.1 游標移動

前提條件,在命令列模式之下,或者叫做預覽模式之下進行的游標移動!

4.1.1 游標上、下、左、右移動

4.1.2 游標行內移動

  • 0是數字 0 ,不是字母 O

4.1.3 行數移動

# 比如我要移動要16行,命令列模式之下。
16gg

# 第二種方式.
16G

# 第三種方式,`:` 切換到末行模式!
:16

4.1.4 螢幕移動

  • 翻頁之後預設定位到頁的首行行首

4.2 移動

4.2.1 段落移動

  • vi 中使用 空行 來區分段落.
  • 在程式開發時,同一程式碼塊是沒有空行的,所以檔案的縮排,空行都是有要求的,不要瞎幾把換行。

4.2.2 括號切換

  • 在coding中,()[]{} 都是成對出現的。
  • 在命令列模式下可以通過 % 跳轉到該行的括號位置。

4.2.3 標記

  • 若要對跳轉到其他部分,但是又希望待會兒快速跳轉回來而不是一行一行的判斷到之前的行位置,可以通過新增標記的方式快速回到某行的具體位置。
  • 如:在命令列模式之下輸入 ma ,跳轉到其他位置後在命令列模式之下可以通過 ``a` 快速跳轉回來。

4.3 選中文字

  • 複製文字需要對說複製的文字內容進行選中,再進行復制貼上等操作。
  • vi 中要選擇文字,需要先使用 Visual 命令切換到 可視模式
  • 如下三種方式:

  • ESC 可以放棄選中,返回到 命令模式

  • 可視模式下,可以和游標移動連用,例如:ggVG 能夠選中所有內容。gg是行首行首,G是末行行末!

4.4 撤銷和恢復撤銷

  • 後悔對操作的執行,回退操作叫做撤銷,只能單方向,可以一直回撤到最初狀態;若又想取消做的撤銷操作叫做恢復撤銷。

4.5 刪除文字

提示:如果使用 可視模式 已經選中了一段文字,那麼無論使用 d 還是 x,都可以刪除選中文字。

注意刪除/剪下針對的是在vi下,自己獨有的緩衝區儲存,不是將剪下/刪除的內容儲存在剪貼簿。

  • 刪除命令可以和游標移動命令連用,以下是常見的組合命令:
* dw        # 從游標位置刪除到單詞末尾.
* d0        # 從游標位置刪除到一行的起始位置.
* d}        # 從游標位置刪除到段落結尾.
* ndd       # 從游標位置向下連續刪除 n 行.
* d程式碼行G   # 從游標所在行 刪除到 指定程式碼行 之間的所有程式碼.
* d'a       # 從游標所在行 刪除到 標記a 之間的所有程式碼.

4.6 複製、貼上

  • 命令列一覽

提示:

  • 命令 dx 類似於圖形介面的 剪下操作 —— CTRL + X
  • 命令 y 類似於圖形介面的 複製操作 —— CTRL + C
  • 命令 p 類似於圖形介面的 貼上操作 —— CTRL + V
  • vi 中的緩衝區類似於剪貼簿可以替換。

再次溫馨提示:

  • vi 中的 文字緩衝區 和系統的 剪貼簿 不是同一個!
  • 所以在其他軟體中使用 CTRL + C 複製的內容,不能在 vi 中通過 P 命令貼上
  • 可以在 編輯模式 下使用 滑鼠右鍵貼上

4.7 替換

  • R 命令可以進入 替換模式,替換完成後,按下 ESC 可以回到 命令模式
  • 替換命令 的作用就是不用進入 編輯模式,對檔案進行 輕量級的修改
  • 建議使用r的替換操作,比如修改Test的T為t,可以將游標移動到T,按r再按T。

4.8 縮排和重複執行

  • 重複命令的使用包括但是不限於複製貼上等,而是可以重複所有的命令的。

4.9 查詢

常規查詢

  • 查詢到指定內容之後,使用 Next 查詢下一個出現的位置:
    • n: 查詢下一個。
    • N: 查詢上一個。
  • 如果不想看到高亮顯示,可以隨便查詢一個檔案中不存在的內容即可!

單詞快速匹配

  • 通過單詞快速匹配,可以快速看到這個單詞在其他什麼位置使用過。比如函式名稱的查詢…

4.10 查詢並替換

  • vi 中查詢和替換命令需要切換到末行模式下執行。
  • 基本命令格式:
:%s///g

4.10.1 全域性替換

  • 一次性替換檔案中的 所有出現的舊文字
  • 命令格式如下:
:%s/舊文字/新文字/g

4.10.2 可視區域替換

  • 先選中 要替換文字的 範圍
  • 命令格式如下:
:s/舊文字/新文字/g

4.10.3 確認替換

  • 如果把末尾的 g 改成 gc 在替換的時候,會有提示!推薦使用!
:%s/舊文字/新文字/gc
  1. y - yes 替換
  2. n - no 不替換
  3. a - all 替換所有
  4. q - quit 退出替換
  5. l - last 最後一個,並把游標移動到行首
  6. ^E 向下滾屏
  7. ^Y 向上滾屏

4.11 插入命令

  • vi 中進入編輯模式方式有以下幾種:

程式碼重複與程式碼註釋

  • 移動到要添加註釋的 第 1 行程式碼,按 ^ 來到行首
  • 按 CTRL + v 進入 可視塊 模式,V進入的是行模式!
  • 使用 j 向下連續選中要新增的程式碼行
  • 輸入 I 進入 編輯模式,並在 行首插入,注意:一定要使用 I,行首。
  • 輸入 # 也就是註釋符號
  • 按下 ESC 返回到 命令模式,返回之後 vi 會在之前選中的每一行程式碼 前 插入 #

簡而言之就是:

選中行->行首插入#(視覺化行模式可能比視覺化塊模式此時更有益處)->esc返回

5. 分屏命令

  • 屬於 vi 的高階命令 —— 可以 同時編輯和檢視多個檔案

5.1 末行命令擴充套件

5.2 分屏命令

  • 使用 分屏命令,可以 同時編輯和檢視多個檔案

5.2.1 切換分屏視窗

分屏視窗都是基於 CTRL + W 這個快捷鍵的,w 對應的英文單詞是 window,切換之後才能繼續使用下面的命令列。

5.2.2 調整視窗大小

分屏視窗都是基於 CTRL + W 這個快捷鍵的,w 對應的英文單詞是 window

調整視窗寬高的命令可以和數字連用,例如:5 CTRL + W + 連續 5 次增加高度

6. 命令列圖解

圖片轉自網路!!!

vimrc

  • vimrcvim 的配置檔案,可以設定 vim 的配置,包括:熱鍵配色語法高亮外掛
  • Linuxvimrc 有兩個位置,使用者主目錄下的配置檔案優先順序更高。
/etc/vim/vimrc
~/.vimrc
  • 常用的外掛有:
    • 程式碼補全
    • 程式碼摺疊
    • 搜尋
    • Git 整合
    • ……
  • 網上有很多高手已經配置好的針對 python 開發的 vimrc 檔案,可以下載過來直接使用,或者等大家多 Linux 比較熟悉後,再行學習!