Mẹo nhỏ với Vim: sử dụng các tab

Trước khi Vim 7.0 được phát hành hồi tháng 5 năm ngoái, mỗi khi chỉnh sửa file, tôi phải mở đến 5, 6 cửa sổ xterm hay Konsole. Mỗi cửa sổ là một Vim session riêng với một file đơn để chỉnh sửa. Điều này khiến tôi mất quá nhiều không gian trên màn hình và rất không hiệu quả. Vim 7.0 cho phép người dùng lựa chọn sử dụng các tab, thống nhất tất cả session vào một cửa sổ và di chuyển giữa các file dễ dàng.

Nếu bạn đang dùng phiên bản Vim trước 7.0, bạn không có quyền truy cập thành phần này. Bây giờ hầu hết mọi distro đều chuyển sang Vim 7.0 nên bạn phải dùng phiên bản mới nhất mới có thể sử dụng được chúng.

Mở một tab

Chúng ta hãy bắt đầu với việc mở một tab mới trong Vim. Có một số cách thực hiện điều này. Dễ nhớ nhất là chạy lệnh :tabnew trong chế độ normal (mức bình thường). Lệnh này sẽ mở ra một tab mới với bộ đệm trống. Nếu bạn muốn chỉnh sửa file trong tab mới, bạn có thể chạy lệnh :tabnew filename. Vim sẽ load file trong tab mới cho bạn.

Cách khác là mở nhiều hơn một file khi khởi động, dùng tuỳ chọn -p. Nếu bạn muốn mở ba file trong các tab riêng, sử dụng cú pháp sau:

vim -p file1 file2 file3

Lệnh này sẽ bắt đầu một phiên Vim (Vim session) với file1 trong tab đầu tiên, file2 trong tab thứ hai và file3 trong tab thứ ba.

Vim sẽ mở các tab theo số lượng bạn yêu cầu trên starup. Số tab lớn nhất được thiết lập trong file vimrc. Giá trị lớn nhất mặc định là 10, nhưng bạn có thể thay đổi bằng cách thiết lập tuỳ chọn tabpagemax trong .vimrc của mình, dạng như sau:

set tabpagemax=15

Nếu bạn vượt quá con số trong tabpagemax, Vim sẽ mở tối đa tab cho phép, còn các file khác cũng vẫn mở nhưng không hiển thị lên. Bạn có thể chỉnh sửa các file còn lại bằng cách dùng lệnh :netxt hay :last để di chuyển các file không được hiển thị trong một tab. Lưu ý rằng thiết lập này chỉ áp dụng cho số tab lớn nhất Vim sẽ mở trên starup. Bạn vẫn có thể mở nhiều tab hơn trong quá trình hoạt động của Vim.

Lệnh :tabf cho phép bạn tìm kiếm file trong đường dẫn hiện tại và mở nó ra trong tab mới. Chẳng hạn, nếu bạn muốn mở một file có tên inventory.txt trong đường dẫn hiện tại, bạn có thể chạy:

:tabf inven*

Lệnh này sẽ tìm tìm file phù hợp với xâu inven và bất kỳ ký tự số nào sau nó. Nếu chỉ có một file được tìm ra, Vim sẽ mở nó trong tab mới. Nếu có tới vài file phù hợp, Vim sẽ thông báo có quá nhiều file và bạn phải hạn chế quá trình tìm kiếm xuống sao cho chỉ còn một file. Lệnh :tabn sẽ tự động hoàn thiện tên file trong đường dẫn của bạn. Vì thế bạn chỉ cần đánh một số ký tự đầu tiên của filename và ấn Tab để tìm ra đúng tên file.

Di chuyển giữa các tab

Bạn có thể thay đổi giữa các tab bằng cách dùng lệnh :tabn:tabp hoặc gt nếu đang ở chế độ normal. Tất nhiên, nếu đang dùng GUI, GVIM của Vim, bạn có thể sử dụng chuột hoặc phím tắt để chuyển đổi giữa các tab.

Trong GVim, bạn có thể truy cập một menu ngữ cảnh các tab bằng cách kích phải chuột lên thanh tab. Khi đó bạn có thể mở tab mới với bộ đệm mới, một file đã tồn tại hoặc đóng tab hiện tại.

Nếu đang mở nhiều tab, bạn có thể dùng :tabfirst hay ngắn gọn là :tabfir để nhảy tới tab đầu tiên và :tablast để nhảy đến tab cuối cùng.

Mặc định, các nhãn tab chỉ được hiển thị ở đầu cửa sổ Vim khi các tab mở. Nếu muốn thấy thanh tiêu đề của tab liên tục, bạn có thể chỉnh sửa tuỳ chọn showtabline trong thư mục .vimrc. Để thiết lập tuỳ chọn này, dùng:

set showtabline=2

Nếu muốn tắt hoàn toàn nó, dùng 0 hay vì 2.

Chú ý rằng các tab vẫn ở đó, cho dù tab bar không được hiển thị. Nếu thiết lập tuỳ chọn tabline là 0, bạn có thể biết được tab nào đang được mở bằng cách dùng lệnh :tabs. Nó sẽ cung cấp tóm tắt các tab mở, như bạn có thể thấy trong hình minh hoạ.

Nói về việc thiết lập tuỳ chọn, nếu không thích các phím tắt đã có, bạn có thể bổ sung tổ hợp tắt của riêng mình. Chẳng hạn, nếu muốn mở tab mới dễ dàng, bạn có thể chèn lệnh sau vào .vimrc:

imap ,t <Esc>:tabnew<CR>

Lệnh này sẽ nói với Vim thiết lập phím tắt, t trong chế độ insert. Để chạy Esc, đặt Vim vào chế độ normal, sao đó :tabnew và carriage (CR) trả lại để chạy lệnh. Bạn có thể thiết lập sơ đồ phím tắt cho toàn bộ lệnh thao tác với những tab sử dụng thường xuyên nhất.

Sắp xếp lại các tab

Là người cẩn thận, chắc hẳn bạn sẽ muốn sắp xếp các tab trong Vim ngăn nắp, gọn gàng. Bạn có thể chuyển chúng vào một chỗ cụ thể theo thứ tự nhất định bằng cách dùng lệnh :tabm n, trong đó n là số vị trí bạn muốn. Nếu không cung cấp đối số cho lệnh :tabm, tab hiện tại sẽ được chuyển tới vị trí cuối cùng.

Vim bắt đầu mã số tab từ 0. Vì thế, nếu mở 6 tab, bạn sẽ có các tab từ 0 đến 5. Nếu đang ở tab đầu tiên và muốn chuyển đến tab thứ tư, bạn có thể dùng lệnh: :tab 3.

Chú ý rằng, bạn vẫn có thể dùng các viewport như bình thường trong cửa sổ tab. Sử dụng tab rất hữu ích nếu muốn chỉnh sửa nhanh một file, nhất là khi cửa sổ Vim chính thiết lập hai viewport.

Chạy các lệnh trong tab

Giả sử bạn đang chỉnh sửa 6 hoặc 7 file trong Vim và nhận ra rằng cần thay thế mới một tên biến. Dùng :tabdo, bạn có thể thực hiện lệnh tìm kiếm và thay thế tất cả các tab cùng một lúc thay vì phải thay đổi từng file riêng lẻ. Chẳng hạn, nếu muốn thay thế foo cho bar, bạn chạy câu lệnh sau:

:tabdo %s/foo/bar/g

Lệnh này sẽ chạy qua từng tab mở và thực hiện tìm kiếm, thay thế (%s/foo/bar/g) trong mỗi tab đó.

Các tab sẽ trở nên cực kỳ hữu ích trong khi chỉ cần bỏ ra chút ít thời gian để thành thạo với nó. Nếu muốn biết thêm thông tin khi làm việc với tab, bạn có thể chạy lệnh :help tab-page-intro bên trong Vim, phần trợ giúp sẽ xuất hiện.

Thứ Bảy, 27/01/2007 15:56
31 👨 1.347