8 mẹo lệnh Vim mạnh mẽ cho quản trị Linux (Phần 2)

Trong bài viết trước trong chuỗi này, chúng ta đã xem xét 7 mẹo và thủ thuật để thêm vào bộ kỹ năng vi/m của bạn, ngoài những lý do đã nêu trước đó, học cách sử dụng trình soạn thảo văn bản hiệu quả trên Linux là một khả năng cần thiết cho một quản trị viên hệ thống hoặc kỹ sư và là một năng lực cần thiết để vượt qua bất kỳ chương trình chứng chỉ Linux chính nào (như LFCS, LFCE, RHCSA và RHCE).

8. Tạo cửa sổ Vim ngang hoặc dọc

Mẹo này được chia sẻ bởi Yoander, một trong số độc giả của chúng tôi, ở phần 1. Bạn có thể khởi chạy vi/m với nhiều cửa sổ ngang hoặc dọc để chỉnh sửa các tệp riêng trong cùng một cửa sổ chính:

Khởi chạy vi/m với hai cửa sổ ngang, với test1 ở trên và test2 ở dưới

vim -o test1 test2 
Launch Vim Editor in Horizontal Windows

Khởi chạy vi/m với hai cửa sổ dọc, với test3 ở bên trái và test4 ở bên phải:

vim -O test3 test4 
Launch Vim Editor in Vertical Windows

Bạn có thể di chuyển con trỏ từ cửa sổ này sang cửa sổ khác theo quy trình di chuyển thường thấy của vi/m (h: sang phải, l: sang trái, j: xuống dưới, k: lên trên):

  • Ctrl+w k – lên trên
  • Ctrl+w j – xuống dưới
  • Ctrl+w l – sang trái
  • Ctrl+w h – sang phải

9. Thay đổi chữ IN HOA hoặc thường trong Vim

Vui lòng lưu ý rằng mẹo này chỉ hoạt động trong vim. Trong các ví dụ tiếp theo, X là một số nguyên.

  • Để thay đổi một chuỗi chữ thành chữ HOA, đặt con trỏ vào chữ đầu tiên, sau đó gõ gUX trong chế độ ex và cuối cùng nhấn mũi tên phải trên bàn phím.
  • Để thay đổi X từ số lượng từ, đặt con trỏ ở đầu từ và gõ gUXw trong chế độ ex.
  • Để thay đổi một dòng hoàn chỉnh thành chữ HOA, đặt con trỏ ở bất kỳ đâu trong dòng và gõ gUU trong chế độ ex.

Ví dụ, để chuyển đổi một dòng thường thành HOA, bạn nên đặt con trỏ ở bất kỳ chỗ nào trên dòng và gõ gUU:

Change String to Uppercase in Vim Editor

Ví dụ, để chuyển đổi 2 từ HOA thành thường, bạn nên đặt con trỏ ở đầu từ đầu tiên và gõ gu2w:

Convert String to Lowercase in Vim Editor

10. Xóa văn bản trong chế độ chèn của Vim

Mặc dù bạn có thể xóa các ký tự hoặc một số từ cùng một lúc trong chế độ ex (ví dụ: dw để xóa một từ), nhưng bạn cũng có thể làm điều đó trong chế độ chèn như sau:

  • Ctrl + h – xóa ký tự trước đó tại vị trí hiện tại của con trỏ.
  • Ctrl + w – xóa từ trước đó tại vị trí hiện tại của con trỏ. Để làm việc này chính xác, con trỏ phải được đặt trong một khoảng trống sau từ mà bạn muốn xóa.
  • Ctrl + u – xóa dòng hiện tại bắt đầu từ ký tự ngay bên trái vị trí của con trỏ.

11. Di chuyển hoặc sao chép các dòng hiện có trong Vim

Đúng là bạn có thể sử dụng các lệnh dd, yy và p trong chế độ ex để xóa, sao chép và dán các dòng tương ứng, nhưng chỉ khi con trỏ được đặt ở nơi bạn muốn thực hiện các thao tác đó.

Tin tốt là với các lệnh sao chép và di chuyển, bạn có thể làm điều tương tự bất kể con trỏ hiện đang ở đâu.

Đối với ví dụ tiếp theo, chúng ta sẽ sử dụng một bài thơ ngắn có tựa đề "Forever" của Terri Nicole Tharrington. Để bắt đầu, chúng ta sẽ cho Vim hiển thị số dòng (nhớ thực hiện thêm lệnh :set nu trong chế độ Command – xem điều này như một mẹo phụ). Chúng ta sẽ sử dụng :3copy5 (cũng trong chế độ Command) để sao chép dòng 3 xuống dưới dòng 5:

Move Copy Existing Lines in Vim

Bây giờ, hoàn tác thay đổi cuối cùng (Esc + u – một mẹo bổ sung khác!) và gõ :1move7 để thay thế dòng 7 bằng dòng 1. Lưu ý là các dòng 2 đến 7 được dịch lên và dòng trước đó 1 nằm ở dòng 7:

Move Lines in Vim Editor

12. Điều hướng và đếm các nội dung khớp với mẫu trong Vim

Mẹo này dựa trên lệnh thay thế (mẹo #7 trong phần 1 của chuỗi này), với ngoại lệ là nó sẽ không xóa bất cứ điều gì vì hành vi thay thế bị ghi đè bởi tùy chọn n, dẫn đến việc đếm số lần xuất hiện của mẫu đã chỉ định:

Hãy đảm bảo rằng bạn không bỏ sót bất kỳ dấu gạch chéo chéo nào!

:%s/pattern//gn 

Ví dụ,

:%s/libero//gn
Count Matches by Search Pattern in Vim

Để di chuyển từ một khớp mẫu sang khớp mẫu tiếp theo trong chế độ ex, nhấn n (viết thường). Để di chuyển đến trường hợp trước đó, nhấn N (viết hoa).

13. Mở tệp trong Vim ở một dòng đã chỉ định

Mặc định, khi bạn khởi chạy vi/m, con trỏ được đặt ban đầu ở dòng cuối cùng mà bạn đã chỉnh sửa. Nếu bạn muốn mở chương trình và có con trỏ được đặt trực tiếp trên một dòng đã chỉ định, bạn có thể sử dụng mẹo sau:

# vim filename +line_number

Ví dụ, mở forever.txt và đặt con trỏ ở dòng 6:

# vim forever.txt +6

Hãy điều chỉnh ví dụ này một chút. Giả sử chúng ta muốn mở tệp trên dòng xuất hiện lần thứ 3 của mẫu:

# vim filename +$(grep -in pattern filename | sed -n 3p | cut -d: -f1)

Hãy xem xét kỹ hơn những gì lệnh trên thực hiện:

  • grep -in pattern filename – hiển thị tất cả các dòng từ tệp tin nơi xuất hiện mẫu, với số dòng ở đầu mỗi dòng kết quả.
  • sed -n 3p – hiển thị dòng thứ 3 từ kết quả đầu ra của chuỗi lệnh trước đó.

Cuối cùng,

  • cut -d: -f1 – trả về trường đầu tiên của chuỗi lệnh trước với dấu hai chấm (:) là dấu phân cách trường.
grep -in forever forever.txt
grep -in forever forever.txt | sed -n 3p
grep -in forever forever.txt | sed -n 3p | cut -d: -f1
Open Vim Editor in Specified Line

Kết quả của lệnh trước đó sau đó được truyền cho vi/m để mở chương trình ở dòng đã chỉ định.

14. Tùy chỉnh môi trường Vim

Nếu bạn sử dụng vi/m để chỉnh sửa các tệp cấu hình hoặc viết mã, bạn sẽ muốn hiển thị số dòng khi bạn mở chương trình và đặt thụt đầu dòng tự động để khi bạn nhấn phím Enter, con trỏ sẽ tự động được đặt ở vị trí chính xác. Ngoài ra, bạn cũng có thể tùy chỉnh số khoảng trắng mà một tab chiếm.

Mặc dù bạn có thể làm điều đó mỗi khi bạn khởi chạy vi/m, nhưng dễ hơn để thiết lập các tùy chọn này trong tệp ~/.vimrc để chúng được áp dụng tự động:

set number
set autoindent
set shiftwidth=4
set softtabstop=4
set expandtab

Để biết thêm các tùy chọn tùy chỉnh môi trường vi/m của bạn, bạn có thể tham khảo tài liệu vi/m trực tuyến.

15. Nhận trợ giúp chung với Vimtutor

Nếu bạn cần cải thiện kỹ năng vi/m tổng quát của mình bất cứ lúc nào, bạn có thể khởi chạy vimtutor từ dòng lệnh sẽ hiển thị một trợ giúp vi/m đầy đủ mà bạn có thể tham khảo bất cứ khi nào bạn muốn mà không cần mở trình duyệt web để tìm cách thực hiện một nhiệm vụ cụ thể trong vi/m.

vimtutor
Vim Editor Help and Options

Lưu ý rằng bạn có thể điều hướng hoặc tìm kiếm nội dung của Vimtutor như bạn đang điều hướng một tệp thông thường trong vi/m.

Tóm tắt

Trong 2 phần của chuỗi này, tôi đã chia sẻ một số mẹo và thủ thuật vi/m mà sẽ giúp bạn hiệu quả hơn khi chỉnh sửa văn bản sử dụng các công cụ dòng lệnh.

Tôi chắc chắn rằng bạn cũng có những mẹo khác - vì vậy hãy chia sẻ chúng với cộng đồng còn lại trong biểu mẫu bình luận dưới đây. Như thường lệ, câu hỏi và nhận xét cũng được chào đón.