Giới thiệu VIM và lợi ích với ae DEV

vậy vim là gì?
để làm gì?
không dùng thì sao?
khó khăn khi ứng dụng vim với ae dev là gì?

Đôi dòng về lịch sử ra đời và phát triển của VIM

Vim là một trong những trình soạn thảo văn bản mạnh mẽ và phổ biến nhất hiện nay, đặc biệt là trong cộng đồng lập trình viên. Lịch sử của Vim gắn liền với trình soạn thảo Vi, từ đó Vim phát triển lên với nhiều tính năng hiện đại và tiện ích hơn.

1. Nguồn gốc của Vi

Vi (vi viết tắt của “visual”) được phát triển vào năm 1976 bởi Bill Joy khi ông đang làm việc tại Đại học California, Berkeley.

• Vi là một trình soạn thảo văn bản dựa trên chế độ, nghĩa là có các chế độ khác nhau cho việc nhập liệu, điều hướng và chỉnh sửa.

• Nó được phát triển trên hệ điều hành Unix và trở thành một phần quan trọng của hầu hết các hệ thống Unix. Vi được thiết kế nhẹ và nhanh, phù hợp với khả năng phần cứng hạn chế vào thời điểm đó.

2. Sự ra đời của Vim

Vim (vi viết tắt của “Vi IMproved”) được phát triển bởi Bram Moolenaar và ra mắt lần đầu vào năm 1991.

• Vim ban đầu được viết cho hệ điều hành Amiga với mục tiêu cung cấp các tính năng mở rộng cho Vi. Tuy nhiên, nó nhanh chóng được phát triển thành một công cụ đa nền tảng.

• Vim là một trình soạn thảo văn bản có mã nguồn mở và đã được cộng đồng phát triển mạnh mẽ trong suốt nhiều năm.

3. Những tính năng mới của Vim so với Vi

Chế độ chỉnh sửa trực quan: Vim cung cấp khả năng làm việc với văn bản một cách trực quan và linh hoạt hơn nhiều so với Vi.

Undo/Redo không giới hạn: Khả năng hoàn tác (undo) và thực hiện lại (redo) nhiều bước, trong khi Vi chỉ hỗ trợ undo một lần.

Hỗ trợ cú pháp (syntax highlighting): Vim hỗ trợ đánh dấu cú pháp cho rất nhiều ngôn ngữ lập trình khác nhau, giúp lập trình viên dễ dàng phát hiện lỗi.

Macro và scripting: Vim hỗ trợ macro và scripting, cho phép người dùng tự động hóa các tác vụ phức tạp.

Khả năng mở rộng (plugins): Vim hỗ trợ rất nhiều plugin do cộng đồng phát triển, mở rộng chức năng của trình soạn thảo.

Tìm kiếm và thay thế mạnh mẽ: Vim cung cấp các tính năng tìm kiếm và thay thế mạnh mẽ với các biểu thức chính quy (regular expressions).

4. Phát triển và cộng đồng

• Vim nhanh chóng trở nên phổ biến trong cộng đồng lập trình viên nhờ tính năng mạnh mẽ và khả năng mở rộng.

• Từ năm 1998, Bram Moolenaar bắt đầu sử dụng Vim để gây quỹ cho dự án từ thiện “ICCF Holland”, một tổ chức hỗ trợ trẻ em ở Uganda.

Năm 2001, Vim 6.0 ra đời với hỗ trợ tích hợp cửa sổ chia đôi (split window), cho phép người dùng làm việc trên nhiều tài liệu cùng lúc.

Vim 7.0 phát hành vào năm 2006, mang lại các tính năng như spell checking, hệ thống tab, và mở rộng biểu thức chính quy.

Vim 8.0 ra mắt năm 2016, bổ sung hỗ trợ asynchronous I/O và nhiều cải tiến khác, giúp Vim tiếp tục giữ vững vị trí là một trong những trình soạn thảo văn bản tốt nhất.

5. Vim trong thế giới hiện đại

1.Vim trên môi trường Linux thường được sử dụng để chỉnh sửa các tập tin cấu hình

với ae dev việc phải tao tác trên môi trường server là không tránh khỏi, khi phải cấu hình các service trên linux như nginx, php, supervisor .v.v không có các IDE, editor như môi trường local rất khó khăn và mất nhiều thời gian, nếu như thành thạo được VIM đảm bảo ae không còn ngán ngẩm khi phải sửa vài dòng config trên server nữa, thậm chí có thể code như bay trên môi trường server luôn (có thể thôi nhé, khuyên ae k nên làm vậy)

2. Dùng để code

ae sẽ tăng tốc độ gõ code hơn rất nhiều lần nếu dùng VIM

gõ nhanh hơn như thế nào?

trong quá trình code dev thường hay phải di chuyển con trỏ tới 1 vị trí khác trên dòng hoặc dòng khác, thậm trí sang 1 block code khác hoặc lên đầu trang, về cuối trang, thêm sửa xóa, copty từ, dòng v.v.
thường những việc này chúng ta phải dùng đến chuột, hoặc dùng tới phím di chuyển lên – xuống, trái -phải
như vậy phải di chuyển bàn tay ra 1 vị trí khác, cầm chuột tốn nhiều thời gian, nếu code trong 1 khoảng thời gian dài có thể mỏi tay

1 vài ví dụ: (ae có thể vào môi trường linux để trải nghiệm luôn nhé, mac – unbuntu hoặc lên server)

<div class="style_layout-expanded blue">
   <div class="ant-layout l1" style="min-height: 100vh;"></div>
</div>

giả sử con trỏ đang ở đầu dòng và dòng đầu tiên, chúng ta cần sửa class “style_layout-expanded blue” thành “new_class”

ta chỉ cần gõ các lệnh sau: f-ci”new_class

muốn xóa new_class đi: [esc]diw
giờ muốn sửa style ở dòng 2 100vh thành 100% ta chỉ cần gõ: jf1;ciw100%

muốn thêm thẻ con vào thẻ div ở dòng 2: f>a<div>new_dev</div>

muốn copy dòng 2: yyp hoặc Yp

muốn copy dòng 2 10 lần: yy10p

thấy 10 dòng là thừa cần xóa bớt 5 dòng: 5k5dd

lên đầu của khối code để thêm 1 block mới: ggO

xuống cuối khối code để thêm 1 block mới: Go

ae có thể thử để cảm nhận được tốc độ và sự bá đạo của vim

nếu ae đang gõ 10 ngón (chắc là k có dev nào gõ bổ cò đau nhỉ =))) thì sẽ cảm nhận được là thao tác từ nãy tới giờ, đôi bàn tay của chúng ta k hề di chuyển khỏi bàn phím, 2 ngón trỏ vẫn nằm ở F và J

để sử dụng vim

có thể dùng 1 trong 2 cách sau:
1. dùng vim mặc định, k có màu sắc, k có gợi ý code .v.v


2 dùng NVIM

1 phiên bản nâng cấp của vim, rất nhẹ, với cấu hình cơ bản, rất nhiểu plugin, khả năng tùy biến cao và vô vàn tính năng ae có thể tham khảo thêm ở link sau

www.youtube.com/watch?v=6pAG3BHurdM&ab_channel=JoseanMartinez

2. dùng vim với ide, editor
vừa tận dụng sức mạnh của ide và vẫn có thể sử dụng vim để tăng tốc độ gõ

1 số IDE, editor thông dụng như VScode, phpstorm, webstorm có sẵn plugin VIM, ae có thể dễ dàng cài được

ae tự cài nhé, giờ mình sẽ giới thiệu 1 số kiến thức nền tảng của VIM

1. Normal Mode (Chế độ bình thường)

• Đây là chế độ mặc định khi bạn mở Vim.

• Trong chế độ này, bạn có thể điều hướng và chỉnh sửa văn bản mà không cần nhập trực tiếp.

• Các phím như h, j, k, l dùng để di chuyển con trỏ theo thứ tự: trái, xuống, lên, phải.

• Các lệnh khác như dd (xóa dòng), yy (copy dòng), p (dán), và nhiều lệnh khác để chỉnh sửa nhanh chóng.

• Để chuyển sang Normal Mode từ chế độ khác, nhấn phím Esc.

2. Insert Mode (Chế độ chèn)

• Ở chế độ này, bạn có thể nhập văn bản vào file.

• Để vào chế độ chèn từ Normal Mode, nhấn phím i (chèn tại vị trí con trỏ) hoặc a (chèn sau con trỏ).

• Sau khi nhập văn bản, bạn có thể nhấn Esc để quay lại Normal Mode.

3. Visual Mode (Chế độ trực quan)

• Dùng để chọn đoạn văn bản, cho phép bạn thao tác với văn bản đã chọn (copy, cut, indent…).

v: Bắt đầu chọn từ vị trí con trỏ.

V: Chọn cả dòng.

Ctrl+v: Chế độ chọn khối (blockwise visual mode) – chọn một vùng hình chữ nhật.

• Sau khi chọn văn bản, bạn có thể sử dụng các lệnh như d (xóa), y (copy), > (tăng thụt lề), < (giảm thụt lề).

4. Command-Line Mode (Chế độ dòng lệnh)

• Được sử dụng để nhập các lệnh bắt đầu bằng dấu hai chấm :, thường để thực hiện các thao tác như lưu, thoát, tìm kiếm và thay thế.

• Để vào chế độ này, nhấn : từ Normal Mode.

• Ví dụ:

:w (lưu file),

:q (thoát Vim),

:wq (lưu và thoát),

😡 (lưu và thoát nhanh hơn).

5. Replace Mode (Chế độ thay thế)

• Cho phép thay thế văn bản thay vì chèn văn bản mới.

• Nhấn R từ Normal Mode để vào chế độ này.

• Khi bạn nhập, ký tự tại vị trí con trỏ sẽ bị thay thế bởi ký tự mới.

6. Visual Block Mode (Chế độ chọn khối trực quan)

• Giúp bạn chọn và chỉnh sửa các khối văn bản (block of text) theo dạng hình chữ nhật.

• Sử dụng tổ hợp phím Ctrl + v để vào chế độ này từ Normal Mode.

• Sau đó, bạn có thể thao tác trên khối văn bản đã chọn.

7. Ex Mode (Chế độ Ex)

• Đây là chế độ ít được sử dụng, cho phép bạn nhập các lệnh Ex trực tiếp.

• Để vào chế độ này, bạn nhấn Q từ Normal Mode.

• Để quay lại Normal Mode, nhấn vi.

8. Select Mode (Chế độ chọn)

• Chế độ này tương tự như Visual Mode, nhưng khi bạn gõ một ký tự thì văn bản được chọn sẽ bị thay thế ngay lập tức.

• Bạn có thể vào chế độ này bằng cách nhấn gh từ Normal Mode.

9. Insert Mode (Chế độ chèn dòng mới)

• Bạn có thể chèn một dòng mới vào trước hoặc sau dòng hiện tại.

• Nhấn O (chèn dòng mới trước dòng hiện tại) hoặc o (chèn dòng mới sau dòng hiện tại) từ Normal Mode để chuyển sang chế độ này.

Chuyển đổi giữa các chế độ

Esc: Quay lại Normal Mode.

i: Chuyển sang Insert Mode.

v: Chuyển sang Visual Mode.

R: Chuyển sang Replace Mode.

:: Chuyển sang Command-Line Mode.

Ctrl+v: Chuyển sang Visual Block Mode.

tiếp theo ae học 1 số lệnh cơ bản

=================================================================================

j di chuyển xuống dưới

k di chuyển lên trên

h di chuyển sang trái

l di chuyển sang phải

x Xóa 1 kí tự sau con trỏ

r Thay thế 1 kí tự sau con trỏ

s Xóa kí tự dưới con trỏ và chuyển sang chế độ insert mode.

d Delete – Xóa text được định nghĩa bởi motion.

D xóa từ con trỏ tời cuối dòng

c Change – Xóa text được định nghĩa theo motion sau đó tự chuyển về chế độ insert.
C xóa từ con trỏ đến cuối dòng và chuyển sang chế độ insert

i: sửa đầu chữ bôi a: sửa và xuất hiện sau chữ đang bôi

o để chèn văn bản trên một dòng mới bên dưới dòng hiện tại. O để chèn văn bản trên một dòng mới phía trên dòng hiện tại.

S để xóa dòng hiện tại và chèn văn bản.

gg hoặc 1G về đầu tập tin – G Tới cuối file (10G tới dòng 10)

$ Tới cuối dòng. ^ Về đầu dòng k tính tab và space (0 về đầu dòng)

L Di chuyển đến cuối screen % Di chuyển đến các ngoặc trong dòng

w chuyển tiếp tới đầu 1 từ (tr + ->) W Tương tự nhưng có thể chưa ký tự đặc biệt b ngược lại w B ngược lại W

J join line guu cả dòng thành viết thường – hoặc Vu gUU cả dòng thành viết hoa – hoặc VU

A về cuối dòng và sửa I về đầu dòng và sửa C xóa từ con trỏ tới cuối dòng và sửa cc xoá cả dòng và sửa, đặt về đầu dòng ciw xóa từ và sửa

vaW 1 tu tinh tu dau cách vaw mark a word (bôi đen 1 từ) vab a block with () vaB a block with {} vat a block with <> tags vib inner block with () viB inner block with {} vit inner block with <> tags Cit boa trono ngoac <>

vip chọn 1 Khoi cách nhau bởi xuống dòng cip xóa và sửa khối trên

vas 1 câu, cách nhau dấu . Hoặc dấu ? va] chọn trong ] va” và va’ tượng tự, chọn trong ” hoặc ‘ vi” và vi” va) vi( va( vi)v va vi

yyp duplycate line hoặc Yp

y Yank – Copy text được định nghĩa bởi motion. p pase 4p page 4 lần P pase phía trên dòng

y$ Sao chép văn bản từ vị trí hiện tại đến cuối dòng yy Sao chép toàn bộ dòng 4yy Sao chép 4 dòng dưới đây yw Copy word dd cut (cut 1 dòng, nếu có bôi đen thì sẽ cut bôi đen) D cut tới cuối dong

dw xóa 1 từ d$ xóa đến cuối dòng dd xóa dòng 2dd xóa 2 dòng


còn đầy đủ ae có thể vào đây
https://vim.rtorr.com/

cuối cùng là thực hành: ae đã quen với cách gõ hiện tại, để có thể chuyển sang 1 bộ gõ mới, thói quen mới rất khó khăn (đặc biệt là khi deadline dí hoặc ăn quả bug làm mất bình tĩnh)
nhưng vim thật sự đêm lại rất nhiều lợi ích, mong ae k từ bỏ, luôn kiên định sớm làm chủ được VIM

Related Posts