Tìm hiểu về ứng dụng Vi trong Linux

Đối với người dùng Linux thì Vi – ứng dụng soạn thảo, chỉnh sửa text chính là 1 trong những công cụ hỗ trợ không thể thiếu. Không giống như Nano – ứng dụng chỉnh sửa text dưới dạng Terminal, Vi có hệ thống các phím tắt chức năng khá đa dạng và hữu ích, với 2 chế độ hoạt động chính là Insert và Command.

Vi là gì?

Vi là một trình chỉnh sửa dành cho Linux, Unix và các hệ điều hành giống Unix khác. Vi là viết tắt của visual instrument. Nó là một trình soạn thảo văn bản mặc định được sử dụng rộng rãi cho các hệ thống dựa trên Unix và đi kèm với tất cả các phiên bản Unix. Nó chỉ sử dụng bàn phím và cung cấp một giao diện rất hiệu quả để chỉnh sửa những chương trình và script.

So với một chương trình xử lý text chung chung, VI được điều chỉnh cho phù hợp với một cấu hình cụ thể hơn về cách sử dụng và người dùng - những người lập trình của các hệ thống dựa trên UNIX.

Không giống như các trình xử lý văn bản dựa trên Windows phổ biến rộng rãi (chẳng hạn như Notepad và Word của Microsoft), VI không cung cấp bất kỳ khả năng định dạng nào.

Chương trình VI ban đầu được viết bởi Bill Joy vào năm 1976 và trở thành một phần của Single Unix Specification Standard, yêu cầu mọi bản phân phối Unix phù hợp phải bao gồm nó. Cho đến sự nổi lên của Emacs, một trình soạn thảo văn bản phổ biến khác, vào năm 1984, VI vẫn là trình soạn thảo Unix tiêu chuẩn trên thực tế. Thậm chí, cuộc khảo sát năm 2009 của độc giả Linux Journal cũng đã đánh giá VI là trình soạn thảo văn bản được sử dụng nhiều nhất, đẩy Emacs xuống vị trí thứ hai.

Vi thực sự có một trình chỉnh sửa cơ bản được gọi là ex. Vi là chế độ trực quan của ex. Để thực hiện các lệnh vốn có đối với trình soạn thảo dòng lệnh cũ, dấu hai chấm (:) được sử dụng. Ngoài ra còn có hai chế độ hoạt động chính: Chế độ lệnh và chế độ chèn. Để quay lại chế độ lệnh, chỉ cần nhấn phím ESC.

Mở Vi trên Linux

Vi thực chất là 1 ứng dụng Terminal, so vậy các bạn sẽ phải khởi động từ cửa sổ Terminal tương ứng. Dùng cú pháp vi /path/to/file để mở file text có sẵn bằng Vi, và lệnh đó cũng sẽ hoạt động nếu file text được chỉ định không có sẵn, thay vào đó Vi sẽ tự tạo ra file text với tên như vậy.

ví dụ khi mở Terminal

Lưu ý rằng chúng ta cần phải dùng lệnh sudo nếu muốn chỉnh sửa file hệ thống, ví dụ: nếu muốn sửa file Fstab của hệ thống thì các bạn gõ lệnh:

sudo vi /etc/fstab

Nếu bạn dùng phiên bản hệ điều hành không phải Ubuntu của Linux thì thay thế sudo bằng su.

Chế độ Command

Dưới đây là hỉnh ảnh khi chúng ta mở file bằng Vi, trông như có vẻ chúng ta có thể gõ ký tự vào đây, nhưng thực chất thì không phải. Vi thực chất là ứng dụng soạn thảo bằng phương thức, và được mở bằng chế độ Command:

chế độ Command

Khi ở trong chế độ Command, chúng ta có thể di chuyển con trỏ bằng cách nhấn phím mũi tên, nhấn x để xóa ký tự ngay dưới con trỏ, còn nhấn dd để xóa toàn bộ dòng ký tự. Bên cạnh đó, các bạn có thể lựa chọn, copy, cut và lưu đoạn text trong chế độ này. Di chuyển con trỏ sang bên trái hoặc phải của ký tự cần copy và nhấn phím v, nhấn x để cắt đoạn text, sau đó đặt con trỏ vào vị trí cần di chuyển đoạn text và nhấn p để paste:

nhập text

Chế độ Insert

Đây là chế độ hoạt động của Vi cho phép người dùng chèn thêm ký tự vào văn bản. Chỉ cần nhấn nút I là chúng ta đã chuyển sang chế độ Insert sau khi xác định vị trí con trỏ trong chế độ Command:

chế độ Insert

Khi nhập xong đoạn nội dung cần thiết, nhấn phím Escape để quay về chế độ Command.

Saving và Quiting

Các bạn có thể lưu và thoát ứng dụng trong chế độ Command (nhấn Escape để chắc chắn rằng chúng ta đã ở trong chế độ này). Gõ :wq để lưu file sau khi thay đổi và đóng Vi, hoặc thực hiện riêng rẽ thành 2 công đoạn, :w để lưu file và :q để thoát chương trình mà không lưu lại thay đổi:

lưu và thoát ứng dụng

Nhưng Vi sẽ không cho người dùng đóng ứng dụng nếu đã thay đổi từ lần lưu cuối cùng, gõ lệnh :q! Và nhấn Enter để bỏ qua cảnh báo này:

Viết một chương trình C rất nhỏ bằng cách sử dụng Vi

Mở một Terminal.

Hãy nhập:

vi file.c

Điều này sẽ tạo ra một file mới.

vi file.c

Vi ở chế độ Command theo mặc định. Vì vậy, nếu bạn muốn viết một cái gì đó, bạn không thể thực hiện điều này.

“i” để có thể viết code của bạn.

Gõ i

Bây giờ, bạn sẽ ở trong chế độ Insert, nhưng nếu bạn muốn xóa một ký tự, bạn không thể làm điều đó.

ESC để đổi sang chế độ Command.

Trong chế độ Command, gõ “x”. Thao tác này sẽ xóa ký tự dưới con trỏ.

Gõ x

Bạn có thể chèn một ký tự ở bên trái con trỏ bằng cách gõ “i”.

Bạn có thể chèn ký tự ở bên phải con trỏ bằng cách gõ “a”.

Chèn dấu “>” vào văn bản.

Chèn >

Quay trở lại chế độ Command và gõ :wq, sau đó trở về:

wq

Bây giờ bạn đang ở command prompt. Hãy xem nội dung file của bạn bằng cách sử dụng cat.

Xem nội dung file

Bạn có thể đang nghĩ rằng Vi rất phức tạp, nhưng thực tế không phải vậy. Vi là một trình soạn thảo khá đơn giản, nhưng nó chỉ có thể làm việc trong một chế độ duy nhất tại một thời điểm mà thôi.

Mở lại file của bạn (vi file.c) và viết đoạn code sau:

void main(void){

printf(“vi is a great tool to write code faster ”);

}

Lưu file của bạn và nếu bạn đã cài đặt gcc, bạn nên biên dịch và chạy nó.

Lưu file

Biên dịch và chạy nó

Các tùy chọn thông thường để mở file trong Vi

  • vi file: Tạo một file mới nếu nó không tồn tại. Nếu không, nó sẽ mở file hiện có.
  • vi -R file: Chế độ chỉ đọc (Read only)

Di chuyển giữa các ký tự

  • Bạn phải ở chế độ Command.
  • Bạn có thể sử dụng các phím: Mũi tên lên, xuống, trái và phải.

Ngoài ra, bạn có thể sử dụng các phím khác:

k
Đưa con trỏ lên trên
j
Đưa con trỏ xuống dưới
h
Đưa con trỏ sang trái
l
Đưa con trỏ sang phải

Các lệnh thông thường trong Vi

Lưu ý: Bạn phải ở chế độ Command.

Lệnh
Mô tả
i
​Chèn văn bản trước vị trí con trỏ hiện tại.
l
Chèn văn bản ở đầu dòng hiện tại.
a
Chèn văn bản sau vị trí con trỏ hiện tại.
A
Chèn văn bản ở cuối dòng hiện tại.
o
Tạo một dòng mới cho mục nhập văn bản bên dưới con trỏ.
O
Tạo một dòng mới cho mục nhập văn bản ở trên con trỏ.
x
Xóa ký tự bên dưới con trỏ.
X
Xóa ký tự trước con trỏ.
dd
Xóa dòng con trỏ đang được đặt.
cc
Xóa nội dung của dòng, để người dùng ở chế độ Insert.
r
Thay thế ký tự bên dưới con trỏ.

Lệnh sao chép và dán trong Vi (Thực hành!)

Tạo một file mới với tên "linux-distro".

Viết danh sách sau:

  • Ubuntu
  • Linux Mint
  • Debian
  • Slackware
  • Red Hat

Tạo file mới

Thay đổi sang chế độ Command (ESC).

Di chuyển con trỏ đến "Ubuntu".

yy (đây là lệnh để sao chép một dòng).

Gõ G.

Chèn một dòng mới bằng cách gõ o.

Đổi sang chế độ Command (ESC).

P (Lệnh này dùng để dán dòng).

Gõ P

1G

4yy.

G.

P.

Gõ P một lần nữa

Ngoài ra, bạn có thể sử dụng lệnh copy - paste khác:

  • yw: Sao chép từ hiện tại.
  • p: Đặt văn bản đã sao chép sau con trỏ.

Lệnh Vi nâng cao

<<
Tham gia vào dòng hiện tại và dòng tiếp theo. Một số tham gia vào nhiều dòng.
>>
Căn dòng hiện tại sang bên trái với một chiều rộng có thể thay đổi.
:nr file
Đọc file và chèn nó sau dòng n.
~
Chuyển đổi kiểu viết hoa/viết thường của ký tự bên dưới con trỏ.
^G
Nhấn các phím CTRL và G cùng một lúc để hiển thị tên file và trạng thái hiện tại.
U
Khôi phục dòng hiện tại về trạng thái trước khi con trỏ nhập vào dòng.
u
Hoàn tác thay đổi cuối cùng đối với tệp. Nhập lại "u" một lần nữa sẽ thực hiện lại thay đổi.
J
Tham gia vào dòng hiện tại và dòng tiếp theo. Một số tham gia vào nhiều dòng.
:f
Hiển thị vị trí hiện tại trong tệp bằng % và tên file, tổng số file.
:f filename
Đổi tên file hiện tại thành filename.
:w filename
Viết vào filename của file.
:e filename
Mở một file khác với filename.
:cd dirname
Thay đổi thư mục làm việc hiện tại thành dirname.
:e #
​Sử dụng để chuyển đổi giữa 2 file đã mở.
:n
Trong trường hợp bạn mở nhiều file bằng Vi, hãy sử dụng :n để chuyển đến file tiếp theo trong chuỗi.
:N
Trong trường hợp bạn mở nhiều file bằng vi, hãy sử dụng :N để chuyển đến file trước đó trong chuỗi.
:r file
​Đọc file và chèn nó sau dòng hiện tại

Làm việc với hai hoặc nhiều file (Thực hành!)

Mở file linux-distros

Trong chế độ Command, hãy gõ:

:e unix

Viết "UNIX is a good OS" và lưu nó.

Đi tới file linux-distros bằng lệnh:

:e #

Thoát khỏi Vi bằng cách gõ:

:q

Chúc các bạn thành công!

Xem thêm:

Thứ Hai, 15/07/2024 10:27
4,48 👨 67.226
0 Bình luận
Sắp xếp theo
    ❖ Linux