Tổng hợp lệnh vi trong Linux | 3 chế độ của Vim và chế độ Visual

Thông báo tiếp thị liên kết Ver 3.1
Thông báo tiếp thị liên kết Ver 3.2 (chỉ trên di động)
Môi trường thử nghiệmHọ RHELAlmaLinux 9.8Tài khoản rootKiểm tra ngày 2026-10-07

Mở vi rồi mà gõ chữ không vào, hoặc không biết cách thoát nên đành đóng luôn cửa sổ — người mới làm quen với server ai cũng từng gặp một lần. Lệnh vi trong Linux tách riêng chế độ lệnh và chế độ chèn, nên một khi biết mình đang ở chế độ nào, phần còn lại chỉ cần vài phím. Bài viết này tổng hợp ba chế độ và các lệnh của từng chế độ thành bảng, đồng thời cho bạn tự gõ vi trên server ảo ngay trong trình duyệt.

Trên AlmaLinux 9.8, cả vi và vim đều là gói vim 8.2; các màn hình và thông báo trong bài này đều lấy từ vim. Nếu chưa cài, hãy cài bằng [dnf -y install vim-enhanced].

Sơ đồ chuyển đổi giữa ba chế độ của lệnh vi trong Linux Sơ đồ ba chế độ của lệnh vi trong Linux

✅ Ba chế độ của vi

Trong vi, cùng một phím làm những việc khác nhau tùy theo chế độ. Khi mở tệp, vi bắt đầu ở chế độ lệnh; nhấn i để vào chế độ chèn và gõ chữ, nhấn Esc để quay lại, rồi nhấn dấu hai chấm [:] để vào chế độ dòng cuối, lưu và thoát.

Chế độPhím để vàoChức năng
Chế độ lệnh (Normal mode)Mặc định khi mở vi · Esc từ chế độ khácDi chuyển con trỏ, xóa, sao chép, dán, hoàn tác
Chế độ chèn (Insert mode)i a I A o ONhập chữ. Cuối màn hình hiện [-- INSERT --]
Chế độ dòng cuối (Last-line mode):Lưu · thoát · thay thế · thiết lập số dòng. Cuối màn hình hiện dấu :
Chế độ Visualv V Ctrl-vChọn vùng rồi xóa · sao chép · nhập hàng loạt

Có ba cách mở tệp từ console.

LệnhMô tả
vi tên_tệpMở tệp và bắt đầu ở chế độ lệnh. Nếu tệp chưa có thì tạo mới và hiện [New]
vi +20 tên_tệpMở tệp với con trỏ đặt ở dòng 20
view tên_tệp= vi -RMở ở chế độ chỉ đọc. Sửa thì hiện cảnh báo [W10], lưu thì báo [E45]

Gõ [vi httpd.conf] trên server ảo bên dưới thì vi sẽ mở ra, và menu bên trái chuyển thành các lệnh bên trong vi. Bấm vào chip thì phím đó được nhập vào màn hình, hoặc bạn cũng có thể gõ trực tiếp bằng bàn phím.

Trình mô phỏng lệnh vivim 8.2
[root@server work]#
Chỉ chạy trong trình duyệt và không đụng đến tệp thật. Trước hết, hãy mở tệp bằng vi httpd.conf, menu bên trái sẽ chuyển thành các lệnh bên trong vi. Bấm vào chip thì phím đó được nhập vào màn hình, hoặc bạn cũng có thể gõ trực tiếp bằng bàn phím. Sau khi lưu và thoát bằng :wq, bạn có thể kiểm tra kết quả bằng cat; nếu bị rối, hãy nhấn [Start over]. Các phím còn lại trong bảng, hãy tự gõ thử.

✅ Tổng hợp lệnh vi trong Linux

🔲 Di chuyển con trỏ

PhímMô tả
h j k l← ↓ ↑ →Di chuyển từng ký tự. Phím mũi tên cũng được
0 · ^Đầu dòng (0) · ký tự đầu tiên không phải khoảng trắng của dòng (^)
$Cuối dòng
w · b · eĐầu từ tiếp theo · đầu từ phía trước · cuối từ tiếp theo
gg · GDòng đầu tiên · dòng cuối cùng của tệp
20Ggiống :20Đến dòng 20. Đổi số để đến dòng mong muốn
H · M · LDòng trên cùng · ở giữa · dưới cùng của màn hình
Ctrl-f · Ctrl-bXuống · lên một màn hình
Ctrl-d · Ctrl-uXuống · lên nửa màn hình

🔲 Vào chế độ chèn

Dù vào bằng phím nào, gõ xong thì nhấn Esc. cw·cc·C·s vừa xóa vừa đưa thẳng vào chế độ chèn, nên khi sửa một từ hay một dòng sẽ nhanh hơn nhấn x và i riêng lẻ.

PhímMô tả
i · aBắt đầu nhập trước con trỏ (i) · sau con trỏ (a)
I · ABắt đầu nhập ở đầu dòng (I) · cuối dòng (A)
o · OTạo dòng trống bên dưới (o) · bên trên (O) rồi bắt đầu nhập
cwXóa từ con trỏ đến cuối từ rồi bắt đầu nhập
ccXóa cả dòng rồi bắt đầu nhập
CXóa từ con trỏ đến cuối dòng rồi bắt đầu nhập
sXóa một ký tự rồi bắt đầu nhập
EscKết thúc nhập và về chế độ lệnh

🔲 Xóa · sửa

Thêm phím di chuyển sau d thì vùng đó sẽ bị xóa: dw là một từ, dd là một dòng, dG là đến cuối tệp, và thêm số phía trước thì lặp lại đúng số lần đó.

PhímMô tả
x · XXóa ký tự tại con trỏ (x) · ký tự trước con trỏ (X). 3x xóa ba ký tự
dwXóa từ con trỏ đến cuối từ
ddXóa dòng. 3dd xóa ba dòng
D= d$Xóa từ con trỏ đến cuối dòng
d0Xóa từ đầu dòng đến trước con trỏ
dGXóa từ dòng hiện tại đến cuối tệp
:6d · :6,10dXóa dòng 6 · xóa các dòng 6–10
JNối dòng bên dưới vào cuối dòng hiện tại
rThay ký tự tại con trỏ bằng ký tự gõ tiếp theo
~Đổi chữ hoa · chữ thường
>> · <<Thụt lề · bỏ thụt lề dòng

🔲 Sao chép · dán · hoàn tác

Nội dung đã xóa cũng dán được bằng p như nội dung đã sao chép, nên nhấn dd rồi p liên tiếp thì dòng sẽ dời xuống dưới. u lùi lại qua nhiều bước, còn Ctrl-r thực hiện lại thao tác vừa hoàn tác.

PhímMô tả
yySao chép dòng. 3yy sao chép ba dòng
ywSao chép từ con trỏ đến cuối từ
p · PDán nội dung đã sao chép bên dưới (p) · bên trên (P). Nếu sao chép theo ký tự thì dán sau · trước con trỏ
:1 co 7giống :1 t 7Sao chép dòng 1 xuống dưới dòng 7
:1,7 co 8Sao chép các dòng 1–7 xuống dưới dòng 8
:1 m 8Chuyển dòng 1 xuống dưới dòng 8
uHoàn tác. Nhấn nhiều lần để tiếp tục lùi lại
Ctrl-rLàm lại thao tác đã hoàn tác
.Lặp lại thay đổi gần nhất

🔲 Tìm kiếm · thay thế

Thay thế được thực hiện ở chế độ dòng cuối. Không chỉ định phạm vi thì chỉ áp dụng cho dòng hiện tại, thêm [%] thì áp dụng cho toàn bộ tệp, và nếu cuối lệnh không có g thì mỗi dòng chỉ thay chỗ khớp đầu tiên.

PhímMô tả
/chuỗiTìm xuống phía dưới con trỏ. Đến cuối tệp thì tìm tiếp từ đầu: [search hit BOTTOM, continuing at TOP]
?chuỗiTìm lên phía trên con trỏ
n · NKết quả tiếp theo cùng hướng (n) · ngược hướng (N)
*Tìm xuống phía dưới những chỗ trùng với từ tại con trỏ
:s/old/new/Đổi old đầu tiên trong dòng hiện tại thành new
:s/old/new/gĐổi mọi old trong dòng hiện tại thành new
:%s/old/new/gĐổi mọi old trong toàn bộ tệp thành new
:10,20s/old/new/gĐổi mọi old trong các dòng 10–20 thành new
:%s/old/new/gcHỏi từng chỗ trước khi đổi (y đổi · n bỏ qua · a tất cả · q dừng)

🔲 Lưu · thoát · số dòng

PhímMô tả
:wLưu. Xong thì hiện [36L, 1094B written]
:w tên_tệpLưu với tên khác. Tệp gốc giữ nguyên
:wq= :⁠x = ZZLưu và thoát
:qThoát. Nếu đã sửa mà chưa lưu thì báo [E37: No write since last change]
:q!Thoát mà không lưu
:set nu · :set nonuHiện · ẩn số dòng

✅ Chú thích hàng loạt theo cột bằng chế độ Visual Block của Vim

Khi cần chèn cùng một ký tự vào đầu nhiều dòng, thay vì nhấn i ở từng dòng, hãy dùng chế độ Visual Block. Trong chế độ lệnh, v chọn vùng theo ký tự, Shift-v theo dòng và Ctrl-v theo cột.

Sơ đồ ba kiểu chế độ Visual của vim Sơ đồ ba kiểu chế độ Visual của vim

Đây là trình tự chú thích nguyên một khối trong tệp cấu hình. Đặt con trỏ ở ký tự đầu tiên của dòng đầu, nhấn Ctrl-v rồi nhấn j để đi xuống chọn các dòng, sau đó nhấn I, gõ # và nhấn Esc.

Bật chế độ Visual Block trong vim
1. Nhấn Ctrl-v tại ký tự đầu tiên của dòng đầu, [– VISUAL BLOCK –] sẽ hiện ra.
Chọn dòng bằng con trỏ ở chế độ Visual Block trong vim
2. Nhấn j để đi xuống và chọn tất cả các dòng cần chú thích.
Nhập chữ ở chế độ chèn của Visual Block trong vim
3. Nhấn I rồi gõ #, ký tự này chỉ hiện ở dòng đầu.
Hoàn tất thay đổi theo cột ở chế độ Visual Block trong vim
4. Nhấn Esc thì # được thêm vào tất cả các dòng đã chọn.

Bỏ chú thích cũng làm tương tự: đặt con trỏ lên dấu # của dòng đầu, dùng Ctrl-v chọn xuống đến dòng cuối rồi nhấn x, cột đã chọn sẽ bị xóa cùng lúc. Bạn có thể làm thử y như vậy với vhost.conf trong trình mô phỏng ở trên.

  • Lệnh vi, vim
  • Lệnh xử lý văn bản
  • Cấu trúc trình soạn thảo vi: chia thành chế độ lệnh, chế độ chèn và chế độ dòng cuối

ℹ️ Thông báo tiếp thị liên kết
Nội dung trên trang này có chứa liên kết affiliate (tiếp thị liên kết). Khi khách truy cập mua sản phẩm hoặc dịch vụ qua các liên kết này, trang sẽ nhận hoa hồng từ bên bán. Trong quá trình đó, số tiền người mua phải trả (sẽ giảm khi có chương trình khuyến mãi ↓) không hề tăng lên. Giá, khuyến mãi và tình trạng hàng được đăng theo thời điểm viết bài và có thể khác với thực tế, vì vậy hãy kiểm tra lại lần cuối với bên bán trước khi mua. Việc chọn và đánh giá sản phẩm dựa trên tiêu chí riêng của trang; việc có nhận hoa hồng hay không không ảnh hưởng đến thứ tự giới thiệu hay nội dung đánh giá.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Prove your humanity: 6   +   10   =