Chế Độ
Chuyển Đổi Chế Độ
iChế độ Insert (trước con trỏ)
aChế độ Insert (sau con trỏ)
oChèn dòng phía dưới và vào chế độ Insert
OChèn dòng phía trên và vào chế độ Insert
vChế độ Visual (ký tự)
VChế độ Visual (dòng)
Ctrl+vChế độ Visual block
:Chế độ dòng lệnh
RChế độ Replace
EscQuay về chế độ Normal
Điều Hướng
Di Chuyển Ký Tự & Dòng
h j k lTrái, xuống, lên, phải
0 / ^Đầu dòng / ký tự đầu không phải khoảng trắng
$Cuối dòng
w / WTừ tiếp theo / WORD tiếp theo
b / BTừ trước / WORD trước
e / ECuối từ / WORD
f{c} / F{c}Tìm ký tự tiến / lùi
t{c} / T{c}Đến trước ký tự tiến / lùi
Di Chuyển Màn Hình & File
gg / GĐến dòng đầu / cuối
:{n}Đến dòng n
Ctrl+d / Ctrl+uCuộn nửa trang xuống / lên
Ctrl+f / Ctrl+bCuộn một trang xuống / lên
H / M / LĐầu / giữa / cuối màn hình
%Nhảy đến dấu ngoặc tương ứng
Chỉnh Sửa
Insert & Append
IInsert ở đầu dòng
AAppend ở cuối dòng
eaAppend ở cuối từ
giInsert tại vị trí insert cuối
Xóa & Thay Đổi
x / XXóa ký tự tại / trước con trỏ
ddXóa dòng
dwXóa từ
d$ / DXóa đến cuối dòng
cc / SThay toàn bộ dòng
cwThay từ
c$ / CThay đến cuối dòng
ci" / ci(Thay bên trong dấu nháy / ngoặc
Sao Chép & Dán
yyYank (sao chép) dòng
ywYank từ
y$Yank đến cuối dòng
p / PDán sau / trước con trỏ
JNối dòng phía dưới vào dòng hiện tại
Undo & Lặp Lại
uUndo
Ctrl+rRedo
.Lặp lại lệnh cuối
Tìm Kiếm & Thay Thế
Tìm Kiếm
/patternTìm kiếm tiến
?patternTìm kiếm lùi
n / NKết quả tiếp / trước
*Tìm từ tại con trỏ (tiến)
#Tìm từ tại con trỏ (lùi)
Thay Thế
:s/old/new/ " replace first on line :s/old/new/g " replace all on line :%s/old/new/g " replace all in file :%s/old/new/gc " replace all, confirm each
Chế Độ Visual
Chọn Vùng
vBắt đầu chọn ký tự
VBắt đầu chọn dòng
Ctrl+vBắt đầu chọn block
oDi chuyển đến đầu kia vùng chọn
gvChọn lại vùng visual cuối
Hành Động Trên Vùng Chọn
dXóa vùng chọn
yYank vùng chọn
cThay vùng chọn
>Thụt lề vùng chọn
<Bỏ thụt lề vùng chọn
~Đổi hoa/thường
U / uChữ hoa / chữ thường vùng chọn
Buffer & Cửa Sổ
Buffer
:lsLiệt kê buffer đang mở
:bn / :bpBuffer tiếp / trước
:b{n}Đến buffer n
:bdĐóng buffer hiện tại
:e fileMở file trong buffer mới
Cửa Sổ
:sp fileChia ngang
:vsp fileChia dọc
Ctrl+w h/j/k/lĐiều hướng đến cửa sổ
Ctrl+w =Cân bằng kích thước cửa sổ
Ctrl+w qĐóng cửa sổ
Tab
:tabnew fileMở file trong tab mới
gt / gTTab tiếp / trước
:tabcloseĐóng tab hiện tại
Register
Sử Dụng Register
"ayYank vào register a
"apDán từ register a
"AyNối yank vào register a
:regHiển thị tất cả register
Register Đặc Biệt
""Không tên (xóa/yank cuối)
"0Yank cuối
"+Clipboard hệ thống
"/"Pattern tìm kiếm cuối
".Văn bản insert cuối
"_Hố đen (bỏ qua)
Macro
Ghi & Phát
q{a}Bắt đầu ghi macro vào register a
qDừng ghi
@{a}Phát macro từ register a
@@Phát lại macro cuối
5@aPhát macro a 5 lần
Ví Dụ Macro
qa " start recording into a I// " insert // at line start Esc j " return to normal, move down q " stop recording 10@a " comment next 10 lines
Cài Đặt
Tùy Chọn Phổ Biến
:set number " show line numbers :set relativenumber " relative line numbers :set tabstop=4 " tab width :set expandtab " spaces instead of tabs :set ignorecase " case-insensitive search
Hiển Thị & Hành Vi
:set wrap / nowrap " toggle line wrapping :set hlsearch " highlight search matches :set incsearch " incremental search :set cursorline " highlight current line :syntax on " enable syntax highlighting
Thao Tác File
Lưu & Thoát
:wLưu
:w fileLưu thành file
:qThoát (thất bại nếu chưa lưu)
:q!Thoát không lưu
:wq / :x / ZZLưu và thoát
:waLưu tất cả buffer
:qaThoát tất cả buffer
Thông Tin File & External
Ctrl+gHiển thị thông tin file
:!cmdChạy lệnh shell
:r !cmdChèn output lệnh
:r fileChèn nội dung file
Text Object
Inner & Around Object
iw / awBên trong / bao quanh từ
is / asBên trong / bao quanh câu
ip / apBên trong / bao quanh đoạn
i" / a"Bên trong / bao quanh dấu nháy kép
i' / a'Bên trong / bao quanh dấu nháy đơn
i( / a(Bên trong / bao quanh ngoặc đơn
i{ / a{Bên trong / bao quanh ngoặc nhọn
it / atBên trong / bao quanh thẻ HTML
Kết Hợp Phổ Biến
ciw " change inner word di" " delete inside quotes ya{ " yank around braces vip " select inner paragraph
Mark & Jump
Mark
m{a}Đặt mark a tại vị trí con trỏ
'aNhảy đến dòng của mark a
`aNhảy đến vị trí chính xác của mark a
:marksLiệt kê tất cả mark
Jump List
Ctrl+oNhảy về vị trí trước
Ctrl+iNhảy đến vị trí tiếp
:jumpsHiển thị jump list
''Nhảy đến vị trí jump cuối