Unix / Linux - Hướng dẫn biên tập vi
Trong chương này, chúng ta sẽ hiểu cách hoạt động của Vi Editor trong Unix. Có nhiều cách để chỉnh sửa tệp trong Unix. Chỉnh sửa tệp bằng trình chỉnh sửa văn bản hướng màn hìnhvilà một trong những cách tốt nhất. Trình chỉnh sửa này cho phép bạn chỉnh sửa các dòng trong ngữ cảnh với các dòng khác trong tệp.
Một phiên bản cải tiến của trình soạn thảo vi được gọi là VIMcũng đã được cung cấp ngay bây giờ. Ở đây, VIM là viết tắt củaVi IMđã chứng minh.
vi thường được coi là tiêu chuẩn thực tế trong các trình soạn thảo Unix vì -
Nó thường có sẵn trên tất cả các phiên bản của hệ thống Unix.
Các triển khai của nó rất giống nhau trên diện rộng.
Nó đòi hỏi rất ít tài nguyên.
Nó thân thiện với người dùng hơn các trình soạn thảo khác như ed hoặc là ex.
Bạn có thể dùng vitrình chỉnh sửa để chỉnh sửa tệp hiện có hoặc để tạo tệp mới từ đầu. Bạn cũng có thể sử dụng trình chỉnh sửa này để chỉ đọc một tệp văn bản.
Khởi động trình soạn thảo vi
Bảng sau liệt kê các lệnh cơ bản để sử dụng trình soạn thảo vi:
Sr.No. | Lệnh & Mô tả |
---|---|
1 | vi filename Tạo một tệp mới nếu nó chưa tồn tại, nếu không sẽ mở một tệp hiện có. |
2 | vi -R filename Mở tệp hiện có ở chế độ chỉ đọc. |
3 | view filename Mở tệp hiện có ở chế độ chỉ đọc. |
Sau đây là một ví dụ để tạo một tệp mới testfile nếu nó đã không tồn tại trong thư mục làm việc hiện tại -
$vi testfile
Lệnh trên sẽ tạo ra kết quả sau:
|
~
~
~
~
~
~
~
~
~
~
~
~
"testfile" [New File]
Bạn sẽ nhận thấy một tilde(~) trên mỗi dòng sau con trỏ. Dấu ngã thể hiện một dòng không sử dụng. Nếu một dòng không bắt đầu bằng dấu ngã và có vẻ như để trống, thì sẽ có một khoảng trắng, tab, dòng mới hoặc một số ký tự không thể xem được khác.
Bây giờ bạn có một tệp đang mở để bắt đầu làm việc. Trước khi tiếp tục, chúng ta hãy hiểu một vài khái niệm quan trọng.
Chế độ hoạt động
Trong khi làm việc với trình soạn thảo vi, chúng ta thường gặp hai chế độ sau:
Command mode- Chế độ này cho phép bạn thực hiện các tác vụ quản trị như lưu tệp, thực hiện lệnh, di chuyển con trỏ, cắt (yanking) và dán các dòng hoặc từ, cũng như tìm và thay thế. Trong chế độ này, bất cứ điều gì bạn nhập đều được hiểu là lệnh.
Insert mode- Chế độ này cho phép bạn chèn văn bản vào tệp. Mọi thứ được nhập trong chế độ này được hiểu là đầu vào và được đặt trong tệp.
vi luôn bắt đầu trong command mode. Để nhập văn bản, bạn phải ở chế độ chèn mà chỉ cần nhậpi. Để thoát khỏi chế độ chèn, hãy nhấnEsc phím này sẽ đưa bạn trở lại chế độ lệnh.
Hint- Nếu bạn không chắc mình đang ở chế độ nào, hãy nhấn phím Esc hai lần; điều này sẽ đưa bạn đến chế độ lệnh. Bạn mở một tệp bằng trình chỉnh sửa vi. Bắt đầu bằng cách nhập một số ký tự và sau đó đến chế độ lệnh để hiểu sự khác biệt.
Thoát khỏi vi
Lệnh thoát khỏi vi là :q. Khi ở chế độ lệnh, hãy nhập dấu hai chấm và 'q', sau đó là quay lại. Nếu tệp của bạn đã được sửa đổi theo bất kỳ cách nào, trình chỉnh sửa sẽ cảnh báo bạn về điều này và không cho phép bạn thoát. Để bỏ qua thông báo này, lệnh thoát khỏi vi mà không lưu là:q!. Điều này cho phép bạn thoát khỏi vi mà không cần lưu bất kỳ thay đổi nào.
Lệnh lưu nội dung của trình soạn thảo là :w. Bạn có thể kết hợp lệnh trên với lệnh thoát hoặc sử dụng:wq và quay lại.
Cách dễ nhất để save your changes and exit vilà với lệnh ZZ. Khi bạn đang ở chế độ lệnh, hãy nhậpZZ. CácZZ lệnh hoạt động giống như cách :wq chỉ huy.
Nếu bạn muốn chỉ định / nêu bất kỳ tên cụ thể nào cho tệp, bạn có thể làm như vậy bằng cách chỉ định nó sau :w. Ví dụ: nếu bạn muốn lưu tệp bạn đang làm việc dưới dạng một tên tệp khác được gọi làfilename2, bạn sẽ gõ :w filename2 và quay lại.
Di chuyển trong tệp
Để di chuyển trong tệp mà không ảnh hưởng đến văn bản của bạn, bạn phải ở chế độ lệnh (nhấn Esc hai lần). Bảng sau đây liệt kê một số lệnh bạn có thể sử dụng để di chuyển xung quanh một ký tự tại một thời điểm:
Sr.No. | Lệnh & Mô tả |
---|---|
1 | k Di chuyển con trỏ lên một dòng |
2 | j Di chuyển con trỏ xuống một dòng |
3 | h Di chuyển con trỏ sang trái một ký tự vị trí |
4 | l Di chuyển con trỏ đến đúng vị trí một ký tự |
Các điểm sau đây cần được xem xét để di chuyển trong tệp:
vi có phân biệt chữ hoa chữ thường. Bạn cần chú ý viết hoa khi sử dụng các câu lệnh.
Hầu hết các lệnh trong vi có thể được bắt đầu bằng số lần bạn muốn hành động xảy ra. Ví dụ,2j di chuyển con trỏ hai dòng xuống vị trí con trỏ.
Có nhiều cách khác để di chuyển trong một tệp trong vi. Hãy nhớ rằng bạn phải ở chế độ lệnh (press Esc twice). Bảng sau liệt kê một số lệnh để di chuyển xung quanh tệp:
Sr.No. | Lệnh & Mô tả |
---|---|
1 | 0 or | Định vị con trỏ ở đầu dòng |
2 | $ Định vị con trỏ ở cuối dòng |
3 | w Định vị con trỏ đến từ tiếp theo |
4 | b Định vị con trỏ đến từ trước đó |
5 | ( Định vị con trỏ đến đầu câu hiện tại |
6 | ) Định vị con trỏ ở đầu câu tiếp theo |
7 | E Di chuyển đến cuối từ được phân tách trống |
số 8 | { Di chuyển lại một đoạn |
9 | } Di chuyển một đoạn về phía trước |
10 | [[ Di chuyển một phần trở lại |
11 | ]] Chuyển một phần về phía trước |
12 | n| Di chuyển đến cột n trong dòng hiện tại |
13 | 1G Di chuyển đến dòng đầu tiên của tệp |
14 | G Di chuyển đến dòng cuối cùng của tệp |
15 | nG Di chuyển đến nth dòng của tệp |
16 | :n Di chuyển đến nth dòng của tệp |
17 | fc Chuyển tới c |
18 | Fc Chuyển trở lại c |
19 | H Di chuyển lên đầu màn hình |
20 | nH Di chuyển đến nth dòng từ đầu màn hình |
21 | M Di chuyển đến giữa màn hình |
22 | L Di chuyển xuống cuối màn hình |
23 | nL Di chuyển đến nth dòng từ cuối màn hình |
24 | :x Dấu hai chấm theo sau là một số sẽ định vị con trỏ trên số dòng được đại diện bởi x |
Lệnh điều khiển
Các lệnh sau có thể được sử dụng với Phím điều khiển để thực hiện các chức năng như được cho trong bảng bên dưới:
Sr.No. | Lệnh & Mô tả |
---|---|
1 | CTRL+d Di chuyển về phía trước 1/2 màn hình |
2 | CTRL+f Chuyển về phía trước trên toàn màn hình |
3 | CTRL+u Di chuyển ngược 1/2 màn hình |
4 | CTRL+b Lùi lại toàn màn hình |
5 | CTRL+e Di chuyển màn hình lên một dòng |
6 | CTRL+y Di chuyển màn hình xuống một dòng |
7 | CTRL+u Di chuyển màn hình lên 1/2 trang |
số 8 | CTRL+d Di chuyển màn hình xuống 1/2 trang |
9 | CTRL+b Di chuyển màn hình lên một trang |
10 | CTRL+f Di chuyển màn hình xuống một trang |
11 | CTRL+I Vẽ lại màn hình |
Chỉnh sửa tệp
Để chỉnh sửa tệp, bạn cần ở chế độ chèn. Có nhiều cách để vào chế độ chèn từ chế độ lệnh -
Sr.No. | Lệnh & Mô tả |
---|---|
1 | i Chèn văn bản trước vị trí con trỏ hiện tại |
2 | I Chèn văn bản vào đầu dòng hiện tại |
3 | a Chèn văn bản sau vị trí con trỏ hiện tại |
4 | A Chèn văn bản vào cuối dòng hiện tại |
5 | o Tạo một dòng mới cho mục nhập văn bản bên dưới vị trí con trỏ |
6 | O Tạo một dòng mới cho mục nhập văn bản phía trên vị trí con trỏ |
Xóa ký tự
Đây là danh sách các lệnh quan trọng, có thể được sử dụng để xóa các ký tự và dòng trong một tệp đang mở -
Sr.No. | Lệnh & Mô tả |
---|---|
1 | x Xóa ký tự dưới vị trí con trỏ |
2 | X Xóa ký tự trước vị trí con trỏ |
3 | dw Xóa từ vị trí con trỏ hiện tại sang từ tiếp theo |
4 | d^ Xóa từ vị trí con trỏ hiện tại đến đầu dòng |
5 | d$ Xóa từ vị trí con trỏ hiện tại đến cuối dòng |
6 | D Xóa từ vị trí con trỏ đến cuối dòng hiện tại |
7 | dd Xóa dòng con trỏ đang bật |
Như đã đề cập ở trên, hầu hết các lệnh trong vi có thể được bắt đầu bằng số lần bạn muốn hành động xảy ra. Ví dụ,2x xóa hai ký tự dưới vị trí con trỏ và 2dd xóa hai dòng mà con trỏ đang bật.
Chúng tôi khuyên bạn nên thực hành các lệnh trước khi tiếp tục.
Thay đổi lệnh
Bạn cũng có khả năng thay đổi các ký tự, từ hoặc dòng trong vi mà không cần xóa chúng. Dưới đây là các lệnh liên quan -
Sr.No. | Lệnh & Mô tả |
---|---|
1 | cc Xóa nội dung của dòng, để bạn ở chế độ chèn. |
2 | cw Thay đổi từ mà con trỏ đang bật từ con trỏ sang chữ thường w cuối từ. |
3 | r Thay thế ký tự dưới con trỏ. vi quay lại chế độ lệnh sau khi nhập thay thế. |
4 | R Ghi đè nhiều ký tự bắt đầu bằng ký tự hiện đang ở dưới con trỏ. Bạn phải dùngEsc để dừng việc ghi đè. |
5 | s Thay thế ký tự hiện tại bằng ký tự bạn nhập. Sau đó, bạn ở chế độ chèn. |
6 | S Xóa dòng mà con trỏ đang bật và thay thế nó bằng văn bản mới. Sau khi nhập văn bản mới, vi vẫn ở chế độ chèn. |
Sao chép và dán lệnh
Bạn có thể sao chép các dòng hoặc từ từ một nơi và sau đó bạn có thể dán chúng vào một nơi khác bằng các lệnh sau:
Sr.No. | Lệnh & Mô tả |
---|---|
1 | yy Sao chép dòng hiện tại. |
2 | yw Sao chép từ hiện tại từ ký tự mà con trỏ w viết thường đang bật, cho đến cuối từ. |
3 | p Đặt văn bản đã sao chép sau con trỏ. |
4 | P Đặt văn bản được kéo căng trước con trỏ. |
Lệnh nâng cao
Có một số lệnh nâng cao giúp đơn giản hóa việc chỉnh sửa hàng ngày và cho phép sử dụng hiệu quả hơn vi -
Sr.No. | Lệnh & Mô tả |
---|---|
1 | J Nối dòng hiện tại với dòng tiếp theo. Một số lệnh j nối nhiều dòng. |
2 | << Dịch chuyển dòng hiện tại sang trái một độ rộng. |
3 | >> Dịch chuyển dòng hiện tại sang phải một độ rộng dịch chuyển. |
4 | ~ Chuyển đổi trường hợp của ký tự dưới con trỏ. |
5 | ^G Nhấn phím Ctrl và phím G cùng lúc để hiển thị tên tệp hiện tại và trạng thái. |
6 | U Khôi phục dòng hiện tại về trạng thái trước khi con trỏ vào dòng. |
7 | u Điều này giúp hoàn tác thay đổi cuối cùng đã được thực hiện trong tệp. Nhập lại 'u' sẽ thực hiện lại thay đổi. |
số 8 | J Nối dòng hiện tại với dòng tiếp theo. Số đếm nối nhiều dòng đó. |
9 | :f Hiển thị vị trí hiện tại trong tệp theo% và tên tệp, tổng số tệp. |
10 | :f filename Đổi tên tệp hiện tại thành tên tệp. |
11 | :w filename Ghi vào tên tệp. |
12 | :e filename Mở tệp khác có tên tệp. |
13 | :cd dirname Thay đổi thư mục làm việc hiện tại thành dirname. |
14 | :e # Chuyển đổi giữa hai tệp đang mở. |
15 | :n Trong trường hợp bạn mở nhiều tệp bằng vi, hãy sử dụng :n để chuyển đến tệp tiếp theo trong chuỗi. |
16 | :p Trong trường hợp bạn mở nhiều tệp bằng vi, hãy sử dụng :p để chuyển đến tệp trước đó trong chuỗi. |
17 | :N Trong trường hợp bạn mở nhiều tệp bằng vi, hãy sử dụng :N để chuyển đến tệp trước đó trong chuỗi. |
18 | :r file Đọc tệp và chèn tệp đó sau dòng hiện tại. |
19 | :nr file Đọc tệp và chèn tệp sau dòng n. |
Tìm kiếm từ và ký tự
Trình chỉnh sửa vi có hai loại tìm kiếm: string và character. Đối với tìm kiếm chuỗi,/ và ?các lệnh được sử dụng. Khi bạn bắt đầu các lệnh này, lệnh vừa nhập sẽ được hiển thị trên dòng cuối cùng của màn hình, nơi bạn nhập chuỗi cụ thể cần tìm.
Hai lệnh này chỉ khác nhau về hướng tìm kiếm diễn ra -
Các / lệnh tìm kiếm chuyển tiếp (xuống dưới) trong tệp.
Các ? lệnh tìm kiếm ngược (lên trên) trong tệp.
Các n và Ncác lệnh lặp lại lệnh tìm kiếm trước đó theo hướng tương ứng hoặc ngược lại. Một số ký tự có ý nghĩa đặc biệt. Các ký tự này phải được đặt trước dấu gạch chéo ngược (\) được đưa vào như một phần của biểu thức tìm kiếm.
Sr.No. | Nhân vật & Mô tả |
---|---|
1 | ^ Tìm kiếm ở đầu dòng (Sử dụng ở đầu biểu thức tìm kiếm). |
2 | . Khớp một ký tự. |
3 | * Khớp với không hoặc nhiều ký tự trước đó. |
4 | $ Cuối dòng (Sử dụng ở cuối biểu thức tìm kiếm). |
5 | [ Bắt đầu một tập hợp các biểu thức phù hợp hoặc không khớp. |
6 | < Điều này được đặt trong một biểu thức thoát với dấu gạch chéo ngược để tìm phần cuối hoặc phần đầu của một từ. |
7 | > Điều này giúp xem '<'mô tả nhân vật ở trên. |
Tìm kiếm ký tự tìm kiếm trong một dòng để tìm ký tự được nhập sau lệnh. Cácf và F lệnh chỉ tìm kiếm một ký tự trên dòng hiện tại. f tìm kiếm chuyển tiếp và F tìm kiếm ngược và con trỏ di chuyển đến vị trí của ký tự được tìm thấy.
Các t và T lệnh chỉ tìm kiếm một ký tự trên dòng hiện tại, nhưng đối với t, con trỏ di chuyển đến vị trí trước ký tự và T tìm kiếm dòng ngược về vị trí sau ký tự.
Đặt lệnh
Bạn có thể thay đổi giao diện của màn hình vi bằng cách sau :setcác lệnh. Khi bạn đang ở chế độ lệnh, hãy nhập:set theo sau bởi bất kỳ lệnh nào sau đây.
Sr.No. | Lệnh & Mô tả |
---|---|
1 | :set ic Bỏ qua trường hợp khi tìm kiếm |
2 | :set ai Đặt tự động |
3 | :set noai Bỏ cài đặt tự động |
4 | :set nu Hiển thị các dòng có số dòng ở phía bên trái |
5 | :set sw Đặt chiều rộng của tab phần mềm. Ví dụ: bạn sẽ đặt độ rộng dịch chuyển là 4 bằng lệnh này::set sw = 4 |
6 | :set ws Nếu wrapscan được đặt và từ không được tìm thấy ở cuối tệp, nó sẽ thử tìm kiếm từ đầu |
7 | :set wm Nếu tùy chọn này có giá trị lớn hơn 0, trình soạn thảo sẽ tự động "bọc từ". Ví dụ: để đặt lề bao bọc thành hai ký tự, bạn sẽ nhập thế này::set wm = 2 |
số 8 | :set ro Thay đổi loại tệp thành "chỉ đọc" |
9 | :set term In loại thiết bị đầu cuối |
10 | :set bf Loại bỏ các ký tự điều khiển khỏi đầu vào |
Chạy lệnh
Vi có khả năng chạy các lệnh từ bên trong trình soạn thảo. Để chạy một lệnh, bạn chỉ cần vào chế độ lệnh và gõ:! chỉ huy.
Ví dụ: nếu bạn muốn kiểm tra xem tệp có tồn tại hay không trước khi bạn cố gắng lưu tệp của mình với tên tệp đó, bạn có thể nhập :! ls và bạn sẽ thấy đầu ra của ls trên màn hình.
Bạn có thể nhấn bất kỳ phím nào (hoặc chuỗi thoát của lệnh) để quay lại phiên vi của bạn.
Thay thế Văn bản
Lệnh thay thế (:s/) cho phép bạn nhanh chóng thay thế các từ hoặc nhóm từ trong tệp của mình. Sau đây là cú pháp để thay thế văn bản:
:s/search/replace/g
Các gviết tắt của toàn cầu. Kết quả của lệnh này là tất cả các lần xuất hiện trên dòng của con trỏ đều bị thay đổi.
Những điểm quan trọng cần lưu ý
Những điểm sau đây sẽ giúp bạn thành công với vi -
Bạn phải ở chế độ lệnh để sử dụng các lệnh. (Nhấn Esc hai lần bất kỳ lúc nào để đảm bảo rằng bạn đang ở chế độ lệnh.)
Bạn phải cẩn thận với các lệnh. Chúng có phân biệt chữ hoa chữ thường.
Bạn phải ở chế độ chèn để nhập văn bản.