vim是解決文字快速處理(尤其是伺服器端)的神器,本文簡單總結下常用的命令。
1. 基本概念和功能
1.1 模式及其切換
vim中包括如下常見模式「
普通模式:vim啟動後的預設模式,可用於游標的移動、文字的刪除等。
插入模式:向文字中插入字元。
視覺化模式:用於區塊選擇,可通過v
一類的命令進入
命令列模式: 在命令行內輸入命令。在其它模式下,通過esc
進入命令列模式。
1.2 介面設定
:set number
顯示各行行號,set nonumber
取消該功能
:set list
顯示製表符和行末,set nolist
取消該功能
:set fileencoding
檢視當前檔案編碼
:e ++enc=gb18003
強制採用某種編碼重新開啟本文件(臨時的)
1.3 檔案儲存和退出
:w
儲存檔案但不退出vim
:w file
將修改儲存到file,但不退出vi
:wa
或zz
或:x
儲存檔案並退出vi
"q!
不儲存檔案,退出vi
:e
! 放棄所有修改,並從上次儲存檔案開始再編輯
2. 選擇區塊
通過游標移動選擇指定的字元區間/行/區塊,是實現其它複雜操作的基礎。
2.1 游標行內移動
->
或l
向右逐字元移動
<-
或h
左箭頭,向左逐字元移動
w
下乙個單詞的開頭, 可實現跨行
e
下乙個單詞的結尾,可實現跨行
b
上乙個單詞的開頭, 可實現跨行
^
行首(第乙個非空字元)
$
行末(最後乙個非空字元)
0
或|
:當前行的第一列
2.2 游標跨行移動
向上箭頭
或k
向上一行
向下箭頭
或j
向下一行
數字+向上/下箭頭
向上/下移動數字行
+
或enter
鍵 下一行的第乙個非空字元
-
上一行的的第乙個非空字元
h
: 螢幕第一行
m
: 螢幕中建行
l
: 螢幕最後一行
(
: 句子的開頭
)
: 句子的結尾
: 段落的結尾
ctrl+f
向前翻頁
ctrl+b
向下翻頁
gg
第一行
g
最後一行
數字+%
文件的 數字%處
2.3 指定文字定向查詢
:set ic 查詢時忽略大小寫
:set noic 查詢時對大小寫敏感
/text
命令列模式下輸入,從文字從頭開始,向下尋找目標字串,最終定位到字串所在行第乙個非空字元
?text
命令列模式下輸入,從文字從尾開始,向上尋找目標字串,最終定位到字串所在行第乙個非空字元
n
: 配合前面的/text
和?text
使用,向同一方向尋找下乙個。
n
: 配合前面的/text
和?text
使用,向相反方向尋找下乙個。
查詢功能還支援正規表示式,如^$
選擇空行。
2.4 視覺化模式
v
字元視覺化模式,文字選擇以字元為單位,跨行選擇時前序行會被全部選中。
v
行視覺化模式,文字選擇以行為單位,直接選擇所在所在行,
ctrl+v
塊視覺化模式,文字選擇以矩形區塊為單位,通過指定矩形左上角和右下角點,定義所選區塊,特別適用於選擇**列等場景。
3. 插入模式
3.1 進入插入模式
i
在游標所在位置處進入插入模式(效果類似於左側插入)
i
在游標所在行行首進入插入模式
a
在游標所在位置右邊進入插入模式(效果類似於右側插入)
a
在游標所在行行尾進入插入模式
o
在游標所在行下,插入新的一行進入插入模式
o
在游標所在行上,插入新的一行進入插入模式
s
刪除游標所在字元,並進入插入模式
s
刪除游標所在行,並進入插入模式
3.2 複製和剪下
yy
將當前行的內容複製到臨時緩衝區
nyy
將第n行的內容複製到臨時緩衝區
x
剪下
p
將臨時緩衝區內的文字貼上到游標後
p
將臨時緩衝區內的文字貼上到游標前
3.3 修改
c
: 視覺化模式選擇高亮指定文字後,使用c
即可刪除指定文字,同時進入插入模式
rchar
: 用 char 替換當前字元(注意是單個字元)
r text esc
: 用 text 替換當前字元直到按下 esc 鍵
3.4 刪除
d
: 刪除,注意刪除後的文字是在剪下板裡的,所以仍可將其進行p
操作
db
: 刪除游標前面的word
dw
: 刪至下乙個字的開頭
d^
: 刪除游標至行首
dw
: 刪除游標至行末
dd
: 刪除一行
dg
: 從當前行一直刪至檔案結束
數字+dd
: 刪除游標起的若干行
:m,nd
: 刪除第m-n行,其實這是進入命令列模式後的刪除,此處的m和n可以採用數字表示絕對行號,也可以採用+m
表示從本行開始往下的第m
行(+0表示本行),-m
同理
3.5 縮排
>
增加游標區域所在行的縮排
<
減少游標區域所在行的縮排
3.5 撤銷與反撤銷
u
撤銷上一步操作
u
撤銷當前行的所有修改
ctrl+r
恢復上一步被撤銷的操作
3.6 插入新文字
:r file
讀入檔案 file 內容,並插在當前行後
:nr file
讀入檔案 file 內容,並插在第 n 行後
3.7 批量替換
:ranges/oldtext/newtext/g
全文範圍內,用newtext 替換 oldtext
:m,ns/oldtext/newtext
第m-n行範圍內,用newtext 替換 oldtext,這裡的m和n除了用絕對行號,還可以使用相對行號
:g/text1/s/text2/text3
全文範圍內,查詢包含 text1 的行,用 text3 替換 text2,
:g/text/command
上一條命令的通用版本,在所有包含 text 的行執行 command 所表示的命令,這裡的g可以改為指定行區間
:v/text/command
上一條命令的反向命令,即所有不包含 text 的行執行 command 所表示的命令,這裡的g可以改為指定行區間
vim常用命令小結
跳轉到指定行 1.88g 命令模式 2.88 末行模式 跳轉檔案首 gg 命令模式 跳轉檔案尾 g 命令模式 自動格式化程式 gg g 命令模式 set shiftwidth 4大括號對應 命令模式 游標移至行首 0 命令模式 執行結束,工作模式不變。游標移至行尾 命令模式 執行結束,工作模式不變。...
vim 常用命令小結
1 開啟多個視窗 split 上下開啟視窗 vsplit 左右開打視窗 ctrl ww 視窗之間切換 ctrl wq 推出當前視窗 2 移動游標 數字 0 將游標移動到當前行首 將游標移動到當前行尾 g 移動到這個檔案的最後一行 ng n 為數字,移動到這個檔案的第n行.gg 移動到這個檔案的第一行...
vim使用常用命令小結
vim 是 linux 下的一款強大的文字編輯器。但是對於像筆者這種剛剛接觸 linux 的菜鳥來說 vim 的使用就略顯複雜了。本篇文章就詳細介紹下 vim 的使用。vim 有三種模式 一般模式 編輯模式和命令模式。使用vim filename開啟乙個文字檔案時就進入 vim 的一般模式,如果是在...