it-mot-dan-vi.com

Tự động thụt lề / định dạng mã cho Vim?

Tôi đang cố gắng sử dụng Vim ngày càng nhiều hơn khi tôi có thể. Một trong những điểm hấp dẫn nhất của tôi giữa Vim và IDE như Aptana là khả năng tự động thụt lề.

Có một phương tiện mã định dạng tự động (HTML, CSS, PHP) để nó được thụt lề đúng không?

Nếu vậy làm thế nào để bạn cài đặt này vào vim? Tôi không hiểu các plugin rất nhiều. Tôi đã thử xem lại chủ đề này và nó làm tôi bối rối hơn: Làm cách nào để thay đổi hành vi tự động thụt lề của vim?

36
chrisjlee

Để tự động thụt toàn bộ tệp:

gg
=G

Giải thích:

  • gg - đi đến phần đầu của tệp
  • G - đi đến cuối tệp
  • = - thụt lề
59
takeshin

Tôi không biết về định dạng mã tự động hiện có, nhưng nếu bạn đang viết mã và cần tự động thụt lề:

  • :set autoindent (Hoặc :set ai) Sẽ bật tự động thụt lề
  • Ctrl-d để không thụt lề (AKA outdent) mã của bạn
  • Tab hoặc dấu cách để thụt lề - Cá nhân tôi sử dụng tab
  • :set tabwidth=4 (Hoặc :set tw=4) Sẽ kiểm soát số lượng khoảng trống mà một tab nên thụt mã
  • Lệnh >> Sẽ thụt dòng hiện tại. Nếu bạn thêm tiền tố vào một số, hãy nói 4>> Thì nó sẽ thụt vào 4 dòng, bắt đầu bằng dòng hiện tại.
  • Tương tự, lệnh << Sẽ hủy thụt dòng

Tôi hy vọng điều này mang lại cho bạn một khởi đầu tốt.

17
Hai Vu

Tự động thụt lề *.sh

Chỉ cần thêm các dòng sau vào ~/.vimrc

filetype indent on
set smartindent
autocmd BufRead,BufWritePre *.sh normal gg=G
4
Rahul Patil

Plugin này giúp dễ dàng thực hiện định dạng trên mã của bạn. Nó tích hợp các trình định dạng bên ngoài và có một dự phòng về chức năng thụt lề của vim.

https://github.com/Chiel92/vim-autoformat

Ngoài ra, nhận thấy sự khác biệt giữa định dạng và thụt lề. Việc thụt lề chỉ sửa chữa khoảng trắng trước mỗi dòng, trong khi định dạng cũng xử lý bất kỳ điều gì khác, chẳng hạn như khoảng trắng xung quanh toán tử, v.v.

2
Chiel ten Brinke

Tạo/chỉnh sửa ~/.vimrc tập tin và thêm dòng sau:

set autoindent
2
Akshat Maheshwari

autoformat/thụt lề của vim hoạt động khá tốt. Đầu tiên, đặt dòng này vào ~/.vimrc:

filetype plugin indent on

Sau đó mở tệp trong vim và nhập gg=G

(gg di chuyển con trỏ đến dòng đầu tiên. = chạy lệnh thụt lề. G cho biết lệnh thụt lề chạy từ đây đến dòng cuối cùng.)

Nếu autoformat trông thực sự xấu, như mọi dòng chỉ bị thụt vào trong, sau đó chạy :scriptnames Và kiểm tra xem .../indent/html.vim (Hoặc bất kỳ ngôn ngữ nào bạn đang sử dụng) có trong danh sách không. Nếu không, hãy đảm bảo ~/.vimrc Của bạn là chính xác. Hoặc nếu bạn đã chạy :filetype plugin indent on Từ dòng lệnh vim, bạn sẽ cần mở lại tệp :e

0
wisbucky

Trong bash tôi làm điều này:

source <(echo "Zibri () {";cat script_to_be_reindented.sh; echo "}")
declare -f Zibri| cut -c 5-|head --lines=-1|tail --lines=+3

điều này giúp loại bỏ các bình luận và giới thiệu lại kịch bản "bash way". nó sẽ không hoạt động nếu tập lệnh chứa HEREDOCS nhưng nếu bạn làm điều này:

source <(echo "Zibri () {";cat script_to_be_reindented.sh; echo "}")
declare -f Zibri|head --lines=-1|tail --lines=+3

nó sẽ hoạt động với bất kỳ tập lệnh nào nhưng toàn bộ tập lệnh sẽ được thụt vào bởi 4 khoảng trắng. vui lòng sửa đổi nhưng trích dẫn tên của tôi trong kịch bản của bạn và đăng nó! : D

0
Zibri