Sử dụng trình soạn thảo Vi#
- Trình soạn thảo vi được cài đặt gần như trên tất cả hệ điều hành Unix. Linux cũng thường cài đặt vi (vi improved).
- Vi là một trình soạn thảo không trực quan, tuy nhiên nếu biết sử dụng, nó sẽ là một công cụ soạn thảo mạnh mẽ.
1. Mở và thoát vi#
-
Để sử dụng vi trên một file, sử dụng:
vi filename. Nếu file đã tồn tại, trang đầu của file sẽ được hiển thị lên màn hình. Nếu không, vi sẽ tạo một file trống. -
Trình soạn thảo vi mở trong chế độ command mode. Ở command mode, bạn có thể gõ các lệnh, một số lệnh đưa bạn đến insert mode. Ở insert mode, bạn có thể gõ văn bản. Dùng nút
ESCđể về command mode từ insert mode. -
Thường thì bản mới hai bản chỉnh sửa của một file sẽ được lưu khi thoát. Nhưng vẫn có thể thoát vi mà không lưu chỉnh sửa.
| Command | Ý nghĩa |
|---|---|
| :x | Thoát vi và lưu những chỉnh sửa vào file |
| :wq | Thoát vi và lưu những chỉnh sửa vào file |
| :q | Thoát vi |
| :q! | Thoát vi mà không lưu những chỉnh sửa |
2. Di chuyển trong file#
| Câu lệnh | Ý nghĩa |
|---|---|
| k hoặc mũi tên lên | Di chuyển lên trên 1 dòng |
| j hoặc mũi tên xuống | Di chuyển xuống dưới 1 dòng |
| h hoặc mũi tên sang trái | Di chuyển sang trái 1 ký tự |
| l hoặc mũi tên sang phải | Di chuyển sang phải 1 ký tự |
| e | Di chuyển đến cuối từ |
| b | Di chuyển đến đầu từ (lùi lại) |
| w | Di chuyển đến đầu từ (tiến lên) |
| O | Di chuyển đến đầu dòng |
| G | Di chuyển đến cuối file |
| gg | Di chuyển đến đầu file |
| L | Di chuyển đến cuối màn hình |
| :59 hoặc 59G | Di chuyển đến dòng 59 |
| 20 | Di chuyển đến cột 20 |
| % | Di chuyển đến các ngoặc trong dòng |
| Nhảy đến nơi bắt đầu function | |
| Nhảy đến nơi bắt đầu block |
3. Cut, copy và paste#
| Câu lệnh | Ý nghĩa |
|---|---|
| y | Copy phần text đã chọn vào clipboard |
| p | Paste content |
| dd | Cut dòng hiện tại |
| yw | Copy từ hiện tại |
| yy | Copy dòng hiện tại |
| y$ | Copy đến cuối dòng |
| D | Copy tới cuối file |
4. Tìm kiếm trong vi#
| Câu lệnh | Ý nghĩa |
|---|---|
| /word | Tìm kiếm "word" từ trên xuống dưới |
| ?word | Tìm kiếm "word" từ dưới lên trên |
| * | Tìm kiếm từ con trỏ |
| /\cstring | Tìm "String" cả chữ hoa lẫn chữ thường |
| /jo[ha]n | Tìm "john" và "joan" |
| /< the | Tìm từ bắt đầu bằng "the" ví dụ: theatre or then |
| /the> | Tìm từ kết thúc bằng "the" ví dụ: breathe |
5. Thay thế#
| Câu lệnh | Ý nghĩa |
|---|---|
| :%s/old/new/g | Thay thế toàn bộ "old" thành "new" trong file |
| :%s/onward/forward/gi | Thay thế toàn bộ "onward" thành "forward" trong file, không phân biệt chữ hoa |
| %s/old/new/gc | Thay thế toàn bộ "old" thành "new" trong file kèm theo xác nhận |
| :2,35s/old/new/g | Thay thế toàn bộ "old" thành "new" từ dòng 2 đến 35 |
| :5,$s/old/new/g | Thay thế toàn bộ "old" thành "new" từ dòng 5 đến EOF |
| :%s/^/hello/g | Thêm vào đầu mỗi dòng bằng "hello" |
| :%s/$/Harry/g | Thêm vào cuối mỗi dòng bằng "Harry" |
| :g/string/d | Xoá toàn bộ các dòng có chứa từ "string" |
| Ctrl+a | Thêm 1 cho số tại nơi con trỏ đang chỉ |
| Ctrl+x | Giảm 1 cho số tại nơi con trỏ đang chỉ |
6. Case#
| Câu lệnh | Ý nghĩa |
|---|---|
| Vu | Chuyển chữ thành chữ thường dòng hiện tại |
| VU | Chuyển chữ thành chữ hoa dòng hiện tại |
| g~~ | Chuyển dòng hiện tại thành chữ hoa và ngược lại |
| vEU | Chuyển thành chữ hoa |
| gggUG | Biến tất cả chữ trong file thành chữ hoa |
| :set ignorecase | Không phân biệt chữ hoa trong tìm kiếm |
| :set smartcase | Không phân biệt chữ hoa trong tìm kiếm, ngoại trừ khi tìm có chữ hoa |
7. Đọc/ghi file#
| Câu lệnh | Ý nghĩa |
|---|---|
| :1,10 w outfile | Lưu dòng 1 đến dòng 10 vào outfile |
| :1,10 w >> outfile | Nối dòng 1 đến dòng 10 vào outfile |
| :r infile | Chèn nội dung từ infile vào |
| :23r infile | Chèn nội dung từ infile vào sau dòng 23 |
8. File explorer#
| Câu lệnh | Ý nghĩa |
|---|---|
| :e. | Mở File explorer |
| :Sex | Chia đôi màn hình mở File explorer |
| :Sex! | Chia đôi màn hình theo chiều dọc và mở File Explorer |
| :ls | Liệt kê Buffer |
| :cd .. | Đến thư mục cha |
| :args | Liệt kê các file |
| :args *.php | Mở file theo định dạng mong muốn |
| gf | Mở file tại nơi con trỏ chỉ |
9. Alignment#
| Câu lệnh | Ý nghĩa |
|---|---|
| :%!fmt | Căn chỉnh tất cả các dòng |
| !fmt | Căn chỉnh tất cả các dòng tại vị trí hiện tại |
| 5!!fmt | Căn chỉnh 5 dòng tiếp theo |
10. Tab/Windows#
| Câu lệnh | Ý nghĩa |
|---|---|
| :tabnew | Tạo tab mới |
| gt | Chuyển sang tab tiếp theo |
| :tabfirst | Chuyển tới tab đầu tiên |
| :tablast | Chuyển tới tab cuối cùng |
| :tabm n (position) | Chuyển vị trí tab |
11. Windows Splitting#
| Câu lệnh | Ý nghĩa |
|---|---|
| :e filename | Sửa file tại thời điểm hiện tại |
| :split filename | Chia đôi màn hình và mở filename |
| :sp filename | Chia đôi màn hình theo chiều ngang |
| :vs filename | Chia đôi màn hình theo chiều dọc |
| Ctrl + w + hướng | Điều hướng giữa các màn hình đã chia |
| Ctrl + w_ | Tối đa chiều dọc cho màn hình hiện tại |
| Ctrl + w | Tối đa chiều ngang cho màn hình hiện tại |
| Ctrl-w= | Điều chỉnh kích thước bằng nhau cho tất cả các màn hình |
| 10 Ctrl-w+ | Thêm 10 dòng cho màn hình hiện tại |
| :hide | Đóng màn hình hiện tại |
| :nly | Đóng tất cả màn hình trừ màn hình hiện tại |
12. Auto-completion#
| Câu lệnh | Ý nghĩa |
|---|---|
| Ctrl+n Ctrl+p (in insert mode) | Hoàn thành từ |
| Ctrl+x Ctrl+l | Hoàn thành dòng |
| :set dictionary=dict | Định nghĩa dict là một từ điển |
| Ctrl+x Ctrl+k | Hoàn thành với từ điển |
13. Marks#
| Câu lệnh | Ý nghĩa |
|---|---|
m {a-z} |
Đánh dấu vị trí hiện tại với chữ cái được set {a - z} |
{a-z} |
Di chuyển đến vị trí đã đánh dấu |
| " | Di chuyển đến vị trí trước đó |
14. Text Indent#
| Câu lệnh | Ý nghĩa |
|---|---|
| :set autoindent | Bật chế độ tự động thụt đầu dòng |
| :set smartindent | Bật chế độ thụt đầu dòng thông minh |
| :set shiftwidth=4 | Định nghĩa thụt đầu dòng bằng 4 ký tự |
| ctrl-t, ctrl-d | Thụt/giảm thụt trong insert mode |
| Thụt đầu dòng | |
| Giảm thụt đầu dòng | |
| Thụt đầu dòng mã trong dấu ngoặc | |
| 1GVG= | Thụt đầu toàn bộ file |
15. Syntax highlighting#
| Câu lệnh | Ý nghĩa |
|---|---|
| :syntax on | Bật chế độ làm nổi bật cú pháp |
| :syntax off | Tắt chế độ làm nổi bật cú pháp |
| :set syntax=perl | Bắt buộc làm nổi bật cú pháp |
Nguồn: Viblo