Vim 使用

Undefined443發表於2024-06-06

Vim

vim 配置入門 | 阮一峰的網路日誌

Graphical cheat sheet

Practice

翻頁

向下翻頁:Ctrl + D(Down,翻半頁),Ctrl + F(Forward,翻一頁)

向上翻頁:Ctrl + U(Up,翻半頁),Ctrl + B(Backward,翻一頁)

編輯

  • i (insert): 游標處輸入

  • a (append): 下一個字元處輸入

  • o (open a line below): 下一行輸入

  • I: 行首輸入

  • A: 行尾輸入

  • O: 上一行輸入

複製、貼上和刪除

複製:y (yank)

複製當前行:yy

複製兩行:2yy

貼上:p (paste)

貼上三次:3p

刪除當前行:dd

撤銷:u (undo)

重做:Ctrl r

查詢和替換

查詢

向後查詢:/word

向前查詢:?word

查詢以 abc 開頭的行:/^abc

查詢以 abc 結尾的行:/abc$

重複查詢:n(下一個), N(上一個)

替換

  • :s/old/new (替換當前行第一個)
  • :s/old/new/g (替換當前行所有)
  • :%s/old/new/g (全域性替換)
  • :%s/old/new/gc (全域性替換,每次替換前詢問)
  • :1,9s/old/new/g (替換 1 到 9 行)
  • :.,$s/old/new/g (替換當前行到最後一行)
  • :%s/old/new/gi (忽略大小寫替換)
  • :%s#old#new#g (也可以使用其他間隔符)

替換當前字元:r

進入 REPLACE 模式:R

批次註釋和自定義快捷鍵

:1,9s/^/#/g  " 註釋 1 到 9 行
:1,9s/^#//g  " 取消註釋 1 到 9 行
:map ^P I#<Esc>  " 設定 Ctrl + P 為在行首新增 # 註釋
:map ^B 0x       " 刪除行首字元(刪除 #)
:unmap ^P        " 取消該快捷鍵
  1. ^P 使用 Ctrl + V + P 打出。
  2. I 表示在行首輸入,# 為輸入內容,<Esc> 表示退回命令模式。
  3. 0 表示跳到行首,x 表示刪除當前字元。

Vim 批次註釋和自定義註釋快捷鍵

簡書:Vim 文字替換

Vim 文字替換 | C 語言中文網

移動游標

跳轉到行首:0^ (0 是移到行的絕對開頭,^ 是移到第一個非空白符)

跳轉到行尾:$

跳轉到檔案開頭:gg

跳轉到檔案結尾:G

跳轉到第三行:3G 或者 :3

Misc

vim 選項

vim -r file         " 恢復上次 vim 開啟時崩潰的檔案
vim -R file         " 以只讀方式開啟
vim + file          " 將游標置於最後一行的行首
vim +n file         " 並將游標置於第 n 行的行首
vim +/pattern file  " 將游標置於第一個與 pattern 匹配的位置的行首
vim -c command file " 在對檔案進行編輯前,先執行指定的命令。

Vim 刪除文字

快捷鍵 功能描述
x 刪除當前字元
dd 刪除當前行
3dd 從當前行開始刪除 3 行
dG 刪除當前行及之後的所有內容
D 刪除行內當前字元及之後的內容
:1,9d 刪除 1 到 9 行的所有內容

注意,被刪除的內容並沒有真正刪除,都放在了剪貼簿中。按下 p 鍵,就可以將剛才刪除的內容再貼上到當前位置。

Vim 複製和貼上文字

快捷鍵 功能描述
p 將剪貼簿中的內容貼上到游標後
P 將剪貼簿中的內容貼上到游標前
y 複製已選中的文字到剪貼簿
yy 將當前行復制到剪貼簿
3yy 從當前行開始複製 3 行到剪貼簿
yw 將游標位置的單詞複製到剪貼簿
J 將當前行與下一行合併

Vim 撤銷和恢復

撤銷:u

重做:Ctrl r

撤銷或重做對當前行的操作:U

Vim 配置

命令 功能描述
:w file 另存為 file
:set nu 顯示行號
:set nonu 取消顯示行號
:set cursorline 突出顯示當前行
:set mouse=a
:set selection=exclusive
:set selectmode=mouse,key
啟用滑鼠
:set autoindent 自動縮排
:set tabstop=4 設定 Tab 鍵寬度
:set shiftwidth=4 設定自動換行縮排長度
:set expandtab 自動將 Tab 轉為空格
:syntax enable 開啟語法高亮
:set fileencoding=gbk 轉換檔案編碼
:set all 檢視所有的設定引數
:help nu 檢視幫助
  • 可以在開關類配置項的後面加 ? 來檢視配置項的值::set nu?

  • 可以在開關類配置項的後面加 ! 來切換配置項的值::set nu!

  • 可以在開關類配置項的後面加 & 來重置配置項的值::set nu&

  • 可以在開關類配置項的前面加 no 來關閉配置項::set nonu

  • :set nu 也可以寫作 :set number

  • 可以編輯配置檔案來更改 vim 的預設配置,此時不需要 :

  • 系統配置檔案:/root/.vimrc

  • 使用者配置檔案:~/.vimrc

  • 可以建立軟連結同步 root 配置:sudo ln -s ~/.vimrc /root/

Vim 顯示行號
Vim 配置檔案

Vim 移動游標

以單詞為單位移動:W B

移動到行首或行尾:$ ^0

移動到指定字元:f F

移動到頁首:gg

移動到頁尾:G

移動到第 3 行:3G:3

移動到匹配的括號處:%

Vim 視覺化模式

視覺化模式用於選中文字。

進入視覺化模式:v(按一下進入,再按一下退出)

行視覺化模式:V

塊視覺化模式:Ctrl + V

命令 功能
d 刪除選中的文字
D 刪除選中部分所在的行
y 將選中部分複製到剪貼簿中。
p 將剪貼簿中的內容貼上到游標之後
P 將剪貼簿中的內容貼上到游標之前
u 將選中部分的內容全部改為小寫
U 將選中部分的內容全部改為大寫
> 將選中部分右移一個 Tab 的長度
< 將選中部分左移一個 Tab 的長度

Vim 多視窗編輯模式

:sp/file 水平切分

:vs/file 垂直切分

也可以在開啟 Vim 時使用 -o 選項直接開啟兩個(多個)檔案:vim -o file1 file2

切換視窗:Ctrl + W + W

將一個檔案的所有內容複製到當前行下面的新行::r file

Vim 執行 Linux 命令

按下 !! 選中當前行,執行 Linux 命令,並用執行結果覆蓋選中內容。

按下 !} 選中當前行以及之後的所有行,執行 Linux 命令,並用執行結果覆蓋選中內容。

選中的內容會作為 Linux 命令的輸入

:! <command>   " 直接執行命令
:.! <command>  " 選中當前行執行命令
:1,9!          " 選中 1~9 行執行命令
:w!            " 選中檔案的所有內容執行命令,但命令的執行結果不會寫入到檔案。
:r!            " 直接執行命令,並將命令的執行結果插入到當前行下面的新行。
:3r!           " 直接執行命令,並將命令的執行結果插入到第 3 行下面的新行。
:1,9w!         " 選中 1~9 行執行命令,但命令的執行結果不會寫入到檔案。

實用命令

:%!sort

相關文章