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
:=
: hiện tổng số dòng của tệpctrl+G
: hiện tên, số dòng, tổng số dòng và số % vị trí hiện tại của 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
- Các biến nên thiết đặt:
: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ả
- Các lệnh tìm kiếm cơ bản:
/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
range
: gồm%
cho toàn bộ tệp hoặctừ-dòng,đến-dòng
chọn trong Visualflags
: gồmg
thay toàn bộ;c
xác nhận vài
phân biệt hoa thường
Mẹo: dùng tìm kiếm để thêm, xóa kí tự
- Tìm từ
foo
và xóa với xác nhận
:%s/foo//gc
- Thêm, xóa kí tự tại đầu hoặc cuối dòng
:[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ự).
- Thêm một vài khoảng trắng đầu dòng (hữu ích khi định dạng đoạn mã)
:[range]s/^/ / # thêm 4 khoảng trắng đầu dòng
- Xóa các khoảng trắng không muốn cuối 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