07/09/2018, 10:59

Pro VIM - Khám Phá Các Chức Năng Advanced Trong VIM

Đa số các developer với vài năm kinh nghiệm làm việc đều biết cách sử dụng VIM để chỉnh sửa nội dung một file văn bản cũng như di chuyển để xem nội dung file trên Linux. Tuy nhiên bạn có biết rằng ngoài các chức năng của một text editor thì VIM còn hỗ trợ rất nhiều tính năng mạnh mẽ khác như mở một ...

Đa số các developer với vài năm kinh nghiệm làm việc đều biết cách sử dụng VIM để chỉnh sửa nội dung một file văn bản cũng như di chuyển để xem nội dung file trên Linux. Tuy nhiên bạn có biết rằng ngoài các chức năng của một text editor thì VIM còn hỗ trợ rất nhiều tính năng mạnh mẽ khác như mở một thư mục và xem danh sách các file bên trong, tạo thư mục, xóa tập tin, chạy câu lệnh của shell...

Nếu bạn chưa từng bao giờ tìm hiểu về một trong số các tính năng đề cập ở trên thì bài viết này sẽ giúp bạn khám phá thêm những tính năng nâng cao và hết sức hữu dụng trong VIM.

Yêu Cầu: Bạn cần nắm vững cơ bản về VIM trước khi tìm hiểu bài viết này. Để tìm hiểu về VIM bạn có thể tham khảo bài viết làm quen với VIM.

Mở Thư Mục

Chúng ta có thể dễ dàng mở và xem nội dung của một thư mục, để mở một thư mục sử dụng VIM từ cửa sổ terminal chúng ta sử dụng cú pháp sau:

$ vim {path_to_dir}

Trong đó {path_to_dir} là địa chỉ đường dẫn của thư mục trên hệ thống mà bạn muốn mở.

Ví dụ câu lệnh dưới đây được dùng để mở thư mục hiện tại trên cửa sổ dòng lệnh sử dụng VIM:

$ vim .

Kết quả:

Mở thư mục trong VIM

Bạn sẽ thấy VIM hiển thị các thông tin về thư mục ở phía trên của cửa sổ dòng lệnh như địa chỉ thư mục như ở hình trên là /tmp/vim_tips, kiểu sắp xếp hiển thị Sorted by ở trên là theo name...

Sau khi mở thư mục bạn có thể sử dụng các phím mũi tên trên bàn phím để di chuyển lên xuống giữa tên của các file hoặc tập tin (hoặc dùng các phím k, j). Sau đó gõ Enter để mở file, quay lại thư mục cha hoặc di chuyển vào thư mục khác.

Hiển Thị Đường Dẫn Thư Mục

Để hiển thị đường dẫn của thư mục đang mở trên VIM, chúng ta sẽ chạy câu lệnh của VIM sau:

:echo @%

Lưu ý: Để chạy một câu lệnh của VIM (hay VIM command) trước tiên bạn cần chuyển qua View mode của VIM bằng cách gõ ESC trên bàn phím sau đó gõ phím : để chuyển qua Command mode.

Chạy Shell Command Trên Vim

Chạy câu lệnh touch sử dụng Vim

VIM cũng hỗ trợ chạy các command của shell trên terminal, để làm điều này chúng ta sẽ cần sử dụng cú pháp như sau:

:!{cmd}

Trong đó {cmd} là câu lệnh bạn muốn chạy. Cú pháp trên bắt đầu bằng ký tự : thể hiện rằng chúng ta sẽ chuyển qua command mode trong Vim. Ký tự ! tiếp sau đó sẽ được VIM sử dụng để chạy câu lệnh {cmd} của shell thay vì chạy nó như là một câu lệnh của chính VIM (trong command mode).

Ví dụ câu lệnh dưới đây:

:! touch first.txt

Sẽ chạy câu lệnh touch của shell để tạo một tập tin rỗng với tên first.txt bên trong địa chỉ thư mục được mở bằng VIM.

Sau khi nhập câu lệnh bạn cần bấm Enter để VIM chạy câu lệnh. Kết thúc câu lệnh bạn sẽ thấy tập tin first.txt hiển thị trong danh sách file của thư mục.

Danh sách file trong thư mục sau khi chạy câu lệnh shell

Nếu chưa thấy bạn có thể làm mới thư mục (refresh) bằng cách chạy câu lệnh :edit của VIM:

:edit

Lưu ý: Nếu bạn vẫn chưa thấy tập tin mới tạo ra xuất hiện thì có thể bạn cần kiểm tra lại xem bạn đang đứng ở thư mục nào. Cần nhớ rằng VIM chạy câu lệnh shell ở thư mục ban đầu được mở chứ không phải thư mục hiện tại mà chúng ta chạy command.

Quay Lại Thư Mục

Nếu bạn đang sử dụng VIM để mở một file và muốn quay trở lại thư mục trước đó (hay thư mục chứa file đang mở) chúng ta sẽ chạy câu lệnh :Ex của Vim:

:Ex

Tạo Thư Mục Bằng Vim

Ngoài hỗ trợ hiển thị nội dung thư mục, Vim còn hỗ trợ tạo thư mục bên trong một thư mục có sẵn. Để làm điều này di chuyển vào một thư mục cha mà bạn muốn tạo thư mục con rồi sau đó gõ phím d. Vim sẽ yêu cầu bạn nhập vào tên của thư mục con sẽ được tạo:

Tạo thư mục trên VIM

Sau khi gõ tên thư mục bạn muốn tạo bạn cần gõ Enter để tạo thư mục. Nếu không muốn tạo nữa bạn bấm tổ hợp phím Ctrl + C để thoát. Trong ví dụ này tôi sẽ tạo thư mục my_dir bạn có thể làm theo để tiện theo dõi các bước tiếp.

Đổi Tên File

Khi xem danh sách các file trong một thư mục trên Vim, chúng ta có thể di chuyển tới một tập tin và nhấn tổ hợp phím tắt Shift + R để đổi tên nhanh file đó:

Đổi tên file trên Vim

Thay đổi tên tập tin và sau đó gõ Enter. Ở đây tôi sẽ đổi tên tập tin first.txt được tạo trước đó thành second.txt.

Ngoài ra, với cách này chúng ta cũng có thể thực hiện việc di chuyển file vào bên trong thư mục khác (sử dụng phím Tab để Vim tự động nhắc tên thư mục).

Xóa File

Tương tự như đổi tên file, chúng ta cũng có thể xóa file dễ dàng trên VIM. Ngoài cách chạy câu lệnh shell rm {filename} thì VIM còn hỗ trợ câu lệnh native để xóa một file. Để xóa file sử dụng VIM, đầu tiên bạn sẽ mở thự mục chứa file cần xóa trên Vim sau đó di chuyển tới file này (nhưng không mở nó ra) và gõ tổ hợp phím Shift + D.

Bạn sẽ được hỏi để xác nhận việc xóa file:

Xóa file trên Vim

Nhấn phím y để xác nhận, n hoặc q để hủy sau đó nhấn Enter.

Sau khi xóa file, nếu bạn vẫn thấy file này xuất hiện trong thư mục thì bạn có thể sẽ cần refresh lại danh sách file của thư mục với câu lệnh :edit của VIM:

Refresh danh sách file trong thư mục

Xóa Thư Mục

Chúng ta cũng có thể thực hiện việc xóa thư mục tương tự như xóa file ở trên:

Tuy nhiên bạn chỉ có thể xóa các thư mục rỗng, nếu như thư mục có chứa file bên trong bạn sẽ thấy VIM báo lỗi. Để kiểm tra bạn có thể tạo một file rỗng với tên file.txt bên trong thư mục my_dir dùng câu lệnh touch trong Shell mà chúng ta đã tham khảo ở phần trước:

Tạo file trên Vim sử dụng câu lệnh touch trong Shell

Bạn cũng lưu ý rằng khi chạy câu lệnh tạo file ở trên file được tạo sẽ được đặt ở trong thư mục đầu tiên được mở bằng VIM. Do đó nếu như ban đầu bạn mở thư mục cha chứa thư mục my_dir thì ngay cả khi bạn đã di chuyển vào bên trong thư mục my_dir sau đó thì bạn vẫn cần sử dụng my_dir/file.txt thay vì file.txt khi chạy câu lệnh này. Ngược lại VIM sẽ tạo file.txt và lưu ở trong thư mục cha của my_dir thay vì bên trong thư mục này.

Bây giờ nếu như chúng ta tiến hành xóa thư mục my_dir (lúc này không còn là thư mục rỗng nữa), bạn sẽ thấy VIM báo lỗi như sau:

Xóa thư mục rỗng: **error** (netrw) unable to delete directory /tmp/vim_tips/my_dir!

Kết Luận

Ở trên chúng ta cùng nhau đã tìm hiểu những câu lệnh advanced trong VIM. Các câu lệnh này khá hữu ích và chắc chắn sẽ tiết kiệm được nhiều thời gian cho bạn đặc biệt trong trường hợp bạn phải thao tác thường xuyên với VIM. Hãy cố gắng tạo thói quen sử dụng các câu này thường xuyên vào những lần tới đây cũng là cách giúp bạn có thể ghi nhớ chúng một cách nhanh nhất.

Câu hỏi: Cuối cùng trước khi kết thúc bài viết tôi có một câu hỏi nhỏ sau dành cho các bạn như sau: Làm cách nào để xóa một thư mục rỗng trên VIM? Hãy viết trả lời của bạn bằng cách tạo comment ở phía dưới.

0