Thứ tư, 30/10/2013 | 00:00 GMT+7

Cách sử dụng Vim để chỉnh sửa nâng cao văn bản thuần túy hoặc mã trên VPS

Vim , một cải tiến trên editor vi cổ điển, cực kỳ mạnh mẽ trong việc chỉnh sửa mã và văn bản thuần túy. Mặc dù thoạt nghe có vẻ khó hiểu và khó thực hiện, nhưng đây là một trong những cách hiệu quả nhất để chỉnh sửa văn bản do ngôn ngữ của nó giống như cú pháp lệnh.


Trong một bài viết trước, ta đã thảo luận về cách cài đặt vim và thực hiện chỉnh sửa cơ bản . Trong tài liệu này, ta sẽ tiếp tục các chủ đề nâng cao hơn có thể giúp chứng minh tính linh hoạt có sẵn khi chỉnh sửa.

Ta sẽ giả định bạn đã cài đặt vim và quen thuộc với các lệnh di chuyển và chỉnh sửa cơ bản được thảo luận trong bài viết được liên kết ở trên.

Điều hướng nâng cao


Trước khi bắt đầu tài liệu mới, ta hãy xem lại một chút chuyển mà ta đã học trong bài viết trước:

  • Chuyển động cơ bản

    • h: trái
    • l: đúng
    • j: xuống
    • k: lên
  • Các chuyển động khác

    • gg: đầu tài liệu
    • G: cuối tài liệu hoặc đến số dòng nếu một số được đặt trước G
    • w: từ tiếp theo
    • e: cuối từ
    • 0: đầu dòng
    • $: cuối dòng

Như bạn thấy , ta đã có khá nhiều lệnh di chuyển theo ý của bạn . Tuy nhiên, ta cũng có thể hướng chuyển động theo những cách khác.

Ta có thể di chuyển con trỏ đến các khu vực khác nhau trong phần hiện đang hiển thị của trang bằng cách sử dụng các lệnh sau:

  • H : Di chuyển con trỏ lên đầu trang hiện đang hiển thị (nghĩ “cao”)

  • M : Di chuyển con trỏ đến giữa trang hiện đang hiển thị

  • L : Di chuyển con trỏ đến cuối trang hiện đang hiển thị (nghĩ là "thấp")

Nếu ta muốn di chuyển trang thay vì con trỏ (như khi cuộn), ta có thể sử dụng các lệnh sau:

  • CTRL-D : Xuống trang

  • CTRL-U : Trang lên

  • CTRL-E : Cuộn xuống một dòng

  • CTRL-Y : Cuộn lên một dòng

Ta cũng có thể chuyển bằng các khối thông tin logic. Điều này có thể hữu ích nếu bạn đang nhập văn bản thông thường thay vì mã. Chúng tương tự như các lệnh chuyển từ và dòng.

  • ) : Chuyển đến đầu câu tiếp theo

  • ( : Chuyển đến đầu câu cuối cùng

  • } : Di chuyển đến đầu đoạn tiếp theo (được phân cách bằng một dòng trống)

  • { : Di chuyển đến đầu đoạn cuối cùng (được phân cách bằng một dòng trống)

Bạn cũng có thể xác định các điểm của bạn trong file để chuyển đến. Bạn có thể đặt marks tại bất kỳ điểm nào trong file . Sau đó, bạn có thể tham chiếu các dấu đó để nhảy đến điểm đó hoặc chuyển điểm đó đến một lệnh chấp nhận các chuyển động:

  • m : Nhập “m” theo sau một chữ cái sẽ tạo ra một tham chiếu dấu của chữ cái đó.

    • Các chữ cái viết thường dành riêng cho tài liệu hiện tại, trong khi các chữ cái viết hoa chỉ được dùng một lần (chúng được dùng để chuyển đến các phần trong các tài liệu khác nhau.
  • ' : Dấu nháy đơn theo sau là một ký tự dấu (được định nghĩa trước đó bằng chữ “m” như trên), sẽ di chuyển con trỏ đến đầu dòng chứa dấu đó.

  • ` : Dấu tích theo sau bởi một ký tự đánh dấu sẽ di chuyển con trỏ đến vị trí chính xác của dấu.

Các lệnh này cho phép bạn đặt một dấu và sau đó kéo, xóa hoặc định dạng trên khu vực được xác định giữa vị trí hiện tại và dấu.Điều này cho phép kiểm soát rất chi tiết các tùy chọn chỉnh sửa.

Cách quản lý tài liệu


Thông thường khi bạn đang làm việc, cho dù là trong một dự án phần mềm hay một bài báo học kỳ, bạn muốn có thể tham khảo nhiều tài liệu cùng một lúc. Vim có một số cách khác nhau để thực hiện việc này, tùy thuộc vào cách bạn muốn hoạt động.

Cách quản lý cache


Một cách để quản lý nhiều file là thông qua buffers . Cache thường đại diện cho một file đang mở để chỉnh sửa. Về cơ bản, chúng là mọi thứ mà vim hiện đang mở và có thể truy cập dễ dàng.

Ta mở nhiều file với vim như thế này:

vim file1 file2 file3 

Mỗi file này được mở trong cache riêng của nó, hiện tại, ta chỉ có thể thấy file đầu tiên.

Ta có thể xem ta có những cache nào bằng lệnh :buffers .

:buffers 

:buffers   1 %a  "file1"             line 1   2     "file2"             line 0   3     "file3"             line 0 Press ENTER or type command to continue 

Nếu muốn kiểm tra vùng đệm tiếp theo, ta có thể gõ :bn . Điều này sẽ thay đổi thành cache tiếp theo. Tương tự, ta có thể chuyển sang vùng đệm theo số (trong cột đầu tiên ở trên) hoặc tên, bằng lệnh b theo sau là số hoặc tên. Điều này hoạt động ngay cả khi tên file không hoàn chỉnh.

Dưới đây là một số lệnh để quản lý cache :

  • : cache : Liệt kê các cache có sẵn

  • : ls : Tương tự như trên

  • : bn : Chuyển sang vùng đệm tiếp theo

  • : bp : Chuyển sang vùng đệm trước đó

  • : bfirst : Chuyển sang vùng đệm đầu tiên

  • : blast : Chuyển sang vùng đệm cuối cùng

  • : bdelete : Xóa cache hiện tại

  • : badd : Mở cache mới với tên file theo sau

  • : e : Chỉnh sửa file khác trong cache mới và chuyển sang nó.

Cách quản lý Windows


Một cơ chế kiểm soát riêng biệt mà vim có để quản lý nhiều file là khái niệm windows hoặc views . Điều này cho phép bạn chia vùng chỉnh sửa hiện tại thành các cửa sổ khác nhau để bạn có thể xem nhiều vùng đệm cùng một lúc.

Để chia không gian làm việc hiện tại thành các cửa sổ riêng biệt, bạn có thể gõ :split hoặc :sp . Thao tác này sẽ mở ra một cửa sổ mới phía trên cửa sổ hiện tại và thay đổi tiêu điểm cho cửa sổ đó. Bạn có thể thay đổi cache được hiển thị trong cửa sổ mới bằng cách sử dụng các lệnh cache được hiển thị ở trên.

Dưới đây là một số lệnh mà ta có thể sử dụng để tạo và quản lý cửa sổ:

  • : sp : Chia đôi cửa sổ hiện tại. Ban đầu, cùng một cache sẽ được hiển thị trong mỗi cửa sổ.

    • Bắt đầu “sp” bằng một số để đặt chiều cao cửa sổ mới.
  • : vs : Chia cửa sổ hiện tại theo chiều dọc. Ban đầu, cùng một cache sẽ được hiển thị trong mỗi cửa sổ.

    • Bắt đầu “vs” bằng một số để đặt chiều rộng cửa sổ mới.
  • CTRL-ww : Thay đổi tiêu điểm sang cửa sổ tiếp theo

  • CTRL-w (chuyển động) : Thay đổi tiêu điểm cho cửa sổ theo hướng (h, j, k, l) được chỉ định

  • CTRL-wc : Đóng cửa sổ hiện tại

  • CTRL-w + : Tăng kích thước của cửa sổ hiện tại

  • CTRL-w- : Giảm kích thước của cửa sổ hiện tại

  • CTRL-w = : Đặt tất cả các cửa sổ có kích thước bằng nhau

  • # CTRL-w_ : Đặt chiều cao thành kích thước được biểu thị bằng dấu “#” trước

  • : only : Đóng tất cả các cửa sổ trừ cửa sổ hiện tại

  • CTRL-wn : Mở cửa sổ mới với cache mới

Cách quản lý các tab


Khái niệm thứ ba để quản lý nhiều tài liệu trong vim là các tabs . Không giống như nhiều chương trình, trong vim, các tab có thể chứa các cửa sổ chứ không phải ngược lại. Các tab có thể chứa các cửa sổ, đóng role như các khung nhìn vào cache .

Ta có thể quản lý bố cục cửa sổ của từng tab riêng biệt. Để tạo tab ta có thể sử dụng lệnh :tabnew để mở một tab mới.

Một số cách dễ dàng để quản lý các tab là:

  • : tabnew : Mở tab mới

  • : tabclose : Đóng tab hiện tại

  • : tabn : Chuyển sang tab tiếp theo

  • gt : Chuyển sang tab tiếp theo

  • : tabp : Chuyển sang tab trước

  • gT : Chuyển sang tab trước

  • : tab ball : Mở tất cả các cache trong các tab riêng lẻ

  • : tab : Liệt kê tất cả các tab có sẵn

Với việc xáo trộn xung quanh với các cache , cửa sổ và tab, đôi khi nó trở nên khó hiểu với file bạn đang xem. Một cách nhanh chóng để tìm ra tên file bạn hiện đang xem là nhập:

  • CTRL-g : Hiển thị tên file hiện tại

Tài liệu Lệnh cụ thể


Tùy thuộc vào loại tài liệu bạn đang xử lý, vim có một số chức năng có thể giúp bạn.

Văn bản thô


Nếu bạn đang chỉnh sửa tài liệu văn bản thuần túy, vim có thể hỗ trợ bạn theo nhiều cách khác nhau. Một trong những tính năng cần thiết cho chức năng này là kiểm tra chính tả.

Để bật tính năng kiểm tra chính tả trong vim, có thể chạy lệnh:

:set spell 

Để đặt ngôn ngữ đang được sử dụng, có thể chạy lệnh:

:set spelllang=[language abbreviation] 

Bây giờ, tài liệu của bạn sẽ được kiểm tra chính tả. Dòng nguệch ngoạc bình thường sẽ xuất hiện dưới các từ sai chính tả. Đây là cách bạn sử dụng nó.

Để chuyển qua lại giữa các từ sai chính tả, hãy nhập:

]s    # Jump to next mistake [s    # Jump to previous mistake 

Khi con trỏ của bạn ở trên một từ sai chính tả, bạn có thể xem các đề xuất chính tả bằng lệnh :

z= 

Điều này sẽ cung cấp cho bạn một danh sách các trận đấu có thể. Bạn có thể chọn tùy chọn bạn muốn bằng cách chọn số liên quan hoặc bạn có thể nhấn ENTER để giữ nguyên từ đó.

Nếu bạn muốn đánh dấu một từ là không bị sai chính tả, bạn có thể thêm từ đó vào một trong danh sách chính tả. Vim duy trì hai danh sách chính tả, một danh sách thông thường và một danh sách tạm thời sẽ được sử dụng cho phiên hiện tại.

Để thêm từ vào danh sách từ "tốt", hãy sử dụng một trong các lệnh sau:

zg    # Adds word to regular dictionary zG    # Adds word to the current session dictionary 

Nếu bạn vô tình thêm một từ, bạn có thể xóa nó bằng cách chuyển đến từ đó và nhập:

zug   # Remove word from regular dictionary zuG   # Remove word from the current session dictionary 

Nếu bạn thấy mình phải thường xuyên gõ các từ dài của cụm từ, bạn có thể thêm từ viết tắt.

Nếu ta nhập :ab theo sau là từ viết tắt và mở rộng, vim sẽ nhập vào mở rộng khi nào ta nhập từ viết tắt theo sau bởi một khoảng trắng.

Ví dụ: nếu ta là những người học theo ví dụ của Richard Stallman về việc sửa mọi cách sử dụng “Linux” bằng “GNU / Linux”, ta có thể tạo một chữ viết tắt tự động thực hiện điều đó:

:ab Linux GNU/Linux 

Bây giờ, khi ta gõ “Linux”, vim sẽ tự động thay thế “GNU / Linux”.

Linux is an operating system. 

Thay đổi:

GNU/Linux is an operating system. 

Tuy nhiên, nếu ta thấy mình đang nói cụ thể về kernel , trong đó chỉ có từ Linux là phù hợp, ta có thể hủy mở rộng bằng lệnh CTRL-V trước khi nhập khoảng trắng.

GNU/Linux is an operating system with Linux(CTRL-V) as a kernel. 

Nếu ta không muốn sử dụng chữ viết tắt này nữa, ta có thể xóa nó bằng lệnh sau:

:una Linux  

Bây giờ “Linux” của ta sẽ vẫn là “Linux”.

Một điều khác mà đôi khi bạn có thể phải làm là chèn các ký tự không có trên bàn phím qwerty truyền thống. Ta gọi đây là những "đồ thị". Bạn có thể xem danh sách digraph của vim bằng lệnh :

:digraphs 

NU ^@  10    SH ^A   1    SX ^B   2    EX ^C   3    ET ^D   4    EQ ^E   5 AK ^F   6    BL ^G   7    BS ^H   8    HT ^I   9    LF ^@  10    VT ^K  11 FF ^L  12    CR ^M  13    SO ^N  14    SI ^O  15    DL ^P  16    D1 ^Q  17 D2 ^R  18    D3 ^S  19    D4 ^T  20    NK ^U  21    SY ^V  22    EB ^W  23 CN ^X  24    EM ^Y  25    SB ^Z  26    EC ^[  27    FS ^\  28    GS ^]  29 RS ^^  30    US ^_  31    SP     32    Nb #   35    DO $   36    At @   64 

Bây giờ, bạn có thể chèn bất kỳ ký tự nào vào cột bên phải bằng lệnh CTRL-k theo sau là hai chữ cái ở cột bên trái.

Ví dụ: trên máy tính của tôi, để nhập ký hiệu bảng Anh, tôi có thể nhập ký hiệu này khi ở chế độ insert :

CTRL-k Pd 

£ 

Mã nguồn


Nếu bạn đang viết mã, có một số thứ khác nhau sẽ giúp bạn tương tác với mã của bạn .

Một trong những điều cơ bản nhất là làm nổi bật cú pháp. Bạn có thể bật tính năng đánh dấu cú pháp bằng lệnh :

:syntax on 

Điều này sẽ cài đặt đánh dấu cú pháp cho file của bạn dựa trên phần mở rộng file được phát hiện. Nếu bạn muốn thay đổi ngôn ngữ đang được đánh dấu, bạn có thể thực hiện bằng cách đặt ngôn ngữ bằng:

:set filetype=[language] 

Nếu bạn muốn sử dụng một tiện ích hệ thống để sửa đổi một số dòng trong file của bạn , bạn có thể gọi nó bằng cách sử dụng ! lệnh ở chế độ bình thường.

Lệnh này chấp nhận một chuyển động và sau đó gửi nó đến lệnh tiếp theo.

![motion] filter 

Ví dụ, để sắp xếp các dòng từ vị trí hiện tại đến cuối file , có thể chạy lệnh:

!G sort 

Sắp xếp là một lệnh Linux sắp xếp đầu vào, theo thứ tự bảng chữ cái theo mặc định.

Nếu ta muốn chèn kết quả của một lệnh vào file , hãy chuyển đến một dòng trống mà bạn muốn kết quả . Kiểu:

!!command 

Điều này sẽ đặt kết quả của lệnh đã chỉ định vào tài liệu.

Nếu ta muốn xem kết quả của một lệnh, nhưng không muốn chèn nó vào tài liệu, ta cũng có thể sử dụng chế độ lệnh (:) version , sẽ là:

:!command 

Điều này sẽ hiển thị cho bạn kết quả của lệnh, nhưng sẽ đưa bạn trở lại tài liệu không thay đổi khi hoàn tất.

Giảm sự lặp lại


Thường thì khi chỉnh sửa hoặc tạo bất kỳ loại file nào, bạn sẽ thấy mình lặp lại nhiều thao tác giống nhau hoặc tương tự nhau. May mắn là vim cung cấp một số cách để lưu các group lệnh vào macro.

Để bắt đầu ghi macro, bạn có thể nhập q theo sau là một ký tự để tham chiếu macro.

qa    # will save macro "a" 

Bất kỳ lệnh nào bạn nhập bây giờ sẽ được ghi lại như một phần của macro. Để kết thúc macro, bạn có thể nhập lại q .

Vì vậy, nếu ta nhập:

qa0c3wDELETED<esc>q 

Điều này sẽ bắt đầu một macro (được lưu dưới dạng “a”), chuyển tới đầu dòng và thay thế ba từ tiếp theo bằng từ “ĐÃ XÓA”. Sau đó, nó thoát khỏi chế độ insert và kết thúc macro.

Để phát lại macro này, bắt đầu từ vị trí con trỏ hiện tại, hãy sử dụng ký tự @ theo sau là tham chiếu macro:

@a 

Thao tác này sẽ phát lại các lệnh macro bắt đầu ở vị trí hiện tại.

Nếu ta muốn tạo một macro kết thúc ở chế độ insert , ta phải kết thúc macro theo một cách khác (gõ “q” sẽ chỉ chèn aq). Ta có thể thực hiện một lệnh chế độ bình thường trong chế độ insert bằng cách đặt trước nó bằng CTRL-O .

Do đó, nếu ta muốn thay đổi nội dung của các dấu ngoặc đơn đầu tiên trên dòng này, bạn có thể có một macro cho biết:

qi0f(lct)<CTRL-O>q 

Điều này tạo ra một macro “i”. Macro di chuyển đến đầu dòng hiện tại. Sau đó, nó tìm dấu ngoặc mở và di chuyển sang phải một ký tự (để di chuyển bên trong dấu ngoặc đơn). Sau đó, nó thay đổi mọi thứ cho đến khi đóng ngoặc. Với vim ở chế độ insert đang chờ văn bản thay thế, ta nhấn CTRL-O sau đó nhấn q để kết thúc macro, để ta ở chế độ insert sẵn sàng thay thế văn bản.

Kết luận


Đến đây bạn sẽ có ý tưởng về một số cách phức tạp hơn mà vim có thể giúp bạn. Mặc dù điều này có vẻ nhiều, nhưng nó chỉ làm trầy xước bề mặt.

Có rất nhiều chức năng mà ta chưa đề cập đến và bạn không cần phải biết mọi thứ. Bạn sẽ học được điều gì là quan trọng dựa trên cách bạn chọn sử dụng vim. Bạn càng thực hành và sử dụng nó mỗi ngày, nó sẽ cảm thấy tự nhiên hơn và nó sẽ trở nên mạnh mẽ hơn.

<div class = “author”> Bởi Justin Ellingwood </div>


Tags:

Các tin liên quan