Các lệnh Linux cơ bản (Phần 8 – Vim)
Trong bài viết lần này về các câu lệnh Linux cơ bản, mình sẽ chỉ giới thiệu một lệnh duy nhất để bật một công cụ text editor tuyệt vời ở trên Linux terminal – đó là Vim.
vim
là phiên bản mở rộng của vi
, một text editor và là một trong những chương trình core của hệ thống Unix. vim
rất nhẹ và nhanh, khi thao tác trên server với ssh
chẳng hạn, chúng ta thường rất khó có thể sử dụng những text editor có giao diện GUI.
Còn một text editor khác là nano
nhưng mình không prefer nó lắm vì vim
cung cấp nhiều tính năng tuyệt vời hơn. Thao tác trên vim
sẽ hơi khó với những người mới làm quen với nó, nhưng khi đã sử dụng nhiều ta sẽ thấy việc dùng vim
là nhanh hơn nhiều so với nano
.
Để khởi động vim
, đơn giản chúng ta chỉ cần gõ lệnh vim
:
➜ ~ vim
để thao tác trong vim
thì chủ yếu chúng ta phải sử dụng lệnh, một số lệnh chúng ta chỉ cần gõ một ký tự trên bàn phím, một số lệnh chúng ta phải gõ lệnh đi trước là dấu :
(colon), mình sẽ thêm cả dấu :
nếu câu lệnh cần trong bài viết này.
Để thoát vim
chúng ta sử dụng lệnh :q
, nếu chúng ta không thể thoát, có nghĩa là chúng ta đã thay đổi một file mà chưa save nó lại, chúng ta có thể discard phần chúng ta thay đổi bằng cách sử dụng lệnh :q!
.
Chế độ inserting trong vim
Để bắt đầu với phần này chúng ta sẽ tạo trước một file text ví dụ:
➜ /tmp touch vim_example.txt
➜ /tmp vim vim_example.txt
Khi mở file lên mặc định chúng ta sẽ không thể gõ được nội dung, vì chúng ta đang ở trong command mode, nghĩa là chỉ có thể sử dụng lệnh để điều khiển vim
. Để có thể thêm nội dung chúng ta phải dùng lệnh i
, có nghĩa là insert mode, lúc này chúng ta có thể gõ text vào bình thường. Có thể biết chúng ta đang trong mode này bằng cách nhìn vào line cuối của terminal
-- INSERT --
Bây giờ chúng ta thêm vào:
The quick brown fox jumped over the lazy dog.
Để thoát chế độ insert chúng ta nhấn Esc
. Để lưu lại thay đổi, chúng ta sử dụng lệnh :w
.
Di chuyển con trỏ trong chế độ command mode
Trong command mode, chúng ta có thể sử dụng những lệnh sau để di chuyển con trỏ, vim
không chỉ giới hạn di chuyển con trỏ di chuyển từng kí tự một hay từng dòng một, mà có rất nhiều lệnh khiến việc di chuyển con trỏ rất thuận tiện và nhanh chóng:
Key command | Move the cursor |
---|---|
l | sang phải một ký tự |
h | sang trái một ký tự |
j | xuống một dòng |
k | lên một dòng |
0 | đến đầu dòng hiện tại |
^ | đến đầu dòng hiện tại nơi chứa ký tự khác space (có thể một số file config yml indent chẳng hạn thì lệnh này sẽ giúp bỏ qua phần indent đó) |
$ | đến cuối dòng hiện tại |
w | đến đầu word tiếp theo hoặc đến dấu chấm câu tiếp theo |
W | đến đầu word tiếp theo, ignore chấm câu |
b | đến đầu word trước, hoặc chấm câu trước |
B | đến đầu word trước, ignore chấm câu trước |
Ctrl + f | trang tiếp theo |
Ctrl + b | trang trước |
[number] + G | đến dòng thứ [number] của file |
G | đến dòng cuối file |
Edit text cơ bản
Trong chế độ command mode, chúng ta có sử dụng một số lệnh để edit text như sau:
Trước hết hay bật lại file lên
➜ /tmp vim vim_example.txt
Append text
Để thêm mới text vào sau kí tự cuối cùng của file, chúng ta dùng lệnh a
, sau đó chúng ta lại được vào insert mode và có thể thêm text bình thường. Thêm vào nội dung như sau.
The quick brown fox jumped over the lazy dog. It was cool.
Line 2
Line 3
Line 4
Line 5
Line 6
~
~
~
Opening a line
Chúng ta có thể chèn thêm dòng vào file hiện tại bằng cách sử dụng lệnh o
hoặc O
:
Command | Ý nghĩa |
---|---|
o | chèn dòng phía dưới dòng hiện tại |
O | chèn dòng lên trên dòng hiện tại |
Mặc định sau khi dùng 2 lệnh này thì vim sẽ vào inserting mode.
Ta dùng lệnh này để thêm một dòng vào trên và dưới của line 3
The quick brown fox jumped over the lazy dog. It was cool.i
Line 2
Line 3
Line 4
Line 5
Line 6
~
~
~
~
~
Deleting text
Chúng ta có thể xóa text theo rất nhiều cách khác nhau bằng những câu lệnh mà vim
cung cấp.
Command | Ý nghĩa |
---|---|
x | Delete ký tự hiện tại |
3x | Delete ký tự hiện tại và 2 ký tự sau đó |
dd | Delete dòng hiện tại |
5dd | Delete dòng hiện tại và 4 dòng sau đó |
dW | Delete từ vị trí con trỏ đến đầu word tiếp theo |
d0 | Delete từ vị trí con trỏ đến đầu dòng hiện tại |
d$ | Delete từ vị trí con trỏ đến hết dòng hiện tại |
d^ | Delete từ vị trí con trỏ đến đầu dòng hiện tại trừ ký tự khoảng trắng |
dG | Delete từ vị trí con trỏ đến hết file |
d20G | Delete từ vị trí con trỏ đến dòng thứ 20 |
Chúng ta có thể thử edit lại file ví dụ của chúng ta, sau đó chúng ta có thể sử dụng lệnh u
– undo, để khôi phục nội dung file và đến với ví dụ tiếp theo.
Copy, Paste
Về cơ bản thì cách sử dụng copy không khác với delete text là mấy. Chúng ta có thể sử dụng bảng trên, thay vào bằng lệnh y
thay thế từ Delete trong phần ý nghĩa thành Copy là xong, chúng ta đã có cách sử dụng lệnh copy.
Để paste nội dung vừa copy, chúng ta sử dụng p
paste dưới dòng hiện tại hoặc P
paste trên dòng hiện tại.
Joining Line
Để join hai dòng với nhau, chúng ta có thể dùng J
, khi đó vim
sẽ join dòng hiện tại với dòng ngay dưới nó.
Select text
Để có thể select một đoạn text hay một block of text chúng ta có thể dùng lệnh v
, từ đó ta có thể dùng nó để copy text hoặc delete text, khi đó sử dụng p
sẽ paste text vào sau vị trí con trỏ, và P
sẽ paste text vào trước vị trí con trỏ.
Mở multiple file
vim
có thể dùng để edit nhiều hơn là một file, chúng ta có thể dùng lệnh sau:
➜ /tmp vim vim_example_1.txt vim_example_2.txt vim_example.txt
Để chuyển giữa các file chúng ta có thể dùng lệnh :n
next file tiếp theo, :N
quay lại file trước. Ngoài ra chúng ta có thể dùng lệnh :buffers
để view danh sách các file đang được mở.
~
:buffers
1 %a "vim_example_1.txt" line 1
2 "vim_example_2.txt" line 0
3 "vim_example.txt" line 0
Chia màn hình trong vim
Mình thường prefer một cách khác hơn để edit multiple file hơn bằng cách mở vim ở một file, sau đó sử dụng lệnh :split
hoặc :vsplit
để chia đôi màn hình theo chiều ngang hoặc dọc.


sau đó dùng lệnh:
:e [another_file_path.txt]
để mở file khác edit tại cửa sổ còn lại, :e
có nghĩa là edit.
Để di chuyển giữa các cửa sổ, chúng ta có thể dùng lệnh Ctrl+w+[arrow key]
để chọn cửa sổ tương ứng. Nếu ai sử dụng tmux
rồi chắc biết kiểu lệnh điều khiển này.

Như vậy là chúng ta đã hiểu sơ qua về cách sử dụng Vim. Mình cũng đã từng có thời rất khó nhọc và không thể nào dùng nổi Vim, nhưng qua tìm hiểu và mày mò, giờ mình cũng đã trở thành một người chơi hệ Vim rồi. Mong là các bạn cũng nhìn ra điểm mạnh mẽ của nó và sẽ yêu thích nó trong tương lai. Sau đây mình sẽ tổng hợp lại một số cách dùng
Tổng hợp một số command và các phím di chuyển khi sử dụng Vim
Một số lệnh settings:
Lệnh | Ý nghĩa |
---|---|
:syntax on | Highlight theo cú pháp code của file đang mở |
:syntax hlsearch | Highlight các kết quả search |
:set tabstop=2 | Độ rộng của một ký tự tab = 2 dấu cách |
:set autoindent | Tự động indent khi xuống dòng |
:set number | Hiển thị line number/số dòng bên trái nội dung file |
Một số lệnh cơ bản
Lệnh | Ý nghĩa |
---|---|
:help [keyword] | Tìm kiếm trong help document từ khóa mà bạn muốn tra cứu. |
:e [file] | Mở một file mà bạn nhập tên vào. |
:w | Lưu file. |
:wq | Lưu file và thoát Vim. |
:q! | Thoát Vim mà không lưu lại thay đổi. |
Lệnh & phím di chuyển (chú ý hoa thường thì chúng ta kết hợp nhấn giữ shift nhé)
Lệnh/Phím | Ý nghĩa |
---|---|
h l j k | Tương ứng là phím di chuyển trái, phải, xuống, lên. |
H M L | Tương ứng là phím đưa con trỏ về đầu, giữa, cuối của màn hình. |
w b e | Tương ứng là phím đưa con trỏ về nơi bắt đầu từ tiếp theo, nơi bắt đầu từ trước đó, kết thúc của một từ. |
0 ^ $ | Tương ứng là phím đưa con trỏ về đầu dòng, đầu dòng không tính khoảng trắng, cuối dòng. |
) ( | Tương ứng đưa con trỏ đến câu tiếp theo, câu trước đó. |
} { | Đưa con trỏ đến block text tiếp theo, trước đó |
Ctrl + f/b | Di chuyển đến trang tiếp hoặc trước đó |
gg | Di chuyển con trỏ đến đầu file |
G | Di chuyển con trỏ đến cuối file |
:[line number] | Di chuyển đến dòng tương ứng với số nhập vào |
Câu lệnh chỉnh sửa văn bản
Lệnh | Ý nghĩa |
---|---|
yy | Copy một dòng |
yw | Copy một từ |
v | bôi đen từng chữ một, dùng kết hợp phím di chuyển lên, xuống, trái, phải để bôi đen |
Ctrl + v | bôi đen theo block |
dd | Xóa một dòng |
dw | Xóa một từ |
x | Xóa một chữ |
u | Undo |
Ctrl + r | Redo |
Câu lệnh tìm kiếm
Lệnh | Ý nghĩa |
---|---|
/[keyword] | Tìm kiếm một keyword |
?[keyword] | Tìm kiếm từ đằng trước của keyword bạn nhập |
n | Đi đến kết quả tiếp theo (khi search xong nhấn enter, con trỏ sẽ đi đến kết quả search, nhấn n sẽ đi đến kết quả tiếp theo) |
N | Đi đến kết quả trước đó |
:%s/[pattern]/[replacement]/g | Tìm kiếm pattern sau đó thay thế từ đó với replacement trên toàn bộ file, nếu không có g chỉ thay thế trên một dòng thôi |
:%s/[pattern]/[replacement]/gc | Tương tự trên nhưng sẽ confirm với bạn có thay đổi không cho từng kết quả |
Trên đây là toàn bộ vốn liếng của mình khi sử dụng Vim. Vim còn nhiều khả năng hơn thế nữa mà nhiều dev còn sử dụng để thay thế code editor nhờ những plugin vô cùng hữu ích. Ở bài viết tiếp theo mình sẽ viết về chủ đề package management của Linux. Các bạn hãy đón đọc nhé. Trong thời gian đó hãy ôn tập Vim bằng cách chơi game Vim cho đỡ khô khan nhé.