it-swarm-vi.tech

Xóa "tab" mở rộng không gian trong Vim bằng một lần nhấn phím?

Tôi chỉnh sửa Python mã bằng Vim.

Với tab Phím tôi nhận được bốn khoảng trắng được chèn để thụt lề. Làm cách nào tôi có thể xóa các khoảng trắng đó bằng một nét "Backspace" (?) - thay vì bốn?

Phải có một số tùy chọn "thiết lập" cho ...

Đây là .vimrc của tôi:

set autoindent
set ts=4
set sw=4
set et
19
Evgeny

Bạn có thể dùng Ctrl+D để sao lưu một tab dừng. Điều này thực sự di chuyển toàn bộ dòng sang bên trái một tab dừng; Ctrl+T làm điều tương tự ở bên phải. Lưu ý rằng các tổ hợp phím này chỉ hoạt động ở chế độ Chèn (sử dụng <<>> cho tương đương trong chế độ Lệnh).

23
Greg Hewgill
set softtabstop=4
29
sf17k

tl; dr: set tabstop=4 softtabstop=-1 shiftwidth=0 expandtab

dạng ngắn: set ts=4 sts=-1 sw=0 et

Giải trình

Nếu bạn đặt softtabstop (hoặc sts) thành -1, nó sẽ tự động hoạt động giống như tabstop (ts), điều này sẽ giúp bạn tránh được nhiều rắc rối nếu bạn thay đổi nhiều thẻ. Đặt shiftwidth (sw) thành 0 cũng có hiệu quả tương tự như tabstop.

Chi tiết

shiftwidthsw

Số lượng không gian để sử dụng cho mỗi bước thụt lề (tự động). Được sử dụng cho cindent>><<v.v.
[.__.] Khi bằng 0, giá trị tabstop sẽ được sử dụng.

tabstopts

Số lượng không gian mà a trong tệp được tính. Đồng thời xem : retab lệnh và tùy chọn softtabstop.

softtabstopsts

Số lượng không gian mà một Tab được tính trong khi thực hiện các thao tác chỉnh sửa, như chèn một Tab hoặc sử dụng BS. Nó cảm thấy thích Tabs đang được chèn, trong khi trên thực tế, một hỗn hợp các khoảng trắng và s được sử dụng. Điều này hữu ích để giữ cho tabs được đặt ở giá trị tiêu chuẩn của nó, trong khi có thể chỉnh sửa như được đặt thành sts. Khi sts âm, giá trị của shiftwidth được sử dụng. Điều này sẽ giúp bạn tiết kiệm một số rắc rối nếu bạn thay đổi nhiều tab. Khi không đặt expandtab, số lượng khoảng trắng được thu nhỏ bằng cách sử dụng Tabs.

expandtabet

Trong chế độ Chèn: Sử dụng số lượng khoảng trắng thích hợp để chèn a. Không gian được sử dụng trong thụt lề với > và < các lệnh và khi autoindent được bật. Để chèn một tab thực khi bật expandtab, hãy sử dụng Ctrl-VTab. Xem thêm : retab

4
Orwellophile

Tôi đã viết GreedyBackspace.vim cho ai đó muốn thứ gì đó như thế này. Cá nhân tôi không sử dụng nó vì vậy đã được một thời gian kể từ khi tôi cập nhật nó. Tôi đã không nhận được bất kỳ báo cáo lỗi về nó gần đây, mặc dù.

2
Heptite

Một vài lựa chọn:

  1. Bạn có thể 'retab' tất cả các khoảng trắng để chúng được thay thế bằng các tab. Bằng cách đó họ có thể dễ dàng bị xóa.
  2. Bạn có thể (điều này chưa được kiểm tra, vì vậy tôi chỉ đề xuất ý tưởng ở đây) tạo một hàm 'thực thi' ở chế độ bình thường gấp 4 lần phím xóa lùi. Sau đó ánh xạ nó đến một cái gì đó. Tuy nhiên, nó không có cách nào để biết liệu nó sẽ xóa khoảng trắng hoặc một số ký tự quan trọng, vì vậy điều này có khả năng không an toàn.
  3. '4X' sẽ xóa 4 ký tự cuối cùng (đó là chữ X lớn, không nhỏ, nhỏ sẽ hoạt động giống như phím Del '.
1
Rook

cách dễ nhất là <<, lặp lại với .

0
vimmer