2010-01-13 51 views
58

Mỗi lần tôi thêm một chọn trong CSS và tôi nhấn Enter để xác định các tính chất nó kết thúc như thế này:Làm cách nào để thay đổi kích thước tab trong Vim?

#selector { 
     property: value; 
} 

(8-không gian tab)

Làm thế nào tôi có thể cấu hình Vim để làm nó như thế này:

#selector { 
    property: value; 
} 

(4-không gian tab)

+2

Bạn có muốn một tab có chiều rộng 4 không gian không? Bốn không gian? Hoặc bốn tab của 1 chiều rộng không gian? Họ là những thứ khác nhau, và bạn không rõ ràng. Trong mọi trường hợp, bắt đầu bằng việc đọc: he ts,: he sw, và: anh ta mở rộng – abeyer

Trả lời

51

Mở rộng về câu trả lời zoul của:

Nếu bạn muốn thiết lập Vim sử dụng cài đặt cụ thể khi chỉnh sửa một filetype cụ thể, bạn sẽ muốn sử dụng autocommands:

autocmd Filetype css setlocal tabstop=4 

Điều này sẽ làm cho nó để các tab được hiển thị là 4 dấu cách. Thiết lập expandtab sẽ khiến Vim thực sự chèn dấu cách (số lượng chúng được kiểm soát bởi tabstop) khi bạn nhấn tab; bạn có thể muốn sử dụng softtabstop để làm cho backspace hoạt động đúng cách (có nghĩa là, giảm thụt đầu dòng khi đó là những gì sẽ xảy ra nên các tab được sử dụng, thay vì luôn luôn xóa một char tại một thời điểm).

Để đưa ra quyết định được đào tạo đầy đủ về cách thiết lập mọi thứ, bạn cần đọc tài liệu Vim trên tabstop, shiftwidth, softtabstopexpandtab. Bit thú vị nhất được tìm thấy dưới expandtab (:help 'expandtab):

Có bốn cách chính để sử dụng các tab trong Vim:

  1. Luôn giữ 'tabstop' lúc 8, thiết lập 'softtabstop' và ' shiftwidth 'đến 4 (hoặc 3 hoặc bất cứ điều gì bạn thích) và sử dụng' noexpandtab '. Sau đó, Vim sẽ sử dụng kết hợp các tab và dấu cách, nhưng nhập và sẽ hoạt động giống như một tab xuất hiện cứ 4 (hoặc 3) ký tự.

  2. Đặt 'tabstop' và 'shiftwidth' thành bất kỳ thứ gì bạn thích và sử dụng 'expandtab'. Bằng cách này, bạn sẽ luôn chèn khoảng trắng. Định dạng sẽ không bao giờ bị sai lầm khi 'tabstop' được thay đổi.

  3. Đặt 'tabstop' và 'shiftwidth' thành bất kỳ thứ gì bạn thích và sử dụng | modeline | để đặt các giá trị này khi chỉnh sửa lại tệp. Chỉ hoạt động khi sử dụng Vim để chỉnh sửa tệp.

  4. Luôn đặt 'tabstop' và 'shiftwidth' thành cùng một giá trị và 'noexpandtab'. Điều này sau đó sẽ hoạt động (chỉ dành cho các lần thụt lề đầu tiên) cho bất kỳ cài đặt tabstop nào mà mọi người sử dụng. Nó có thể là tốt đẹp để có các tab sau khi không đầu tiên trống chèn vào không gian nếu bạn làm điều này mặc dù. Nếu không, nhận xét được căn chỉnh sẽ bị sai khi 'tabstop' được thay đổi.

+0

Ngoài ra, đừng lo lắng quá nhiều về việc có thể thay đổi ý định của bạn sau này ... xem ': help retab' (kiểm tra biến thể!). –

82
:set tabstop=4 
:set shiftwidth=4 
:set expandtab 

Điều này sẽ chèn bốn dấu cách thay vì ký tự tab. Các không gian hơi "ổn định" hơn, có nghĩa là văn bản thụt vào với các khoảng trống sẽ hiển thị giống nhau trong trình duyệt và bất kỳ ứng dụng nào khác.

+21

Có, nhưng các tab là ngữ nghĩa (mỗi tab có nghĩa là 1 lớp thụt đầu dòng), trong khi dấu cách hoàn toàn là thuyết trình. Hay nói cách khác, việc sử dụng các tab sẽ cho phép những người khác xem mã của bạn hiển thị tuy nhiên họ cảm thấy thoải mái, trong khi không gian sẽ không cho phép điều này. –

+1

Lưu ý rằng nếu bạn thích ** '>' ** và ** '<' ** để di chuyển văn bản của bạn cùng khoảng cách với ** tab ** - phím, bạn có thể chỉ cần ': đặt shiftwidth = 0' trong vimrc và quên nó mãi mãi, bởi vì điều này nói với vim rằng bạn luôn muốn nó khớp với 'tabstop'. – SeldomNeedy

3

Nếu bạn cần thay đổi kích thước thường và bạn không muốn ràng buộc này cho một loại tập tin cụ thể mà bạn có thể có các lệnh được xác định trước trong hồ sơ vimrc của bạn để nhanh chóng chuyển đổi sở thích:

nmap <leader>t :set expandtab tabstop=4 shiftwidth=4 softtabstop=4<CR> 
nmap <leader>m :set expandtab tabstop=2 shiftwidth=2 softtabstop=2<CR> 

Bản đồ này có hai bộ kích thước khác nhau cho các khóa \ t và \ m. Bạn có thể rebind này để bất cứ phím nào bạn muốn.

33

Để thực hiện thay đổi cho một phiên làm việc, sử dụng lệnh này:

:set tabstop=4 

Để thực hiện thay đổi vĩnh viễn, thêm nó vào ~/.vimrc hoặc ~/.vim/vimrc:

set tabstop=4 

này sẽ ảnh hưởng đến tất cả các file, không chỉ là css. Để chỉ ảnh hưởng đến các tệp css:

autocmd Filetype css setlocal tabstop=4 

như đã nêu trong Michał's answer.

+1

nếu bạn muốn tab hoạt động như bốn dấu cách, cần phải thêm các dòng khác trong câu trả lời @Zoul vào .vimrc; có nghĩa là, thêm 'set shiftwidth = 4' và 'set expandtab' vào .vimrc quá. – qartal

+2

Câu hỏi đặt ra là "Làm cách nào để thay đổi kích thước tab trong Vim?" – Keith

+1

Câu trả lời hay nhất tại đây +1 –

9

Một số câu trả lời trên trang này là các bản sửa lỗi 'sử dụng một lần' cho vấn đề được mô tả. Có nghĩa là, lần sau khi bạn mở tài liệu với vim, cài đặt tab trước đó sẽ trở lại.

Nếu bất cứ ai quan tâm đến việc thay đổi vĩnh viễn các thiết lập tab:

  • find/mở vimrc của bạn - instructions here
  • thêm những dòng sau đây: (more info here)

    set tabstop=4 
    set shiftwidth=4 
    set expandtab 
    
  • sau đó lưu tệp và thử nghiệm

Các vấn đề liên quan