Cách chèn ký tự tab khi tùy chọn Expandtab được bật trong Vim


352

Khi tôi ở chế độ chèn và tôi đã expandtabbật tùy chọn, nhấn Tab ↹kết quả trong việc chèn số lượng khoảng trắng được định cấu hình.

Nhưng đôi khi tôi muốn chèn một ký tự tab thực tế.

Bạn có biết làm thế nào để làm điều này?

Câu trả lời:


516

Bạn có thể sử dụng <CTRL-V><Tab>trong "chế độ chèn". Trong chế độ chèn, <CTRL-V>chèn một bản sao bằng chữ của ký tự tiếp theo của bạn.

Nếu bạn cần thực hiện việc này thường xuyên, @ Dee`Kej đã đề xuất cài đặt (trong phần bình luận) Shift+ Tabđể chèn một tab thực với ánh xạ này:

:inoremap <S-Tab> <C-V><Tab>

Ngoài ra, như được lưu ý bởi @feedbackloop, trên Windows, bạn có thể cần nhấn <CTRL-Q>chứ không phải <CTRL-V>.


33
Và sau đó sử dụng .để lặp lại lệnh cuối cùng nếu bạn muốn chèn nhiều tab.
Xavier T.

10
Tôi gặp một số vấn đề khi sử dụng kết hợp này vì tôi đang ở chế độ Lệnh. Hãy chắc chắn rằng bạn thực hiện lệnh này trong chế độ EDIT.
mgfer Nam

11
Chế độ CHERTN, về mặt kỹ thuật.
mkm Hur

2
Lưu ý: Nếu bạn đang sử dụng gVim trên Windows, có thể bạn sẽ cần sử dụng CTRL+ Qthay vào đó - xem stackoverflow.com/questions/6951672/iêu
feedbackloop

8
Tôi chỉ là một phím tắt đơn giản cho trường hợp này và nó dường như đang hoạt động (không phá vỡ bất cứ thứ gì khác): inoremap <S-Tab> <C-V><Tab>- Bạn có thể đặt nó trong ~/.vimrctệp của mình .
Dee'Kej

34

Bạn có thể tắt tùy chọn Expandtab từ bên trong Vim như dưới đây:

:set expandtab!

hoặc là

:set noet

PS: Và đặt lại khi bạn hoàn thành việc chèn tab, với "set extendtab" hoặc "set et"

PS: Nếu bạn có tab được đặt tương đương với 4 khoảng trắng trong .vimrc (softtabstop), bạn cũng có thể muốn đặt nó thành 8 khoảng trắng để có thể chèn một tab bằng cách nhấn phím tab một lần thay vì hai lần (đặt softtabstop = 8 ).


Tóm lại: set etset noetđể chuyển đổi tabspacekhi cần.
Eric Wang

Ctrl + V gây ra hiện tượng dán xảy ra và tôi không có thời gian để điều chỉnh các phím bấm. Điều này đã giúp
Shirish Hirekodi

2

Từ các tài liệu trên expandtab:

Để chèn một tab thực khi expandtabbật, sử dụng . Xem thêm và ins-extendtab . Tùy chọn này được đặt lại khi tùy chọn được đặt và khôi phục khi tùy chọn được đặt lại.CTRL-V<Tab>:retab
pastepaste

Vì vậy, nếu bạn có một ánh xạ để chuyển đổi pastetùy chọn, ví dụ:

set pastetoggle=<F2>

bạn cũng có thể làm <F2>Tab<F2>.

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.