Làm thế nào tôi có thể tự động thụt lề trên các dòng mới?


15

Tôi làm việc trên các dự án với mức độ thụt khác nhau. Trong nhiều dự án này, do cách các tệp thường được cấu trúc, hầu hết các dòng được thụt vào ít nhất hai cấp độ (chẳng hạn như các phương thức trong các tệp Java).

Điều này có nghĩa là tạo ra một dòng mới khi trên một dòng dòng

public void something () {

Sẽ đưa con trỏ của tôi đến dòng tiếp theo, tự động thụt vào, như

public void something () {
    [cursor]

Mặc dù tôi có thể nhấn phím tab một vài lần trên một dòng mới để đưa nó vào hàng, nhưng có cách nào tốt hơn để làm điều này (có thể tự động) không?

Câu trả lời:


11

Điều này có thể được thực hiện bằng cách sử dụng kết hợp autoindenttùy chọn và filetypeplugin.

Các autoindenttùy chọn sẽ sao chép thụt đầu dòng hiện tại của bạn khi tạo một dòng mới. Vì vậy, nếu mức thụt dòng hiện tại của bạn là 4 khi bạn bắt đầu dòng mới, con trỏ sẽ được chuyển đến cùng mức thụt dòng trên dòng tiếp theo.

Trong ~/.vimrctập tin của bạn , bạn sẽ đặt

set autoindent

Bạn cũng có thể sử dụng filetypeplugin để tự động xác định mức thụt tiếp theo dựa trên loại tệp.

Bạn có thể kích hoạt tính năng này khi đang di chuyển với

:filetype indent on

Hoặc, trong ~/.vimrctập tin của bạn, bạn sẽ đặt

filetype plugin indent on

Sẽ tự động xác định thụt lề dựa trên loại tệp.


6

Sử dụng :set cindent( :set cincho ngắn) hoặc :set smartindent( :set sicho ngắn). Nếu dòng của bạn kết thúc trong một cú đúp mở, và bạn nhấn Enter, dòng sau đây sẽ được tự động thụt vào một cấp bổ sung. (Điều này tốt hơn :set autoindent, chỉ đơn thuần là thụt dòng tiếp theo ở cùng cấp.) cindentĐược điều chỉnh tốt hơn cho các ngôn ngữ giống như C, trong khi smartindentlinh hoạt hơn để sử dụng với các ngôn ngữ lập trình khác.

Số lượng và loại thụt đầu dòng được điều khiển bởi :set shiftwidth=…, :set tabstop=…:set expandtab.


'smartindent'không được chấp nhận, vì vậy đó không phải là sự lựa chọn tốt nhất. Nó đã được thay thế bởi 'cindent''cinoptions'cho các ngôn ngữ giống như C. Tuy nhiên, nói chung, thụt lề loại tệp là cách để đi, với 'autoindent'tư cách là một dự phòng.
jamessan 4/2/2015

@jamessan smartindentkhông được tán thành, nhưng cindentđáng chú ý. Tôi đã cập nhật câu trả lời. (Cảm ơn!)
200_success 4/2/2015

Tôi cũng khuyên bạn nên xem qua Editorconfig.org . Tất nhiên có một plugin cho vim (và nhiều biên tập viên khác) và đó là một cách tuyệt vời để giữ cho trình soạn thảo của bạn mặc định trên VCS của bạn
Cyber ​​Oliveira

0

Ở dưới cùng của tệp, tôi đang sử dụng:

# vim: ts=2 sw=2 sts=2 sr noet st ai si

Ví dụ Dockerfile:

FROM centos-7
RUN ...
CMD ...

# vim: ts=2 sw=2 sts=2 sr noet st ai si

Nếu bạn chỉ muốn giữ vết lõm, hãy sử dụng # vim: st ai si

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.