SỬ DỤNG TRÌNH SOẠN THẢO VI EDITOR TRÊN MAC OS VÀ LINUX

Trình soạn thảo vi là một trình soạn thảo văn bản chạy trên terminal rất phổ biến trên các máy tính kiểu UNIX, trong đó có Mac OS X và Linux. vi editor được sử dụng nhiều như vậy là vì nó tương thích với hầu hết các terminal, và để thao tác với vi editor, bạn chỉ cần sử dụng các phím abc thông thường, không cần dùng các phím đặc biệt như Ctrl, Alt, Command hay các phím Fn có thể khác nhau ở từng loại máy.

vi là viết tắt của visual editor, sau này, bạn hay thấy nó ghi là vim, là viết tắt của vi improved.

Lưu ý, vi chỉ là trình soạn thảo văn bản đơn giản, không định dạng. Nó tương tự Notepad trên Windows. Bạn khó có thể dùng nó để soạn thảo văn bản có in đậm, in nghiêng,… giống như Word. Tuy nhiên, nó rất hữu ích nếu bạn cần chỉnh sửa các tập tin hệ thống.

Khởi động vi editor

Từ dấu nhắc terminal, bạn có thể khởi động vi bằng 2 cách sau:

  1. Chỉ gõ vi, rồi enter. Trong tình huống này, vi sẽ được mở ở chế độ Command mode (xem mục Các chế độ vi bên dưới) với mục đích soạn thảo một tập tin mới hoàn toàn, chưa có tên, và lấp đầy màn hình terminal, như hình sau:

    Screen Shot 2017-05-26 at 11.12.55 PM

    Trình soạn thảo vi trên Mac OS X

  2. Gõ vi filename, rồi enter. Trong tình huống này, vi sẽ được mở kèm nội dung tập tin filename. Nếu filename chưa tồn tại, nó sẽ được tạo:

    Tạo file mới nếu chưa tồn tại

    Tạo file mới nếu chưa tồn tại

  3. Gõ vi -r filename rồi enter. Tham số -r giúp bạn cố gắng khôi phục tập tin filename đang soạn thảo lần trước nhưng sau đó vi dừng đột ngột do lỗi hệ thống.

Các chế độ vi
Như đã nói, bạn chỉ dùng các phím abc để thao tác với vi. Vậy làm sao để vi phân biệt được một phím bạn gõ là ký tự bạn định nhập vào hay là một lệnh bạn muốn vi thực hiện? Để giải quyết việc này, vi cung cấp cho bạn 2 chế độ cơ bản:

  • Insert mode: ở chế độ này, mỗi phím bạn gõ là một ký tự sẽ được chèn vào nội dung tập tin. Từ Command mode, để vào chế độ này, bạn ấn i, hoặc o, hoặc a (xem thêm bên dưới)
  • Command mode: ở chế độ này, một phím bạn gõ là một lệnh bạn muốn vi thực hiện. Đây là chế độ mặc định khi bạn mới mở vi. Chế độ này có thể chia thành hai chế độ nhỏ hơn:
    Command mode đơn thuần: thực hiện các thao tác di chuyển con trỏ, sao chép, dán,… Để vào chế độ này, bấm phím ESC.
  • Escape mode: thực hiện các thao tác trên tập tin, như lưu tập tin, mở tập tin,… Từ Command mode đơn thuần, ấn : để vào chế độ này. Ngay khi ấn : để ý góc dưới trái, bạn sẽ thấy xuất hiện dòng sau:2014072804

Chèn văn bản

Từ Command mode, bạn ấn i, hoặc a, hoặc o để bắt đầu nhập văn bản, theo mô tả sau:

  • i: nhập văn bản bắt đầu từ trước vị trí dấu nháy hiện tại
  • I: nhập văn bản bắt đầu từ đầu dòng hiện tại
  • a: nhập văn bản bắt đầu từ ngay sau vị trí dấu nháy hiện tại
  • A: nhập văn bản bắt đầu tự cuối dòng hiện tại
  • o: nhập văn bản bắt đầu từ dòng mới ngay sau dòng hiện tại
  • O: nhập văn bản bắt đầu từ dòng mới ngay trước dòng hiện tại

Chế độ này là chế độ Insert mode. Khi vào chế độ này, để ý góc dưới trái màn hình vi, bạn sẽ thấy dòng:

Chế độ Insert mode trong vi editor

Chế độ Insert mode trong vi editor

Di chuyển dấu nháy con trỏ

Trong các phiên bản mới trên các hệ điều hành hiện tại, hầu hết bạn có thể dùng các phím mũi tên để di chuyển dấu nháy. Tuy nhiên, bạn vẫn có thể sử dụng những phím sau để di chuyển theo cách cũ. Lưu ý, những phím này đang được sử dụng với mục đích di chuyển dấu nháy chứ không phải nhập liệu, do đó, nếu đang ở Insert mode, hãy bấm ESC để quay về Command mode.

  • k: di chuyển dấu nháy lên hàng trên
  • j: di chuyển dấu nháy xuống hàng dưới
  • h: di chuyển dấu nháy sang trái một ký tự
  • l: di chuyển dấu nháy sang phải một ký tự

Một lưu ý quan trọng nữa là vi phân biệt chữ hoa thường, nên khi ấn phím lệnh, bạn chú ý sự khác nhau giữ chữ hoa và chữ thường.

Hiệu chỉnh văn bản

Từ Command mode, sử dụng những phím sau để:

  • r: thay thế một ký tự tại vị trí dấu nháy hiện tại. Bạn ấn r rồi gõ ngay ký tự mới, nó sẽ đè lên ký tự đang có tại dấu nháy.
  • R: thay thế nhiều ký tự bắt đầu từ vị trí dấu nháy hiện tại. Bạn ấn R rồi gõ các ký tự mới, chúng sẽ đè lần lượt các ký tự đang có. Để kết thúc việc thay thế, bạn ấn ESC.
  • cw: thay thế một từ, bắt đầu từ ngay vị trí dấu nhắc, bằng từ mới do bạn nhập vào. Giả sử đang có chữ today, dấu nhắc đang ở chữ d, khi bấm cw rồi gõ night, các ký tự từ ngay dấu nhắc, bao gồm day, sẽ bị thay bằng night, thành tonight. Để kết thúc, bấm ESC.
  • cNw: trong đó, N là một chữ số, có tác dụng giống cw, nhưng thay vì chỉ thay thế một từ, nó sẽ thay thế N từ. Khi bấm c3w chẳng hạn, 3 từ gần nhất kể từ vị trí dấu nháy sẽ bị xóa để bạn nhập từ mới vào.
  • C: giống R, nhưng khác ở chỗ khi bấm C, toàn bộ ký tự từ vị trí dấu nhắc sẽ bị xóa hoàn toàn để bạn nhập mới. Để kết thúc, bấm ESC.
  • cc: thay thế toàn bộ dòng hiện tại, khi bấm cc, toàn bộ dòng hiện tại sẽ bị xóa để bạn nhập mới. Bấm ESC để kết thúc.
  • Ncc: trong đó, N là một số, có tác dụng giống cc, nhưng trên N dòng.
  • x: xóa một ký tự ngay vị trí dấu nhắc.
  • NxN là số, xóa N ký tự, bắt đầu từ ký tự ngay dấu nhắc.
  • dw: xóa một từ, bắt đầu từ ký tự ngay dấu nhắc.
  • dNwN là số, xóa N từ bắt đầu từ ký tự ngay dấu nhắc.
  • dd: xóa dòng hiện tại.
  • NddN là số, xóa N dòng, bắt đầu từ dòng hiện tại

Sao chép, dán

  • yy: sao chép dòng hiện tại vào bộ đệm (tương tự Ctrl+C cả dòng trên Windows).
  • yw: sao chép từ hiện tại vào bộ đệm.
  • NyyN là số, sao chép N dòng từ dòng hiện tại vào bộ đệm.
  • p: dán từ bộ đệm vào văn bản, ngay sau dấu nhắc hiện tại.
  • P: dán từ bộ đệm vào văn bản, ngay trước dấu nhắc hiện tại.

Tìm kiếm

  • /chuỗi rồi enter: tìm chuỗi bên trong văn bản từ sau vị trí dấu nhắc hiện hành. Ngay sau khi enter, dấu nhắc sẽ nhảy đến nơi tìm thấy chuỗi gần nhất.
  • ?chuỗi rồi enter: tìm chuỗi bên trong văn bản từ trước vị trí dấu nhắc hiện hành.
  • n: nhảy dấu nhắc đến vị trí tìm thấy kế tiếp
  • N: giống n nhưng đi theo chiều ngược lại

Thao tác với tập tin

Từ Command mode, gõ những lệnh sau để thao tác với tập tin:

  • :r filename rồi enter: mở tập tin filename rồi chèn nội dung của nó vào ngay sau hàng hiện tại
  • :w rồi enter: lưu tập tin
  • :w filename: lưu tập tin với tên filename
  • :w! filename: buộc lưu tập tin với tên filename, nếu tập tin đã tồn tại, nó sẽ bị ghi đè

Thoát khỏi vi

  • :q: thoái khỏi vi
  • :q!: buộc thoát khỏi vi, nếu tập tin đang soạn thảo chưa được lưu, nó sẽ bị bỏ qua

 

Written by thaotrinh