2011-10-25 22 views
6

Tôi mới dùng Vim và cố gắng thiết lập một số plugin. Cho đến nay tôi đã cài đặt mầm bệnh, pyflakes và supertab. Cái thứ hai dường như không hoạt động; nhấn tab trong khi ở chế độ chèn, chỉ cần viết chuỗi <Plug>SuperTabForward.Vim: đặt langmap = e; h ngắt plugin supertab

Vấn đề chỉ xảy ra với các dòng sau trong vimrc của tôi (để điều hướng tốt hơn sử dụng bố trí Colemak):

set langmap=hjklneiHJKLNEI;kniejhlKNIEJHL 

Nếu không có dòng trên nó hoạt động tốt. Sau khi thử nghiệm thêm, tôi đã thu hẹp nó xuống set langmap=e;h. Dòng đơn này phá vỡ supertab.

Tôi hoàn toàn quá thiếu kinh nghiệm với Vim để có ý tưởng mờ nhạt nhất về những gì đang diễn ra hoặc cách khắc phục. Ngay cả một workaround sẽ được quan tâm.

+0

Tôi có cùng một vấn đề. – porgarmingduod

+0

Tôi nghĩ rằng vấn đề của bạn tương tự như [vấn đề này] (http://stackoverflow.com/questions/8464534/entering-text-in-snippet-fields-uses-wrong-character-when-using-langmap/8471492#8471492). – romainl

+0

@romainl: Trên thực tế, liên kết đó đã khiến tôi thử cách giải quyết khác (mà tôi đã đăng dưới dạng câu trả lời bên dưới). Nó mang lại nhiều câu hỏi hơn là câu trả lời mặc dù, và tôi sẵn sàng trao giải thưởng cho bất cứ ai có thể giải thích. – porgarmingduod

Trả lời

2

tôi đã tìm ra một cách giải quyết: Editing supertab.vim, thay thế các trường hợp <Plug>SuperTab với <P>P, gây ra chuỗi như <Plug>SuperTabForward để trở thành <P>PForward.

Tôi cho rằng nó hoạt động vì các chuỗi đó không còn bao gồm bất kỳ chữ cái nào có liên quan đến set langmap=hjklneiHJKLNEI;kniejhlKNIEJHL. Một số vấn đề vẫn chưa được giải quyết. Langmap có bị lỗi không? Đối với tôi có vẻ như tùy chọn tồn tại một cách rõ ràng để cho phép lập bản đồ mà tác chỉ lệnh:

When you are typing text in Insert mode the characters are 
inserted directly. When in command mode the 'langmap' option takes 
care of translating these special characters to the original meaning 
of the key. This means you don't have to change the keyboard mode to 
be able to execute Normal mode commands. 

Nó làm cho không có ý nghĩa với tôi vậy bao giờ, sau đó, rằng sự hiện diện của một nhân vật langmap ánh xạ trong một chuỗi imap, đó là những gì một ánh xạ chế độ chèn, tạo ra bất kỳ sự khác biệt nào. Nếu có, nó sẽ ngẫu nhiên ngắt bất kỳ plugin nào như SuperTab sử dụng chuỗi dài imap. Chỉ để minh họa sự khác biệt này, nếu tôi làm imap no yes, viết jo là cần thiết để kích hoạt. Tôi không có ý tưởng làm thế nào logic đằng sau đó hoạt động.

+0

Nếu bạn có 'set showmode', bạn có thấy ngay cả một' - SELECT --' ngắn gọn trong dòng lệnh khi bạn nhấn ' '? – romainl

+0

Không xa như tôi có thể nói. Nó nói '- INSERT --' và rất ngắn gọn' = 17_SuperTab ('n') 'mà tôi chỉ nhận thấy bằng cách giữ phím' '. Đó là tất cả. – porgarmingduod

0

tôi đã cùng một vấn đề, nhưng việc này không phù hợp với trường hợp của tôi, vì vậy tôi đăng câu hỏi của riêng tôi và một người nào đó làm một bản vá mà sửa chữa nó:

Vim langmap breaks plugin (bépo)

https://groups.google.com/forum/#!msg/vim_dev/QnNwLWhJ744/1qNcD7d9OvgJ (xem các tin nhắn cuối cùng)

Bản vá này giới thiệu một cài đặt mới: langnoremap trong đó, khi được đặt, ngăn chặn langmap khỏi ảnh hưởng đến ánh xạ như vậy.

Có thể cần một số thử nghiệm khác và có thể không được bao gồm trong vim rất sớm, nhưng có vẻ như hoạt động khá tốt!

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