2009-05-19 37 views

Trả lời

35

Bạn có thể lập bản đồ cú đúp mở theo ý thích của bạn:

:imap (()<left> 
+4

Các plugin được đề cập trong các câu trả lời khác có lợi thế là hoạt động "thông minh" khi nhập vào đóng ")" tương ứng. Nếu điều này là không cần thiết, sau đó tôi cũng sẽ đi với các bản đồ chuyển tiếp straigt. – user55400

+0

Một số plugin cũng: - không mở rộng trong các bối cảnh chuỗi và nhận xét, - xác định cách bao quanh vùng chọn bằng một cặp ngoặc vuông, - chèn một trình giữ chỗ/điểm đánh dấu để nhảy qua khung đóng (nhất quán với hầu hết các đoạn mở rộng các đoạn mã/mẫu). –

+0

Có cách nào để thực hiện điều đó ở cuối dòng không? Đôi khi nó khó chịu hơn hữu ích nhưng với điều này, tôi sẽ sử dụng nó vui vẻ ... – alexpinho98

31

Cố gắng sử dụng AutoClose plugin.

+8

Không được nhầm lẫn với khác, ít hung hăng (và ít gây phiền nhiễu, IMO), [AutoClose] (http: //www.vim. org/scripts/script.php? script_id = 2009) bởi Thiago Alves. –

+2

@AndrewMarshall +1, phiên bản được liệt kê của bạn ít gây phiền nhiễu hơn nhiều. Tôi đến đây tìm kiếm một giải pháp thay thế cho câu trả lời của Mykola vì đó là một câu hỏi. –

+0

FYI, Plugin này có vẻ hoạt động tốt nhưng đối với tôi, nó đã giới thiệu hành vi "laggy" ''. Vì vậy, tránh nếu bạn quan tâm về điều này. –

8

Có nhiều mẹo và plugin về chủ đề này. Hãy xem relevant entry trong trang web vimtips.

11

tôi cần một quá, và tôi đã cố gắng một vài trong số các plug-ins:

Tự động đóng, http://www.vim.org/scripts/script.php?script_id=1849, là một chút hung hăng.

cặp đơn giản, http://www.vim.org/scripts/script.php?script_id=2339, tùy thuộc vào Python. Nếu bạn đang sử dụng Linux, nó không phải là vấn đề, nhưng trên Windows nó có thể là một rắc rối để phù hợp với phiên bản Vim với trình thông dịch Python mà bạn có.

Lời khuyên của tôi sẽ là ClosePairs, mà bạn có thể tìm thấy tại http://www.vim.org/scripts/script.php?script_id=2373 đã hoạt động hoàn hảo cho tôi. Nó rất đơn giản và hữu ích.

1

Có sự cố khi sử dụng tính năng này (thông qua imap hoặc một trong các tập lệnh). Bạn sẽ không thể lặp lại bản chỉnh sửa hoàn chỉnh bằng cách sử dụng lệnh ..

e.g. (foo) with . only gets you foo, without the brackets.

Nó hoạt động tốt nếu bạn chèn khung bình thường, như hai nhân vật.

3

Kiểm tra plugin mới này: vim-autoclose by Townk. Các đề cập trước đây AutoClose là để tích cực, đôi khi hành xử một cách không mong muốn.

13

Câu trả lời đơn giản nhất là bao gồm một bản đồ. Eg .:

:inoremap (()<left> 

Vấn đề là bạn sẽ cần phải thêm một mục nhập cho mỗi biểu tượng bạn muốn tự động đóng lại ('{', '[', '"', vv). Bên cạnh đó, các plugin thường hơn thông minh, cung cấp những thứ như phát hiện "đóng cửa" nhân vật và không lặp lại nó.

vấn đề với giải pháp trên và nhất plugins, là họ có xu hướng phá vỡ chuỗi undo (gundo ai?), như được giải thích trong :help ins-special-special .

Dưới đây là danh sách các plugin mà những gì bạn yêu cầu (từ vimtips):

  • delimitMate bởi Israel Chauca Fuentes (cấu hình, và không phá vỡ undo/redo/lặp lại, nhưng - phá vỡ iabbr) cũng trên GitHub
  • AutoClose bởi Karl Guertin (tự động đóng lại ký tự mã hóa cứng cụ thể, nhưng không phá vỡ undo/redo/repeat)
  • AutoClose bởi Thiago Alves (cấu hình, nhưng phá vỡ undo/redo/repeat)
  • auto-pairs Auto cặp bởi Miao Giang (cấu hình, nhưng phá vỡ undo/redo/repeat)
  • ClosePairs bởi Edoardo Vacchi (cấu hình, nhưng phá vỡ undo/redo/repeat)
  • smartinput bởi Kana Natsuno (cấu hình, nhưng phá vỡ undo/làm lại/lặp lại)

Bên cạnh vimtips, có another nice explanation of the issue trên web.

+2

Đối với bất kỳ ai khác tìm thấy điều này trong tương lai, tôi chỉ bắt đầu sử dụng các cặp tự động và trừ khi tôi hiểu thuật ngữ sai, nó không làm hỏng hoàn tác hoặc lịch sử của tôi. Tốt nhất trong danh sách này! Nó cũng xử lý việc xóa các cặp trên backspace! – Lethjakman

+0

Phiên bản Vim nào? Thời gian qua tôi đã kiểm tra vẫn không có một giải pháp cho phép hoàn tác/làm lại/lặp lại công việc một cách chính xác với tự động đóng trong Vim 7,4 trở đi. Một vài plugin đã bị hack bằng cách sử dụng setline() hoạt động trong các phiên bản Vim trước đó. – Ben

5

Tôi hiện đang sử dụng auto-pairs và hoạt động khá tốt.

Các vấn đề của việc ngắt plugin hoàn tác/làm lại/lặp lại dường như vẫn tồn tại giữa một số plugin được liệt kê ở trên nhưng tôi không nghĩ nhiều vấn đề (tốt, ít nhất là không với tôi vào lúc này).

Mặc dù vậy, tôi không thể sử dụng: helptags để tạo tệp trợ giúp với plugin này tại thời điểm viết bài này.

0

Có một plugin mới bằng cách cohama:

lexima.vim (github)

(chưa vào vim.org)

Plugin này hỗ trợ các lệnh .!
Afaik, đây là plugin duy nhất hỗ trợ tính năng này.

Trình tự hoàn tác/làm lại cũng hoạt động.

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