Chèn các tab trong chế độ INSERT khi mở rộng cài đặt


12

Tôi đã thiết lập expandtabtrong .vimrctập tin của mình để chuyển đổi tabthành nhiều spaceký tự. Tuy nhiên, một số tệp (như Makefile) thực sự cần tabký tự được chèn.

Có một cách dễ dàng để buộc chèn tabtrong khi tôi đang gõ?

Câu trả lời:


27

Thay vì chỉ nhấn Tab, đầu tiên nhấn Ctrl-Vvà sau đó nhấn Tab.

Điều này có thể được sử dụng để chèn một loạt các ký tự đặc biệt. Xem :help i_CTRL-Vđể biết chi tiết.

Ctrl-Vcũng hoạt động ở chế độ dòng lệnh ( :help c-CTRL-V) và thậm chí trong một số chương trình khác hoàn toàn. (ví dụ: bash, mutt.)

Nếu bạn đã Ctrl-Vánh xạ tới một cái gì đó khác, hãy thử Ctrl-Q. Điều này có tác dụng tương tự trong Vim Ctrl-V, nhưng một số thiết bị đầu cuối sử dụng nó cho luồng điều khiển, trong trường hợp đó Vim sẽ không bao giờ nhìn thấy nó.


5
Hoặc <c-v>009trong trường hợp phím Tab bị hỏng hoặc người theo chủ nghĩa thuần túy ASCII khó tính :-)
Martin Tournoij

17

Thay vì thay đổi hành vi của bạn (dễ bị lỗi).
Tôi sẽ thiết lập vim để hành xử khác với loại tệp này.

Vì vậy, trong chỉnh sửa bình thường của tôi, tôi mở rộng các tab. Nhưng đặc biệt đối với makecác tệp tôi đặt noexpandtabđể các tab được giữ lại.

Thêm phần sau vào tệp ~ / .vimrc của bạn:

" Normal action
set expandtab

if has("autocmd")

    " If the filetype is Makefile then we need to use tabs
    " So do not expand tabs into space.
    autocmd FileType make   set noexpandtab

endif

3
Tôi đã trả lời câu hỏi của anh ấy, nhưng bạn thực sự đã tìm ra vấn đề tiềm ẩn nào tốt hơn tôi đã làm. Làm tốt lắm.
Giàu

Tôi nghĩ cả hai câu trả lời đều có giá trị. Bởi vì đôi khi bạn đã đăng nhập vào một nơi nào đó từ xa và không muốn gây rối với cấu hình vim mà chỉ muốn nhanh chóng chỉnh sửa Makefile.
Daniel Schmitz
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.