跳至主要内容

[Note] VIM 程式編輯器

keywords: vim, editor, cmd

👍即將失傳的古老技藝 Vim @ 高見龍

TL;DR

A      # 從行末開始編輯

d0 # 從此位置開始刪除到行首
d$ # 從此位置開始刪除到行末
dw # 從此位置刪除第一個單字
dd # 刪除此行

0 # 跳到行首
$ # 跳到行末

u # undo,回到上一步
[ctrl + r] # redo,回到下一步

W # word,往後跳一個單字
B # backward,往前跳一個單字

gg # 跳到文件第一行
G # 跳到文件最後一行

ZZ # 如果有修改的話就儲存並離開

使用 VIM 開啟檔案

vim            # 進入 VIM 編輯器
vim <filename> # 開啟某個檔案

[ctrl + Z] # 讓 VIM 進入背景
fg # 讓 VIM 回到主畫面

# 其他
:help <command>

文字編輯

i       # 進入 INSERT 模式
I # 進入 INSERT 模式,並跳到行首

a # append,在當前游標後一個字進入 INSERT 模式
A # 進入 INSERT 模式,並跳到行尾

o # 新增下一行並進入 INSERT
O # 新增上一行並進入 INSERT
[esc] # 離開編輯模式(或者 Ctrl + [ )

# VIM 刪除的內容會被放到暫存器中
x # 刪除當前游標的文字或所選文字
c # 刪除當前游標的文字或所選文字,並同時進入 INSERT
C # 刪除游標位置到行尾的所有內容,並同時進入 INSERT

d # 刪除所選文字
D # 刪除游標位置到行尾的所有內容
dd # 刪除一整行
2dd # 刪除兩行
dG # 刪除游標位置開始當文末的所有內容
dgg # 刪除游標位置開始當文首的所有內容

r # replace,取代游標的文字
R # 進入取代模式(REPLACE)

= # 排版,自動根據程式語言進行縮排(需先把要縮排的程式碼進行選取)
>> # 增加縮排,當有選取內容是只需要按一下 >
<< # 減少縮排,當有選取內容是只需要按一下 <
:set shiftwidth=2 # 變更縮排長

存檔和離開

# 存檔
:w <filename> # 存檔。僅第一次要輸入檔名,之後使用 :w 就會存檔
:q # 離開
:q! # 離開不存檔
:wq # 存檔並離開

移動游標

# 移動游標
hjkl # LBTR
gj # 跳到該句子的下一行
gk # 跳到該句子的上一行

w # word,一次跳動一個單字,但包含標點符號在內
W # word,一次跳動一個單字

b # backward,往前跳一個單字,但包含標點符號在內
B # backward,往前跳一個單字

} # 跳到下一個段落
{ # 跳到前一個段落

G # 跳到檔案的最末行
gg # 跳到檔案的第一行
8G # 跳到文件第 8 行

0 # 跳到行首
$ # 跳到行末

搜尋文字

/         # 搜尋
n # next,跳到下一個匹配到的結果
N # 跳到上一個搜尋結果

* # 搜尋游標位置的單字

f <字母> # 跳到該行游標後第一個匹配到的字母
F <字母> # 跳到該行游標前第一個匹配到的字母

:set hlsearch # 幫搜尋結果高亮
:set nohlsearch # 取消搜尋高亮

移動畫面

zz        # 讓游標的位置在畫面置中
zb # 讓游標的位置放在畫面下方
zt # 讓游標的位置放在畫面上方

選取、複製、貼上

進入 visual 模式後,搭配游標的移動,即可以選取文字

v         # 進入 visual 模式,以 character 為單位選取
V # 進入 visual 模式,並以「行」為單位選取


# 複製
y # yank,複製到暫存區(要先選取文字)

yy # 複製該行內容(不用選取)
2yy # 一次複製兩行

y$ # 從現在的位置開始複製到行末
yG # 從現在的位置開始複製到文末

“ay # 將所選文字複製到暫存器 a
"ap # 將暫存器 a 的內容貼上
:reg # 檢視暫存器內的所有內容

# 貼上
p # paste,貼上(不可以進入編輯模式)
5p # 重複貼上 5 次

# 上一步、下一步
u # undo,回到上一步
[ctrl + r] # redo,回到下一步

:set clipboard=unnamed # 讓 VIM 內的暫存器和電腦的剪貼簿通用

👍 Vim Cheat Sheet 👍 Learn Vim Progressively