- vừa được xem lúc

Thích học VIM: Di chuyển con trỏ

0 0 19

Người đăng: Lâm Kim Phú

Theo Viblo Asia

Giới thiệu

Ở bài trước, chúng ta đã cùng tìm hiểu về cách mở VIM, thêm text vào file, lưu lại và thoát VIM. Hôm nay, chúng ta sẽ tiếp tục với những thao tác di chuyển con trỏ cơ bản

Di chuyển con trỏ lên, xuống, trái phải

Thường khi sử dụng editor, chúng ta sẽ muốn di chuyển con trỏ sang trái, sang phải, đi lên và đi xuống. Ngoài ra còn có di chuyển từng từ, di chuyển lên đầu file và di chuyển xuống cuối file. Thì trong VIM, chúng ta có phím h để di chuyển sang trái 1 kí tự, phím j để di chuyển xuống 1 dòng, phím k để di chuyển lên 1 dòng và phím l để di chuyển qua bên phải 1 kí tự. Những phím này sẽ có đi kèm theo số, [số] [phím di chuyển]. Thì khi có thêm số n thì phím di chuyển của chúng ta sẽ có nghĩa là di chuyển n kí tự hoặc di chuyển n dòng.

Cụ thể, khi nhấn phím h thì chúng ta sẽ di chuyển sang trái nhưng nếu nhấn phím 3h thì chúng ta sẽ di chuyển sang trái 3 kí tự. Nếu nhấn phím l thì chúng ta sẽ di chuyển qua bên phải, còn nhấn 10l thì chúng ta sẽ di chuyển qua bên phải 10 kí tự. Nếu nhấn phím j thì chúng ta sẽ di chuyển xuống 1 dòng, còn 10j thì chúng sẽ di chuyển xuống 10 dòng. Nếu nhấn phím k thì chúng ta sẽ di chuyển lên 1 dòng và nhấn 6k thì chúng ta sẽ di chuyển lên 6 dòng. Lưu ý là nếu chúng ta ở đầu file thì khi nhấn phím di chuyển lên, chúng ta sẽ thấy con trỏ giữ nguyên vì không còn chỗ để di chuyển lên nữa. Tương tự cho phím di chuyển xuống nếu chúng ta đang ở cuối file. Di chuyển sang trái và sang phải cũng vậy, nếu cùng một dòng mà đang ở đầu câu thì di chuyển sang trái sẽ không có tác dụng và ở cuối câu thì di chuyển sang phải sẽ không có tác dụng nữa. Do đó giả sử chúng ta ở cuối câu rồi và muốn di chuyển sang câu ở dòng tiếp theo thì sẽ cần nhấn j thay vì tiếp tục nhấn l.

Di chuyển con trỏ từng từ

Để di chuyển con trỏ qua phải (hay còn gọi là di chuyển tới) theo từng từ một, chúng ta có w. Khi nhấn w, thì con trỏ sẽ nhảy theo từng từ, bao gồm cả những kí tự đặc biệt, dấu phẩy, dấu chấm. Có nghĩa là nếu chúng ta có câu abc def, ghi thì lúc ban đầu, giả sử con trỏ sẽ nằm ở chữ a, chúng ta bấm w thì con trỏ sẽ nhảy đến chữ d, nhấn w lần nữa thì con trỏ sẽ nhảy đến dấy phẩy, nhấn w lần nữa thì con trỏ sẽ nhảy đến chữ g. Bên cạnh w chúng ta có W, với phím W thì con trỏ sẽ bỏ qua những kí tự đặc biệt, dấu phẩy, dấu chấm. Lấy lại ví dụ cũ abc def, ghi, ban đầu con trỏ sẽ nằm ở chữ a, nhấn W thì con trỏ sẽ nhảy đến chữ d, nhấn W con trỏ sẽ nhảy đến chữ g thay vì nhảy đến dấu phẩy khi chúng ta nhấn w. Như vậy, w để nhảy từng từ từng từ một về phía bên phải và dùng W nếu bạn muốn bỏ qua những kí tự đặc biệt và dấu cách câu như phẩy, chấm,...

Với w chúng ta có có thể di chuyển con trỏ từng từ qua bên phải thì đồng thời chúng ta cũng có b để di chuyển qua trái (hay còn gọi là di chuyển lùi) từng từ một. Lại lấy ví dụ cũ 😄 abc def, ghi, giả sử con trỏ lúc này đang ở chữ g, nhấn b con trỏ sẽ nhảy đến dấu phẩy, nhấn b con trỏ sẽ nhảy đến chữ d, nhấn b con trỏ sẽ nhảy đến chữ a. Trường hợp phím b này chúng ta cũng có B là di chuyển qua trái mà không tính những kí tự đặc biệt, dấu cách câu như dấu chấm, dấu phẩy,.... Quay trở lại ví dụ khi nãy, abc def, ghi, giả sử con trỏ nằm ở chữ g, khi bấm B, con trỏ sẽ nhảy đến chữ d, bấm B lần nữa, con trỏ sẽ nhảy đến chữ a.

Để ý kĩ thì wb di chuyển con trỏ qua trái và qua phải từng từ nhưng con trỏ sẽ luôn nằm ở kí tự đầu của từ đó. Vậy trong trường hợp chúng ta muốn con trỏ nằm ở kí tự cuối của từ thì sao? Đó là lúc chúng ta dùng phím e. Ví dụ abc def, ghi, giả sử con trỏ nằm ở chữ a, khi bấm e con trỏ sẽ nằm ở chữ c, bấm e, con trỏ sẽ ở chữ f, bấm e lần nữa, con trỏ sẽ nằm ở dấu phẩy, bấm e lần nữa con trỏ sẽ nằm ở chữ i. Cũng như wb chúng ta cũng sẽ có E. Khi bấm E thì con trỏ sẽ nhảy đến cuối từ đó. Ví dụ abc def, ghi, giả sử con trỏ ở chữ a, khi bấm E, con trỏ sẽ nhảy đến chữ c, bấm E con trỏ sẽ nhảy đến dấu phẩy, bấm E con trỏ nhảy đến i. Sự khác biệt giữa eE đó là e sẽ đến cuối từ nhưng sẽ tính luôn cả kí tự đặc biệt, dấu cách câu là 1 từ, còn E thì không quan tâm, cứ nhảy đến cuối của từ đó.

Đối với những phím này, chúng ta cũng có thể áp dụng số vào đằng trước. Ví dụ như 2w sẽ là di chuyển con trỏ tới 2 từ, 10b sẽ là di chuyển con trỏ lùi 10 từ.

Di chuyển con trỏ đến đầu câu, cuối câu, đầu file, cuối file và dòng thứ n

Để di chuyển con trỏ đến đầu câu, chúng ta nhấn phim 0 và để di chuyển con trỏ đến cuối câu thì chúng ta nhấm phím $. Lấy ví dụ như câu Hello World. Giả sử con trỏ đang nằm ở chữ H, khi bấm $ thì con trỏ sẽ nhảy đến kí tự cuối câu là chữ d. Ngược lại, giả sử con trỏ đang nằm ở chữ d thì khi bấm 0 con trỏ sẽ nhảy đến chữ H.

Ngoài ra khi bạn đang ở đâu đó trong file, để đưa con trỏ lên kí tự đầu của file đó, chúng ta dùng gg. Tương tự để đưa con trỏ xuống kí tự đầu của dòng cuối cùng của file đó, chúng ta dùng G. Để mô tả mình có ví dụ như sau:

abcdef
ghijklm

Giả sử con trỏ đang ở chữ a, khi bấm G con trỏ sẽ nhảy xuống kí tự đầu của dòng cuối cùng của file đó. Dòng cuối cùng là dòng ghijklm kí tự đầu của dòng này là chữ g. Như vậy khi bấm G thì con trỏ sẽ nằm ở chữ g. Giả sử con trỏ đang nằm đâu đó cho là ở chữ e đi, thì để di chuyển con trỏ lên kí tự đầu tiên của file tức là chữ a thì mình sẽ nhấn gg.

Cuối cùng, để di chuyển con trỏ đến dòng thứ n, chúng ta có công thức: số dòng + G hoặc : + số dòng. Mình lấy lại ví dụ này:

abcdef
ghijklm

Nhấn 2G sẽ đưa con trỏ đến dòng thứ 2 là dòng ghijklm, nhấn :2 cũng cho ra kết quả tương tự. Nhấn 1G sẽ đưa con trỏ đến dòng thứ 1 là dòng abcdef, nhấn :1 cũng cho ra kết quả tương tự. Mặc định, VIM không hiện số dòng nên sẽ khá khó khăn để dùng phím nhảy đến dòng thứ n vì cơ bản là chúng ta sẽ không biết đó là dòng thứ mấy, dòng đó là dòng mấy ngàn thì đang đếm cái xỉu ngang tại dài quá, mà chưa kể là đếm lộn nữa. Nên để chính xác, thì các bạn nhấn phím ESC để qua command mode, sau đó gõ :set number, các bạn sẽ thấy số dòng sẽ được hiển thị bên tay trái. Để tắt, nhấn phím ESC sau đó gõ :set number!.

Lời kết

Mong là sau bài viết này, các bạn đã có thể sử dụng những phím cơ bản để có thể di chuyển con trỏ ở trong VIM.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Rethinking the hjkl

Rethinking the hjkl. Chắc cũng có đôi lần mình nhắc tới vấn đề này trên blog, đại khái là.

0 0 18

- vừa được xem lúc

2019 rồi, setup Vim như nào?

2019 rồi, setup Vim như nào. . Sau gần 2 năm xài Emacs thì giờ mình đã quay trở lại xài Vim, chính xác là Neovim. .

0 0 33

- vừa được xem lúc

Code không màu...

Code không màu... . Đó là tắt luôn chức năng Syntax Highlighting.

0 0 25

- vừa được xem lúc

OrgMode trên Vim

OrgMode trên Vim. OrgMode là một chức năng rất hữu dụng trên Emacs.

0 0 19

- vừa được xem lúc

Dùng neovim thay thế vimdiff

Dùng neovim thay thế vimdiff. Nếu xài Git và vim hẳn các bạn biết tool vimdiff, dùng để xem diff và merge code.

0 0 26

- vừa được xem lúc

Vim in 100 Seconds

Vim is a keyboard-based text editor that can improve your productivity when writing code. Learn more in the Vim for VS Code course https://bit.ly/370N7Pr. .

0 0 33