Kích thước tab Vim khi nhấn <Tab> và khi tự động áp dụng


22

Tôi quyết định thay đổi kích thước tab của mình từ 4 thành 2, vì tại sao không? Bất cứ ai khác muốn xem mã chắc chắn có thể sử dụng các ưu tiên của họ.

Tuy nhiên, một câu hỏi.

Nếu tôi nhấn phím tab, nó sẽ chèn 2, nhưng tính năng tự động của Vim vẫn đang đặt 4. Tôi phải thay đổi gì để tạo 2?

Một câu hỏi không liên quan khác: Phong cách thụt lề nào là tốt nhất cho C và các ngôn ngữ tương tự? Tôi đã sử dụng 1TBS, nhưng có rất nhiều lựa chọn. Có ai trong số họ chuyên nghiệp hơn hoặc ưa thích?

Câu trả lời:


17

Hãy thử đặt ' shiftwidth' thành cùng giá trị với ' tabstop'. Tốt hơn nữa, nếu bạn đang sử dụng một phiên bản Vim đủ gần đây, hãy đặt ' shiftwidth' thành 0 và nó sẽ được mặc định là bất cứ điều gì ' tabstop' được đặt thành.


Đây là những gì tôi đang tìm kiếm. Hiện đang tranh luận giữa cài đặt tslà 2, 4 hoặc 8
dùng341814

Tôi sử dụng 8 trên các tệp không phải mã và 2 hoặc 4 tùy thuộc vào ngôn ngữ và mức độ lồng nhau có xu hướng xảy ra.
Heptite

Tôi chỉ làm C vào lúc này.
dùng341814

33

Tùy chọn thụt lề Vim

Vim chủ yếu sử dụng 3 cài đặt cho kích thước thụt lề:

  • tabstop, ts: khi Vim bắt gặp một bảng trong tệp bạn đang mở, nó sẽ hiển thị tab dưới dạng khoảng trắng {ts} (xem trợ giúp về tabstop hoặc nhập :help tabstopvào Vim).
  • softtabstop, sts: khi bạn đang chỉnh sửa tệp và nhấn phím tab, Vim sử dụng cài đặt này để xác định độ rộng của bảng được chèn (xem trợ giúp softtabstop hoặc nhập :help softtabstopVim).
  • shiftwidth, sw: Số lượng không gian Vim sử dụng khi thụt, hoặc sử dụng autoindent thông tin hay thông thường >>, <<lệnh. Như Heptite nhận thấy, đây là những gì bạn đang tìm kiếm trong trường hợp cụ thể này. Và các phiên bản gần đây của Vim thực sự cho phép bạn không xác định tùy chọn này, shiftwidthsau đó sẽ lấy giá trị được xác định bởi tabstop. Khá tiện dụng (xem trợ giúp về băng thông ).

Thí dụ

Vì vậy, ví dụ, nếu bạn sử dụng các cài đặt sau:

set sts=4
set ts=2
set sw=8

Chúng sẽ tạo ra các hành vi sau:

  1. Chèn một bảng trong tệp sẽ tạo ra một khoảng trống rộng 4 chỗ.
  2. Khi bạn tabstopđược đặt thành 2, điều này thực sự sẽ tương đương với 2 bảng. Điều này khá dễ kiểm tra, chỉ cần sử dụng listlistcharscác tùy chọn để hiển thị bảng.
  3. Nếu bạn thụt dòng bằng cách sử dụng >>, thì vết lõm sẽ rộng 8 khoảng trống (do đó, tương đương với 4 bảng, dựa trên tabstopgiá trị, giống như trên).

nhập mô tả hình ảnh ở đây

Khuyến nghị thụt lề Vim (từ tài liệu Vim)

Từ tabstoptrợ giúp ( :help tabstoptrong Vim):

There are four main ways to use tabs in Vim:
  1. Always keep 'tabstop' at 8, set 'softtabstop' and 'shiftwidth' to 4
    (or 3 or whatever you prefer) and use 'noexpandtab'.  Then Vim
    will use a mix of tabs and spaces, but typing <Tab> and <BS> will
    behave like a tab appears every 4 (or 3) characters.
  2. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use
    'expandtab'.  This way you will always insert spaces.  The
    formatting will never be messed up when 'tabstop' is changed.
  3. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use a
    |modeline| to set these values when editing the file again.  Only
    works when using Vim to edit the file.
  4. Always set 'tabstop' and 'shiftwidth' to the same value, and
    'noexpandtab'.  This should then work (for initial indents only)
    for any tabstop setting that people use.  It might be nice to have
    tabs after the first non-blank inserted as spaces if you do this
    though.  Otherwise aligned comments will be wrong when 'tabstop' is
    changed.

Cá nhân tôi sử dụng chủ yếu là giải pháp thứ hai, với 2 bảng rộng.

set ts=2
set sts=2
set et     "expand tabs to spaces

-1

Theo http://vim.wikia.com/wiki/Indenting_source_code , lệnh 'filetype plugin thụt vào' sẽ khiến chương trình sử dụng các tập lệnh thụt lề cụ thể filetype nằm trong thư mục con thụt lề của bản cài đặt Vim. Trang đó cũng nói rằng 'cindent' được sử dụng tự động trong các tệp C và C ++ và bạn không cần phải sử dụng lệnh đó theo cách thủ công.

Tôi không quen thuộc lắm với Vim, vì tôi chỉ sử dụng nó cho một số chỉnh sửa văn bản cơ bản, nhưng tôi sẽ thử phát lệnh 'cindent' theo cách thủ công để sử dụng kích thước tự động mặc định của Vim cho mã đó. Nếu điều đó không hiệu quả, bạn có thể thử 'plugin filetype thụt vào' và tự chỉnh sửa các tập lệnh để có được các thụt lề mong muốn.

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.