Hướng dẫn sử dụng Vim cơ bản

Vim là một trình soạn thảo văn bản mạnh mẽ, đặc biệt hữu ích khi làm việc trên các máy chủ từ xa hoặc trong môi trường không có giao diện đồ họa. Nó cho phép chỉnh sửa nhanh chóng các tệp chương trình, tệp cấu hình và nhiều loại tệp văn bản khác.

1. Giới thiệu về Vim

1.1. Tại sao nên học Vim?

  • Thao tác trên máy chủ: Khi truy cập máy chủ từ xa qua ssh mà không có giao diện đồ họa, vi (và các biến thể của nó như vim) là công cụ lý tưởng để chỉnh sửa tệp cấu hình, mã nguồn, v.v.
  • Trình soạn thảo mặc định: Trong nhiều hệ thống Linux, vi/vim là trình soạn thảo mặc định, vì vậy việc nắm vững nó sẽ rất tiện lợi.
  • Tối ưu hóa quy trình làm việc: vim được thiết kế để tối đa hóa hiệu quả bằng cách giữ cho các ngón tay luôn ở vị trí trung tâm trên bàn phím, cho phép thực hiện hầu hết các thao tác chỉnh sửa mà không cần rời khỏi hàng phím chính.

1.2. Sự khác biệt giữa vi và vim

  • vi: Là trình soạn thảo văn bản cổ điển trên Unix, viết tắt của "Visual interface". Nó hoạt động hoàn toàn dựa trên lệnh, không có menu hay hỗ trợ chuột.
  • vim: Là viết tắt của "Vi Improved". vim là phiên bản nâng cao của vi, bổ sung nhiều tính năng hỗ trợ lập trình như tự động hoàn thành mã, kiểm tra lỗi, và tích hợp trình biên dịch. Trên nhiều bản phân phối Linux, lệnh vi thực chất là một liên kết tượng trưng (symbolic link) đến vim.

1.3. Kiểm tra liên kết tượng trưng

Bạn có thể kiểm tra xem vi có phải là liên kết đến vim hay không bằng các lệnh sau:


# Kiểm tra vị trí thực thi của vi
which vi
ls -l /usr/bin/vi
ls -l /etc/alternatives/vi

# Kiểm tra vị trí thực thi của vim
which vim
ls -l /usr/bin/vim
ls -l /etc/alternatives/vim

2. Mở và tạo tệp

Để mở một tệp hoặc tạo tệp mới, bạn sử dụng lệnh vi theo sau là tên tệp:


$ vi ten_file

Nếu tệp đã tồn tại, nó sẽ được mở. Nếu không, một tệp mới sẽ được tạo.

2.1. Mở tệp và đến một dòng cụ thể

Để mở tệp và tự động di chuyển con trỏ đến một dòng cụ thể, bạn thêm dấu cộng (+) theo sau là số dòng:


$ vi ten_file +so_dong

Nếu chỉ dùng dấu cộng + mà không có số dòng, con trỏ sẽ được đưa đến cuối tệp.

2.2. Xử lý tệp tạm (swap file)

Nếu vi bị thoát đột ngột, một tệp tạm (swap file) có thể được tạo ra. Lần sau khi mở lại tệp, vi sẽ cảnh báo về sự tồn tại của tệp tạm này. Nhấn phím d để xóa tệp tạm và tiếp tục chỉnh sửa. Hãy đảm bảo bạn đã tắt bộ gõ tiếng Việt trước khi nhấn phím.

3. Ba chế độ làm việc chính

vim có ba chế độ làm việc cơ bản:

  1. Chế độ Lệnh (Command Mode): Đây là chế độ mặc định khi bạn mở tệp. Bạn sử dụng các lệnh để di chuyển, sao chép, dán, xóa văn bản, v.v.
  2. Chế độ Chèn (Insert Mode): Dùng để nhập và chỉnh sửa văn bản. Bạn chuyển sang chế độ này bằng các lệnh như i, a, o.
  3. Chế độ Dòng cuối (Last-line Mode / Ex Mode): Dùng để thực hiện các thao tác như lưu tệp, thoát, tìm kiếm và thay thế trên toàn bộ tệp. Bạn vào chế độ này bằng cách nhấn dấu hai chấm :.

Để quay lại Chế độ Lệnh từ các chế độ khác, bạn nhấn phím Esc. Trên các máy Mac có Touch Bar, phím Esc có thể bất tiện, bạn có thể thay thế bằng tổ hợp phím Ctrl + [.

3.1. Các lệnh Chế độ Dòng cuối

Lệnh Ý nghĩa
:w Lưu tệp (write).
:q Thoát. Nếu tệp chưa được lưu, lệnh này sẽ không hoạt động.
:q! Thoát mà không lưu.
:wq Lưu và thoát.
:x Tương tự :wq, lưu và thoát nếu có thay đổi.

4. Các lệnh thường dùng

4.1. Di chuyển con trỏ

Việc di chuyển con trỏ nhanh chóng là chìa khóa để sử dụng Vim hiệu quả.

4.1.1. Di chuyển cơ bản

Lệnh Chức năng
h Di chuyển sang trái.
j Di chuyển xuống dưới.
k Di chuyển lên trên.
l Di chuyển sang phải.

4.1.2. Di chuyển trong dòng

Lệnh Chức năng
w Di chuyển đến đầu từ tiếp theo.
b Di chuyển về đầu từ hiện tại hoặc trước đó.
0 (số 0) Di chuyển đến đầu dòng.
^ Di chuyển đến ký tự không phải khoảng trắng đầu tiên của dòng.
$ Di chuyển đến cuối dòng.

4.1.3. Di chuyển theo số dòng

Lệnh Chức năng
gg Di chuyển đến đầu tệp.
G Di chuyển đến cuối tệp.
[số]gg hoặc [số]G Di chuyển đến dòng có số tương ứng.
:[số] Di chuyển đến dòng có số tương ứng (trong Chế độ Dòng cuối).

4.1.4. Di chuyển theo màn hình

Lệnh Chức năng
Ctrl + f Cuộn xuống một màn hình (forward).
Ctrl + b Cuộn lên một màn hình (back).
Ctrl + d Cuộn xuống nửa màn hình (down).
Ctrl + u Cuộn lên nửa màn hình (up).
H Di chuyển đến đầu màn hình (Head).
M Di chuyển đến giữa màn hình (Middle).
L Di chuyển đến cuối màn hình (Low).

4.2. Di chuyển theo cấu trúc mã nguồn

4.2.1. Di chuyển theo đoạn văn

Trong Vim, các đoạn văn được phân tách bởi các dòng trống.

Lệnh Chức năng
{ Di chuyển lên đầu đoạn văn trước đó.
} Di chuyển xuống đầu đoạn văn tiếp theo.

4.2.2. Di chuyển đến dấu ngoặc

Các cặp dấu ngoặc (), [], {} rất quan trọng trong lập trình.

Lệnh Chức năng
% Di chuyển giữa các dấu ngoặc tương ứng.

4.3. Chọn văn bản (Chế độ Visual)

Để sao chép hoặc xóa một phần văn bản, trước tiên bạn cần chọn nó.

Lệnh Chế độ Chức năng
v Visual Mode Chọn văn bản theo ký tự.
V Visual Line Mode Chọn toàn bộ dòng.
Ctrl + v Visual Block Mode Chọn văn bản theo khối hình chữ nhật.

Nhấn Esc để hủy chọn và quay lại Chế độ Lệnh.

4.4. Hoàn tác và làm lại

Lệnh Chức năng
u Hoàn tác (undo) thao tác trước đó.
Ctrl + r Làm lại (redo) thao tác đã hoàn tác.

4.5. Xóa văn bản

Các lệnh xóa có thể kết hợp với lệnh di chuyển.

Lệnh Chức năng
x Xóa ký tự tại vị trí con trỏ.
dw Xóa từ vị trí con trỏ đến cuối từ.
d$ hoặc D Xóa từ vị trí con trỏ đến cuối dòng.
dd Xóa toàn bộ dòng hiện tại.
[số]dd Xóa [số] dòng bắt đầu từ dòng hiện tại.

Ví dụ kết hợp lệnh xóa với lệnh di chuyển:


* d}        # Xóa đến cuối đoạn văn
* dG        # Xóa từ vị trí hiện tại đến cuối tệp

4.6. Sao chép và Dán

vim sử dụng một vùng đệm (buffer) để lưu trữ văn bản đã sao chép hoặc cắt.

Lệnh Chức năng
yw Sao chép (yank) từ vị trí con trỏ đến cuối từ.
yy Sao chép toàn bộ dòng hiện tại.
[số]yy Sao chép [số] dòng bắt đầu từ dòng hiện tại.
p Dán (paste) nội dung từ vùng đệm vào sau con trỏ.
P Dán (paste) nội dung từ vùng đệm vào trước con trỏ.

Lưu ý: Vùng đệm của vim khác với clipboard của hệ điều hành. Để dán nội dung từ clipboard, bạn có thể cần sử dụng chuột hoặc các lệnh đặc biệt tùy thuộc vào cấu hình vim.

4.7. Thay thế ký tự

Lệnh Chức năng Chế độ
r Thay thế ký tự hiện tại bằng ký tự bạn nhập tiếp theo. Command Mode
R Vào Chế độ Thay thế (Replace Mode), cho phép bạn gõ đè lên văn bản hiện có. Nhấn Esc để thoát. Replace Mode

4.8. Thụt lề và Lặp lại

Lệnh Chức năng
>> Tăng thụt lề cho dòng hiện tại hoặc khối văn bản đã chọn.
<< Giảm thụt lề cho dòng hiện tại hoặc khối văn bản đã chọn.
. (dấu chấm) Lặp lại thao tác lệnh cuối cùng.

4.9. Tìm kiếm

4.9.1. Tìm kiếm thông thường

Lệnh Chức năng
/chuoi_tim Tìm kiếm chuoi_tim từ vị trí con trỏ về phía trước.
?chuoi_tim Tìm kiếm chuoi_tim từ vị trí con trỏ về phía sau.
n Đi đến kết quả tìm kiếm tiếp theo (theo hướng tìm kiếm ban đầu).
N Đi đến kết quả tìm kiếm trước đó (ngược hướng tìm kiếm ban đầu).

4.9.2. Tìm kiếm nhanh theo từ

Lệnh Chức năng
* Tìm kiếm về phía trước từ có con trỏ đang đứng.
# Tìm kiếm về phía sau từ có con trỏ đang đứng.

4.10. Tìm kiếm và Thay thế

Các lệnh này thực hiện trong Chế độ Dòng cuối.

  • Thay thế toàn bộ tệp:
    :%s/chuoi_cu/chuoi_moi/g
    (% đại diện cho toàn bộ tệp, s là substitute, g là global - thay thế tất cả các lần xuất hiện trên một dòng).
  • Thay thế có xác nhận: Thêm c vào cuối để xác nhận từng lần thay thế.
    :%s/chuoi_cu/chuoi_moi/gc
    Các tùy chọn xác nhận bao gồm: y (yes), n (no), a (all), q (quit).
  • Thay thế trong vùng chọn: Đầu tiên, chọn vùng văn bản bằng chế độ Visual, sau đó nhập lệnh thay thế (:s/chuoi_cu/chuoi_moi/g).

4.11. Chèn văn bản

Ngoài lệnh i cơ bản, Vim còn cung cấp nhiều cách khác để vào Chế độ Chèn:

Lệnh Chức năng
i Chèn văn bản trước vị trí con trỏ.
I Chèn văn bản vào đầu dòng.
a Chèn văn bản sau vị trí con trỏ.
A Chèn văn bản vào cuối dòng.
o Chèn một dòng trống mới bên dưới dòng hiện tại.
O Chèn một dòng trống mới bên trên dòng hiện tại.

5. Chia màn hình (Split Screen)

Vim cho phép bạn chia màn hình để làm việc với nhiều tệp cùng lúc hoặc xem nhiều phần của cùng một tệp.

5.1. Lệnh chia màn hình

Lệnh Chức năng
:sp [tên_file] Chia màn hình theo chiều ngang (split).
:vsp [tên_file] Chia màn hình theo chiều dọc (vertical split).

5.2. Di chuyển giữa các cửa sổ

Sử dụng tổ hợp phím Ctrl + w kết hợp với các phím sau:

Lệnh Chức năng
Ctrl + w w hoặc Ctrl + w l Di chuyển sang cửa sổ tiếp theo (bên phải hoặc bên dưới).
Ctrl + w h Di chuyển sang cửa sổ bên trái.
Ctrl + w k Di chuyển sang cửa sổ bên trên.
Ctrl + w j Di chuyển sang cửa sổ bên dưới.
Ctrl + w c Đóng cửa sổ hiện tại.
Ctrl + w o Đóng tất cả các cửa sổ khác, chỉ giữ lại cửa sổ hiện tại.

5.3. Thay đổi kích thước cửa sổ

Sử dụng tổ hợp phím Ctrl + w kết hợp với các phím sau:

Lệnh Chức năng
Ctrl + w + Tăng chiều cao của cửa sổ.
Ctrl + w - Giảm chiều cao của cửa sổ.
Ctrl + w > Tăng chiều rộng của cửa sổ.
Ctrl + w < Giảm chiều rộng của cửa sổ.
Ctrl + w = Cân bằng kích thước tất cả các cửa sổ.

6. Cấu hình Vim (.vimrc)

Tệp cấu hình ~/.vimrc cho phép bạn tùy chỉnh hành vi của Vim, bao gồm đặt phím tắt, bật tô sáng cú pháp, cài đặt plugin, v.v.

Các vị trí cấu hình chính trên Linux:

  • /etc/vim/vimrc (cấu hình hệ thống)
  • ~/.vimrc (cấu hình người dùng, có độ ưu tiên cao hơn)

Thẻ: Vim editor command line linux text manipulation

Đăng vào ngày 1 tháng 8 lúc 21:33