2010-09-10 26 views
46

Tôi thích sử dụng tab hơn white space (có thể là một chút khác biệt so với hầu hết những người khác)Làm thế nào để sử dụng chỉ tab (không gian) trong vim

Nhưng tôi thấy, khi tôi nhấn Enter vào cuối dòng, nó sẽ thêm một số khoảng trắng, nhưng không phải tab. Vì vậy, tôi phải xóa chúng và nhấn tab.

Tôi muốn biết làm thế nào để thiết lập vim như:

  1. sử dụng chỉ tab để thụt dòng
  2. một tab trông giống như 4-không gian, nhưng thực sự là một tab
  3. khi hit enter ở cuối dòng, dòng mới chỉ được bắt đầu bằng các tab

Tôi đã tìm kiếm được điều này một lúc nhưng không tìm thấy câu trả lời hay. Cảm ơn bạn trước


CẬP NHẬT

Câu trả lời @Alok đã cung cấp hoạt động tốt trong hầu hết các trường hợp. Nhưng tôi chỉ tìm thấy, đôi khi, nó phụ thuộc vào loại tệp. Ví dụ: nếu bạn đang chỉnh sửa tệp haml và có haml.vim trong số vimfiles/indent/, thì tất cả các tab sẽ được chuyển đổi thành space. Vì vậy, nếu bạn muốn nó là tab chỉ, bạn nên sửa đổi (hoặc xóa) tệp thụt lề tương ứng.

+0

Thay vì sửa đổi tập tin cài đặt, hãy thử đặt các thiết lập trọng của bạn trong '$ HOME/vimfiles/sau/indent/haml.vim'. Xem ': help after-directory' để biết thêm thông tin. – Nefrubyr

+2

Thông thường có các tùy chọn tab/không gian khác nhau cho các loại tệp khác nhau. Kiểm tra screencast của tôi qua tại Vimcasts.org, trong đó cho thấy làm thế nào để [thiết lập khoảng trắng sở thích cho các loại tập tin khác nhau] (http://vimcasts.org/episodes/whitespace-preferences-and-filetypes/). Giải pháp này sử dụng vimrc của bạn, nhưng nếu bạn muốn thiết lập rất nhiều loại tệp khác nhau, bạn có thể thích sử dụng thư mục sau, theo đề xuất của Nefrubyr. – nelstrom

+0

Thủ thuật/sau/thụt lề cũng hoạt động để loại bỏ những khoảng trống pesky trong các tệp python, tệp vi phạm để xem là ftplugin/python.vim, chỉ sao chép dòng có setlocal và sao chép nó vào tệp trống theo đề xuất của @ Nefrubyr, chỉnh sửa và khôi phục sự tỉnh táo. – Paul

Trả lời

61

Các thiết lập bạn đang tìm kiếm là:

set autoindent 
set noexpandtab 
set tabstop=4 
set shiftwidth=4 

Như dòng duy nhất:

set autoindent noexpandtab tabstop=4 shiftwidth=4 

autoindent có thể được thay thế bằng smartindent hoặc cindent, phụ thuộc vào thị hiếu của bạn. Xem thêm filetype plugin indent on.

http://vim.wikia.com/wiki/Indenting_source_code

+0

Như @freewind đã nói, nó không hoạt động tốt khi làm việc với các tệp '.haml'. Trong trường hợp của tôi, tôi sử dụng ** vim janus ** và tôi chỉ thêm dòng đơn đề xuất nhưng nó không hoạt động đối với các tệp 'haml'. Bất kỳ ý tưởng? –

+0

Thêm 'softtabstop = -1'. – Walf

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