2009-02-11 26 views
13

Điều này đã bugged tôi trong một thời gian dài, và cố gắng như tôi có thể tôi không thể tìm thấy một cách vòng nó.Làm thế nào để ngăn chặn Vim indenting gói văn bản trong ngoặc đơn

Khi tôi đang chỉnh sửa văn bản (đặc biệt là mủ cao su, nhưng điều đó không quan trọng), tôi muốn nó tự động quấn ở 80 cột. Nó làm điều này, ngoại trừ nếu tôi xảy ra ở giữa một mệnh đề parenthetical, nó indents văn bản đó là rất gây phiền nhiễu. Ví dụ, công trình này tốt

Here is some text... over 
two lines. 

nhưng điều này không

Here is some text... (over 
         two 
         lines 

Nếu bất cứ ai có thể cho tôi biết làm thế nào để tắt chức năng này (chỉ cho các tập tin text/latex) Tôi muốn được thực sự biết ơn. Có lẽ nó có một cái gì đó để làm với thực tế rằng đây là hành vi mong muốn trong C, nhưng tôi vẫn không thể tìm ra những gì là sai.

Trả lời

12
:set nocindent 

Các tùy chọn khác không làm gì cả, và việc phát hiện filetype không thay đổi nó.

1

: đặt noai

đặt không tự động thụt lề có thể là smartindent. Kiểm tra các doc và xem nếu bạn có thể tìm thấy một cái gì đó hơn

http://www.vim.org/htmldoc/indent.html

+0

Không. Không khác nhau. – Draemon

+0

Hài hước, đây là người duy nhất làm việc cho tôi, ': bộ nocindent' không làm gì trong trường hợp của tôi. – FvD

3

Bạn có thể có một cái nhìn tại các tùy chọn autoindent:

autoindent - ai

Sao chép thụt lề từ dòng hiện khi bắt đầu một dòng mới (nhập trong chế độ Chèn hoặc khi sử dụng lệnh "o" hoặc "O"). Nếu bạn không nhập bất kỳ thứ gì trên dòng mới ngoại trừ rồi nhập hoặc , thụt lề sẽ bị xóa lại. Khi tính năng tự động bật, định dạng (với lệnh "gq" hoặc khi bạn đạt đến 'độ rộng văn bản' ở Chế độ chèn) sử dụng thụt lề dòng đầu tiên. Khi 'smartindent' hoặc 'cindent' trên thụt lề được thay đổi trong các trường hợp cụ thể . Tùy chọn 'tự động' được đặt lại khi tùy chọn 'dán' được đặt là . {Sự khác biệt nhỏ so với Vi: Sau khi thụt lề được xóa khi nhập hoặc, vị trí con trỏ khi di chuyển lên hoặc xuống là sau khi thụt lề đã xóa; Vi đặt con trỏ ở vị trí nào đó trong số đã xóa indent}.

+2

Ah. cindent dường như là thủ phạm. Tôi đã thử autoindent và smartindent nhưng họ không có sự khác biệt. Cách tốt nhất để thiết lập điều này cho các tệp văn bản/latex là gì? – Draemon

+1

nhìn vào câu trả lời khác của tôi, tôi nghĩ bạn sẽ có giải pháp với indent filetype. – claf

5

Có ba tùy chọn bạn có thể cần phải tắt: đặt noai, đặt nosi và setnocin (tự động, smartindent và cindent).

2

Từ chính thức Vim documentation

filetype Plugin thụt vào

này chuyển trên ba rất thông minh cơ chế:

  1. phát hiện Filetype. Bất cứ khi nào bạn bắt đầu chỉnh sửa tệp, Vim sẽ cố gắng tìm ra loại tệp này là. Khi bạn chỉnh sửa "main.c", Vim sẽ xem phần mở rộng ".c" và
    nhận ra đây là loại tệp "c". Khi bạn chỉnh sửa tệp bắt đầu bằng "#!/ Bin/sh", Vim sẽ nhận ra nó như một "sh" filetype Các phát hiện filetype được sử dụng cho các cú pháp nổi bật và hai
    các mặt hàng khác dưới đây Xem |.. Loại file |.

  2. Sử dụng Plugin filetype Nhiều loại tệp khác nhau được chỉnh sửa với các tuỳ chọn khác nhau, ví dụ:
    khi bạn chỉnh sửa tệp "c", rất hữu ích để đặt tùy chọn 'cindent' thành tự động thụt lề dòng.
    đi kèm với Vim trong các plugin filetype.Bạn cũng có thể thêm của riêng mình, xem
    | write-filetype-plugin |.

  3. Sử dụng tệp thụt lề Khi chỉnh sửa chương trình, thụt lề của một dòng có thể thường được tính tự động. Vim đi kèm với các quy tắc thụt lề này cho một số loại tệp. Xem |: filetype-indent-on | và 'indentexpr'.

+0

Tôi có những thứ này rồi. Dường như không thay đổi cindent – Draemon

+0

Tôi nghĩ rằng bạn nên cố gắng tìm một filetype-plugin đã viết bởi một người nào đó với cùng một vấn đề cho các tập tin latex, hoặc có thể bạn có thể cố gắng để viết một. – claf

+0

ah, ok. Tôi sẽ xem xét một latex và xem nếu nó dễ dàng để sửa đổi – Draemon

3

này có thể liên quan, khi dán từ gui vào cửa sổ terminal, vim có thể không phân biệt chế độ dán, như vậy để ngăn chặn bất kỳ điều kỳ lạ từ xảy ra:

set paste 

sau đó dán văn bản

set nopaste 

tôi có vấn đề tương tự khi cố gắng dán văn bản xml, nó sẽ chỉ tiếp tục thụt lề. :)

gvim, phiên bản gui của vim, có thể phát hiện chế độ dán.

+0

cho booleans sử dụng một! để chuyển đổi. theo cách đó bạn có thể sử dụng lịch sử lệnh:: set paste! :

+0

Đây là vấn đề tôi gặp phải. Cảm ơn! – HaskellElephant

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