Mẹo dùng Vim

May 05 2011 · 3 minute read · vim tips

Vim là elvis trong Slack và cũng là dụng cụ vận động ngón tay ưa thích của tui. Note lại mấy cái bài tập đánh vần để sau này già khỏi quên.

Di chuyển trong Vim (Normal Mode)

             lên (k)
trái (h)                phải (l)
             xuống (j)

0            : về đầu dòng
$            : đến cuối dòng
}            : nhảy đến 1 đoạn
{            : nhảy lui 1 đoạn
gg (hoặc 1G) : về đầu tệp
G            : đến cuối tệp
50G          : đến dòng 50
%            : di chuyển đến ngoặc đóng của ngoặc mở tương ứng

Hiện trạng thái tệp

Chọn Text

Trong Normal Mode, dùng các lệnh sau để chọn text, các phần text được chọn sẽ được tô sáng.

v                             : chọn khoảng text
V                             : chọn toàn bộ hàng
ctrl+v (ctrl+q trên Windows)  : chọn cột
gv                            : chọn lại khối vừa chọn
ggVG                          : chọn toàn bộ tệp
vap (visual around paragraph) : chọn đoạn này

Sau khi chọn text, chúng ta có thể cắt, copy (d, y), định dạng (:center, :left, :right), sort (:!sort), tìm thay thế (:s/khớp/thay/), …

Tìm kiếm

:set ignorecase - không phân biệt hoa thường
:set smartcase  - tìm chữ hoa khi chữ hoa được gõ
:set incsearch  - hiển thị kết quả khi gõ từ tìm kiếm
:set hlsearch   - tô sáng kết quả
/từ-cần-tìm   - tìm tiếp từ cần tìm
n             - lặp lại quá trình tìm tiếp
*             - tìm chính xác từ dưới trỏ (rain không tìm rainbow)
g*            - tìm tất cả từ chứa từ dưới trỏ (khác *)

Tìm và thay thế

:[range]s/cần-tìm/thay-thế/flags

Mẹo: dùng tìm kiếm để thêm, xóa kí tự

:%s/foo//gc
:[range]s/^/foo      # Thêm foo tại đầu dòng
:[range]s/$/foo      # Thêm foo tại cuối dòng
:[range]s/^..//      # Xóa 2 ký tự tại đầu dòng
:[range]s/..$//      # Xóa 2 ký tự tại cuối dòng

Ghi chú: . (dấu chấm) đại diện cho một ký tự (một khoảng trắng hoặc một tab cũng là một ký tự).

:[range]s/^/    /    # thêm 4 khoảng trắng đầu dòng

\s sẽ tìm khoảng trắng, \+ tìm theo số lần xuất hiện

:%s/\s\+$//

Một số biến tùy chỉnh

Tùy chỉnh kích cỡ cửa sổ

set lines=29   : hiển thị 30 hàng
set columns=90 : hiển thị 90 cột

Định dạng

Chuyển đổi định dạng tệp từ DOS sang UNIX

Khai báo trong .vimrc mặc định dùng định dạng tệp là unix

:set fileformats=unix,dos,mac
:set fileformat=unix            # luôn dùng lineending kiểu unix lf

Chuyển đổi tệp hiện tại từ DOS sang UNIX

:update             "lưu lại các thay đổi hiện tại
:e ++ff=dos         "sửa đổi tệp, bỏ qua định dạng DOS
:setlocal ff=unix   "chuyển sang định dạng UNIX
:w                  "lưu lại

Chuyển đổi nhiều tệp trong thư mục từ DOS sang UNIX

:args *.html                "xác định loại tệp cần chuyển đổi
:argdo set ff=unix|update   "chuyển đổi tệp sang UNIX và lưu lại

Chuyển đổi định dạng từ UNIX sang DOS làm ngược lại