2013-03-13 26 views
6

Tôi đã tắt line wrap trong Vim bằng cách thêm này trong vimrc của tôi:Làm thế nào để kích hoạt dòng bọc chỉ cho một số loại tệp trong Vim?

set nowrap 

Nhưng, tôi muốn có dòng bọc bật tự động khi tôi đang chỉnh sửa *.tex tập tin. Vì vậy, tôi đã thêm điều này vào vimrc của tôi:

augroup WrapLineInTeXFile 
    autocmd! 
    autocmd FileType tex set wrap 
augroup END 

Điều này sẽ bật dòng bọc khi phát hiện loại tệp là TeX. Điều này làm việc như mong đợi cho các tập tin tex, nhưng nếu tôi mở một tập tin không phải tex trong cùng một phiên Vim, nó có dòng bọc bật!

Enabling and disabling word wrap automatically on different file extensions on Vim đề xuất sử dụng BufRead thay thế. Tuy nhiên, ngay cả khi có hiệu ứng tương tự: nếu tôi lần đầu tiên mở một tệp TeX, theo sau là một tệp không phải TeX, tệp không phải TeX đã bật tính năng ngắt dòng.

Làm cách nào để bật gói dòng chỉ cho một loại tệp nhất định?

Trả lời

5

Bạn có thể sử dụng setlocal cho việc này. Nó sẽ chỉ ảnh hưởng đến bộ đệm hiện tại.

augroup WrapLineInTeXFile 
    autocmd! 
    autocmd FileType tex setlocal wrap 
augroup END 

Điều đó sẽ được áp dụng cho mọi bộ đệm TeX mới.

+0

Jim: Tôi không biết lệnh setlocal. Cảm ơn! –

3

Tùy chọn 'wrap'địa phương đến cửa sổ. Khi bạn sử dụng :set, nó cũng sẽ áp dụng cho bất kỳ cửa sổ mới mở nào. Bạn muốn sử dụng :setlocal.

Ngoài ra, mặc dù các công trình :augroup WrapLineInTeXFile của bạn hoạt động, nó cồng kềnh và không quy mô nhiều cài đặt. Nếu bạn có :filetype plugin on trong số ~/.vimrc, bạn có thể đặt các cài đặt cụ thể cho kiểu tệp (như :setlocal wrap) trong ~/.vim/after/ftplugin/tex.vim (sử dụng thư mục sau khi cho phép bạn ghi đè bất kỳ cài đặt kiểu mặc định nào được thực hiện bởi $VIMRUNTIME/ftplugin/tex.vim).

+0

Ingo: Mặc dù tôi không cần nó trong trường hợp này, gợi ý của bạn rất hữu ích nếu tôi tiếp tục tích lũy các cài đặt trong vimrc của tôi :-) –