Thỉnh thoảng tôi phải làm việc với mã không được thụt vào mức thụt mà tôi đã cài đặt Vim (4 khoảng trống cho mỗi cấp), thường là sau khi sao chép / dán thứ gì đó trong tệp. Tôi thường làm với <<
và >>
. Vấn đề là họ không nhảy lên cấp độ thụt tiếp theo, họ chỉ thêm hoặc bớt 4 khoảng trắng.
Nếu tôi có mã như thế này
if condition:
do this
do that
làm >>
trên do that
sẽ dẫn đến
if condition:
do this
do that
Tôi muốn nó đi đến đây
if condition:
do this
do that
Bên cạnh dễ dàng khớp với vết lõm của dòng trên, tôi muốn nó chuyển sang cấp độ thụt tiếp theo, không thêm 4 khoảng trắng.
Đây là những gì tôi có trong .vimrc của mình về việc thụt lề
:set tabstop=4 shiftwidth=4 expandtab
>>
và <<
tương ứng thêm và loại bỏ thụt lề không phải là những gì bạn muốn. Những gì bạn muốn là "định dạng", được thực hiện với ==
.
:nnoremap >> ^i<tab><esc>
nếu bạn thực sự muốn hành vi trên tab>>
==
sẽ nhảy đến cấp độ của dòng trên. Mặc dù một điều tốt để biết, nó sẽ không hoạt động trong tất cả các trường hợp mà tôi quan tâm. Ngoài ra, tôi muốn làm gì >>
và <<
thụt vào / chuyển sang nhiều băng thông tiếp theo từ đường biên theo hướng đó .
==
sử dụng equalexpr
hoặc equalprg
để định dạng lại các dòng đã cho.
filetype plugin indent on
ở bạn.vimrc
, filetype (và plugin) quy tắc thụt đầu dòng liên quan đến sẽ áp dụng. Tức là kiểm tratabstop
giá trị thực sự của bạn là gì (set tabstop?
sẽ làm như vậy đối với các cài đặt khác), khi chỉnh sửa và thay đổi các giá trị đó bằng cách thêm dòng của bạn vào tệp 'sau', đại loại như: stackoverflow.com/a/159066/5000478