Đây sẽ là một bài hướng dẫn các cách sử dụng Vim mình áp dụng vào công việc hằng ngày để coding, có thể nó sẽ không đầy đủ nhưng đó tùy thuộc vào khả năng tự học và tìm tòi của các bạn, vì learning curve của Vim sẽ luôn đi lên và cùng hướng với sự tò mò của bạn.
Introduction
Đây sẽ là một bài hướng dẫn các cách sử dụng Vim mình áp dụng vào công việc hằng ngày để coding, có thể nó sẽ không đầy đủ nhưng đó tùy thuộc vào khả năng tự học và tìm tòi của các bạn, vì learning curve của Vim sẽ luôn đi lên và cùng hướng với sự tò mò của bạn.
Mở đầu cho bài hướng dẫn về Vim, chúng ta nên trả lời câu hỏi, “Vì sao phải sử dụng Vim?”, vì ở ngoài kia còn rất nhiều Text Editor xịn xò hơn như VSCode, IntellJ IDEA, Notepad++, Sublime Text, Atom, … Vim có gì đặc biệt và mọi người có thể áp dụng nó vào những việc gì.
Vi là một trình soạn thảo văn bản mặc định (Text Editor) của các hệ điều hành Linux thời đầu, và Vim - Vi IMproved là một phiên bản nâng cấp của vi, thêm một vài tính năng, và có khả năng thêm các plugin, tăng khả năng tùy chỉnh, tuy vậy Vim vẫn giữ được những triết lý của những lập trình viên đời đầu về một text editor:
-
Kết hợp với Terminal, tối ưu hóa sự chuyển dịch công việc từ Terminal - text editor nhanh chóng. Bộ đôi Terminal - Vim là một cặp đôi được sinh ra để giành cho nhau.
-
Tập trung vào việc editor bao gồm: di chuyển (motion) và chỉnh sửa (edit). Không dùng chuột để click trên màn hình, kéo thả, hay bôi đen; dùng chuột rất chậm :’)
Vậy Vim sẽ tốt cho những việc như thế nào, có thể áp dụng vào đâu, liệu bạn có phù hợp với Vim?
Đầu tiên, bạn chỉ muốn chỉnh sửa trên 1 vài file, từ 1-2 file một lúc thật nhanh.
Tiếp theo, code trên server thông qua SSH, sử dụng Vim với khả năng chỉnh sửa nhanh và chạy command bằng terminal sẽ rất tốt.
Cuối cùng, bạn là một người thích những thứ old school và ngầu lòi :’)
Cài đặt
Mọi người có thể chọn cài đặt 1 trong 2 loại Vim sau: gVim hoặc NeoVim. Cá nhân mình đánh giá NeoVim tương đối nhiều thứ để vọc hơn, tuy nhiên mình bắt đầu với gVim và cách cài đặt nó cũng nhẹ hơn. Những command hướng dẫn ở dưới đều có thể áp dụng cho cả 2 loại.
Cách cài đặt gVim
sudo add-apt-repository ppa:jonathonf/vim
sudo apt update
sudo apt install vim
Các mode cơ bản và những command cơ bản
Vim sẽ bao gồm 3 mode cơ bản cho người sử dụng với những chức năng riêng:
Normal Mode và các command
Đây sẽ là Mode mặc định ngay khi bạn mới vào Vim. Ở trong mode này, công việc của bạn là di chuyển để tìm tới vị trí cần chỉnh sửa.
Insert Mode
Đây là Mode mà bạn sử dụng để chỉnh sửa các dòng kí tự, chức năng đơn giản, giống như một editor thông thường. Ở đây mình cũng không cần phải nói quá nhiều về Mode này.
Tuy nhiên hãy nhớ rằng triết lý của Vim tập trung vào việc di chuyển và chỉnh sửa, vậy nên sau khi chỉnh sửa xong ở một vị trí, hãy nhấn
Visual Mode và các command
Đây là Mode nơi bạn sẽ chọn những dòng, những chữ để di chuyển, chỉnh sửa; nhìn chung nó mô phỏng lại cách bạn sẽ dùng chuột rê vào từng vùng, bôi đen chúng rồi copy paste, …
Command nâng cao
Ở đây mình sẽ đưa ra các command nâng cao hơn, bao gồm các tập hợp các thao tác phục vụ cho các mục đích cụ thể, ví dụ như: Tìm kiếm, Thay đổi, Di chuyển và tìm kiếm, Comment code, Các cách di chuyển nâng cao.
Motion command
w: next a word
e: next a ending
b: back a word
W (Shift - W): Next block of Word
B (Shift - B): Backward block of Word
0: back to 0 position of line
$: to the end of current line.
Insert command
i: INSERT at current position
A: Append on the end of line
a: append on the next current position
I: Insert at beginning of line
Delete command
Formulard: delete + «number» + motion
dw: delete a word
de: delete till end of a word
d + $: delete to the end of the line (Memory tips: delete out of money $)
d2w: delete 2 words
d3e: delete 3 ending of words
d0: delete back to start of the line
dG: delete from current line to end of lines.
Replace và Change command with r and c
Formula: c + motion
Note: change command deletes texts and get into INSERT MODE.
cw: change the next word and get into INSERT MODE.
cc: change a whole line and get into INSERT MODE.
C (shift-c): Change from current position to end of line
Find và Delete command
f «c»: find until character «c» in line.
f «c» + ; : find next occurence of «c»
f «c» + , : find previous occurence of «c»
c t «c» : change till «c» in line.
If you are in (), {}, [], ‘’, “”
c i ( : change in (
d i { : delete in {
c a [ : change around [
d a ‘ : delete around ‘
Note: i: inside, t: till, f: first, a: around
Copy and Paste command with d and p
Formula: Use d + motion or copy with visual mode, go to paste position, use p
dd: delete a line
2dd: delete 2 line
p: paste at current position
P: Paste previous position.
Search Command with /
:/
:?
After search a word, press:
n: go to the next ocurrence of word
N (shift-n): go to the previous occurence of word.
To go back : Ctrl - o
To go forward: Ctrl - i
Substitute command
:s /«old pattern»/«new pattern» : substitute first «old pattern» occurence with «new pattern»
:s /«old pattern»/«new pattern»/g : substitute all «old pattern» occurences with «new pattern» in a line
:%s /«old pattern»/«new pattern»/g : substitute all «old pattern» occurences with «new pattern» in all line
:%s /«old pattern»/«new pattern»/gc : substitute all «old pattern» occurences with «new pattern» in all line with command prompt (with y/n/a)
Open line command
Open a new line and get into INSERT MODE
o: open a new line below
O (shift-o): open a new line above
More substitute and REPLACE MODE
(Not recommend)
s: substitute 1 character (detele 1 character, access into INSERT MODE)
S (shift-s): Substitute a line (like cc command)
~ : Toggle uppercase <-> lowercase
Một command nâng cao trong Vim có thể tự tìm hiểu:
-
Tạo pane, tab trong cửa sổ Vim.
-
Visual mode
-
Repeat command và tạo macro
-
Sử dụng plugin.
Cài đặt thêm các plugin hỗ trợ, thay đổi theme màu mè
Cách để cài đặt các Plugin hỗ trợ cho Vim tốt nhất là sử dụng Vim Plug. Các bạn có thể cài đặt thông qua repo github này: https://github.com/junegunn/vim-plug
Một số plugin Vim mà mình thấy rất tiện cho công việc, và đáp ứng nhiều nhu cầu để chúng ta “tái thiết” Vim thành một Editor hoàn hảo hơn:
-
Nerdtree: Plugin để quản lý thư mục.
-
Lightline: Màu mè một chút cho thanh line hiển thị của Vim.
-
Vim Multiple cursor: Chỉnh sửa với nhiều cursor cho Vim.
-
Vim Surrond: Chỉnh sửa các dạng ngoặc dễ dàng hơn.
Học cách sử dụng Vim hằng ngày
Theo mình các tốt nhất để cải thiện khả năng sử dụng Vim: là sử dụng hằng ngày và luôn tìm hiểu những thứ mới nhằm tối ưu bản thân.
Learning Path của Vim:
-
Bật vimtutor, hoàn thành 7 bài tập cơ bản của nó.
-
Sử dụng Vim hằng ngày.
-
Học cách config cho Vim, học những Trick mới hằng ngày, ghi vào sổ học.
-
Tìm những cao thủ sử dụng Vim, học theo những trick của họ. Bạn có thể tham khảo: https://github.com/omerxx/vim-notebook/ Một repo tổng hợp rất nhiều command hay. Hoặc là đọc các post trong https://vim.fandom.com/wiki/Vim_Tips_Wiki .
-
Một trang tổng hợp các command khá đầy đủ: https://quickref.me/vim
Tổng kết
Vừa rồi là một số chia sẻ của bản thân về các command thường sử dụng Vim, có thể mọi người thấy hữu ích trong việc chỉnh sửa nhanh các file nhằm tối ưu hoá năng suất làm việc của bản thân. Nên nhớ rằng, Vim chỉ hữu dụng trong một số trường hợp, và cần phải học hỏi liên tục.
Leave a comment