vundle Plugin plugin filetype thụt lề trên các mớ hỗn độn trên băng thông


9

Tôi đã cài đặt vundle ngày hôm qua và kể từ khi tôi làm, băng thông tôi đã cấu hình trong vimrc của tôi bị bỏ qua và đặt lại thành 4 thay vì 2.

Tôi phát hiện ra rằng dòng sau đoạn văn vundle gây ra nó:

filetype plugin indent on

Sự thụt lề của tôi được thiết lập như thế này:

set noexpandtab " Make sure that every file uses real tabs, not spaces
set shiftround  " Round indent to multiple of 'shiftwidth'
set smartindent " Do smart indenting when starting a new line
set autoindent  " Copy indent from current line, over to the new line

" Set the tab width
let s:tabwidth=2
exec 'set tabstop='    .s:tabwidth
exec 'set shiftwidth=' .s:tabwidth
exec 'set softtabstop='.s:tabwidth

Bạn có thể kiểm tra vimrc đầy đủ của tôi ở đây .

Tôi đã thử nghiệm vấn đề thụt đầu dòng bằng cách sử dụng tập lệnh python (trong đó việc thụt lề thực sự quan trọng).

Tôi đã cố gắng thay đổi filetype plugin indent onđể filetype plugin onnhưng điều đó không thay đổi bất cứ điều gì. Chỉ nhận xét ra dòng đó giúp.
Bây giờ, hướng dẫn cài đặt vundle nói, dòng này là bắt buộc.

Làm thế nào để tôi khắc phục vấn đề thụt lề này? Tôi có thể chỉ sử dụng dòng filetype hay thực sự bắt buộc phải giữ nó trong vimrc?

Giải pháp:

Nhờ @ChristianBrabandt và @romainl, giờ đây tôi đã tìm thấy một giải pháp cũng có thể nằm trong một tệp vimrc:

filetype plugin indent on

[...]

set noexpandtab " Make sure that every file uses real tabs, not spaces
set shiftround  " Round indent to multiple of 'shiftwidth'
set autoindent  " Copy indent from current line, over to the new line

" Set the tab width
let s:tabwidth=2
au Filetype * let &l:tabstop = s:tabwidth
au Filetype * let &l:shiftwidth = s:tabwidth
au Filetype * let &l:softtabstop = s:tabwidth

Mặc dù nó không trả lời câu hỏi của bạn, tôi đã thử với vim-plug thay vì Vundle và nó hoạt động hoàn hảo ...
nobe4


Bạn cũng có thể sử dụng chế độ tự động tùy chọn mới của Bộ cài đặt mới để đặt lại cài đặt dịch chuyển và cài đặt phần mềm
Christian Brabandt

Câu trả lời:


10

Điều đầu tiên trước tiên; dòng dưới đây hoàn toàn không có gì để làm với Vundle hoặc quản lý plugin:

filetype plugin indent on

Lệnh đó thực hiện ba điều:

  • cho phép phát hiện filetype,
  • cho phép các tập lệnh cụ thể filetype (ftplugins),
  • cho phép các tập lệnh thụt lề cụ thể filetype.

Dòng đó là có bởi vì một số trình quản lý plugin phải đảm bảo phát hiện filetype bị vô hiệu hóa trước khi thực hiện phép thuật của họ và sử dụng Vim để lập trình sẽ khó hơn rất nhiều nếu không có ftplugins và thụt lề thích hợp. Theo ý kiến ​​của tôi, họ chỉ nên đối phó với việc phát hiện filetype trong nội bộ nhưng cũng rất tốt

Dù sao, vấn đề của bạn là do các ftplugins chiếm hữu quá mức ghi đè cài đặt thụt đầu dòng của bạn với chúng. Con trăn ftplugin là thủ phạm phổ biến nhất bởi vì nó đã được quyết định cách đây không lâu rằng nó sẽ thực thi PEP8.

Cách dễ dàng là tránh hoàn toàn việc tìm nguồn cung ứng ftplugins:

filetype indent on

nhưng chúng thường đi kèm với những thứ hữu ích để phương pháp đó không thực sự được khuyến khích.

Giải pháp sạch nhất là để filetypedòng ở trạng thái "tối ưu":

filetype plugin indent on

và ghi đè lên phần ghi đè của chúng bằng của riêng bạn after/ftplugin/python.vim:

setlocal noexpandtab
setlocal shiftround
setlocal autoindent

let s:tabwidth=2
let &l:tabstop = s:tabwidth
let &l:shiftwidth = s:tabwidth
let &l:softtabstop = s:tabwidth

Ghi chú:

  • Tôi đã loại bỏ smartindentbởi vì nó không phải là thông minh để bắt đầu và không được chấp nhận bởi các kịch bản thụt lề cụ thể filetype nào.
  • Tôi đã thay thế các :executelệnh của bạn bằng :letcác lệnh sạch hơn để tránh sự kết hợp không cần thiết.

1
Nếu bạn đặt shiftwidththành 0 và softtabstopthành -1, nó sẽ tuân theo cài đặt tabstop.
Christian Brabandt

cảm ơn lời giải thích của bạn Tôi muốn duy trì hầu hết các cài đặt của mình trong vimrc vì tôi muốn đồng bộ hóa chúng với nhiều máy tính. Tôi đã sử dụng giải pháp của bạn trong vimrc của tôi và sử dụng liên kết faq @ChristianBrabandt được đăng bên dưới câu hỏi của tôi và nó hoạt động. Tôi sẽ chỉnh sửa câu hỏi của tôi để bao gồm giải pháp của tôi.
wullxz

4

Vấn đề thụt lề xuất phát từ ftplugin, tải tệp .vim từ /usr/share/vim/vim-version-/ftplugin/-filetype-.vimđó ghi đè lên bất cứ thứ gì bạn có trong .vimrctệp của mình . bạn có thể tìm ra tập tin đó ở đâu bằng cách chạy lệnh sau bên trong vim :verbose set tabstop?. Đầu ra sẽ chỉ cho bạn tập tin ghi đè cấu hình của bạn.

Trong trường hợp của tôi, tôi đã gặp vấn đề với cấu hình thụt đầu trăn.

Một cách dễ dàng để giải quyết điều này là làm như sau:

Tạo thư mục .vim trong thư mục nhà của bạn (nếu bạn không có nó)

cd ~/.vim
mkdir -p after/ftplugin/
cd ~/.vim/after/ftplugin/
vim python.vim

Thêm những điều sau:

setlocal noexpandtab shiftwidth=4 softtabstop=4 tabstop=4

Sửa đổi bất cứ điều gì bạn muốn trong lệnh. Của tôi trông như thế bởi vì tôi làm việc với các tab thay vì khoảng trắng.

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.