2012-06-11 34 views
11

Đôi khi tôi sử dụng vim để viết văn bản không phải của Hoa Kỳ và khi tôi muốn sử dụng bất kỳ lệnh nào trong chế độ bình thường, tôi cần thay đổi bố cục sang Hoa Kỳ. Có thể làm điều đó tự động?Làm thế nào để tự động thay đổi bố cục bàn phím khi chuyển sang chế độ bình thường vim?

PS. Tôi có thể lập bản đồ như this, nhưng trong trường hợp này, lệnh này trông giống như: ц thay vào đó: w - không khá và có lỗi đánh máy.

Cập nhật

Tôi không muốn sử dụng tùy chọn keymap, bởi vì tôi thích ngôn ngữ chuyển đổi bởi CapsLock. Tôi đã cố gắng viết autocmd cho sự kiện InsertLeave, nhưng thất bại ...

Cập nhật 2

Có lẽ bất cứ ai biết, tại sao sau không làm việc?

function SetUsLayout() 
    !setxkbmap us,ru 
endfunction 

autocmd InsertLeave * call SetUsLayout() 
+0

Câu trả lời ở đây là có liên quan: http://stackoverflow.com/a/3777557/329063 – glts

+0

Xem [câu trả lời của tôi ] (http://stackoverflow.com/a/8152137/254635) cho một câu hỏi tương tự "[Vim" phiền toái "với bố trí bàn phím] (http://stackoverflow.com/q/8015231/254635)" chứ không phải là một được liên kết trong nhận xét trước, vì nó bao gồm cả vấn đề tương tự và nó là kỹ lưỡng hơn. –

+0

Tôi đã viết trong Bản cập nhật, không muốn sử dụng tùy chọn sơ đồ bàn phím, vì không thể ánh xạ CapsLock trong vim. – Kulti

Trả lời

3

Hình như, mà nền tảng giải pháp không tồn tại ... Vì vậy, dưới KDE tôi sử dụng như sau:

function! SetUsLayout() 
    silent !qdbus org.kde.keyboard /Layouts setLayout us > /dev/null 
endfunction 

autocmd InsertLeave * call SetUsLayout() 
4
:help langmap 

là khả năng cung cấp tất cả các thông tin bạn cần.

+0

"Ký tự được nhập ở chế độ Dòng lệnh sẽ KHÔNG bị ảnh hưởng bởi tùy chọn này". Vì vậy, hjkl hoạt động tốt, nhưng lệnh không. – Kulti

+0

Điều này đề cập đến những gì bạn đã yêu cầu: các lệnh chế độ thông thường. Xem ': sơ đồ bàn phím trợ giúp' cho chế độ lệnh. – romainl

+0

Ok, tôi có thể đặt keymap = russian-jcukenwin, nhưng để chuyển sang Hoa Kỳ, tôi cần sử dụng ctrl +^(hoặc bản đồ bất kỳ khác), nhưng không phải là CapsLock rất tiện lợi. – Kulti

0

Đối với tôi, sử dụng qdbus là lựa chọn tốt nhất. Tôi đã tạo một plugin đơn giản nhưng dễ vỡ hoạt động thực sự tốt cho tôi: https://github.com/ironhouzi/bikey-vim/tree/master/plugin

Tôi gọi nó là mong manh, vì nó không có nhiều sức mạnh nếu nó muốn sử dụng nó.

Tôi chủ yếu muốn tiếng Anh khi tôi đang sử dụng Vim, với một vài ngoại lệ. Khi tôi muốn viết bằng ngôn ngữ mẹ đẻ của mình, tôi nhấn 'leader'-k và thanh trạng thái hãng hàng không của tôi sẽ cho thấy rằng tôi đã chuyển sang ngôn ngữ. Khi ngôn ngữ không phải là tiếng Anh, kịch bản sẽ đảm bảo rằng mỗi lần tôi vào chế độ chèn, ngôn ngữ mẹ đẻ của tôi được đặt thông qua qdbus. Mỗi lần tôi rời chế độ chèn, ngôn ngữ được đặt trở lại tiếng Anh. Nó cũng hỗ trợ cài đặt riêng giữa các bộ đệm. Mặc dù đây có thể không phải là cách tốt nhất để làm mọi thứ, tôi nghĩ tôi sẽ chia sẻ nó, trong trường hợp người khác có thể sử dụng nó.

0

Trong Ubuntu tôi sử dụng như sau:

function! SetUsLayout() 
    silent !qdbus org.gnome.SettingsDaemon.Keyboard /org/gnome/SettingsDaemon/Keyboard org.gnome.SettingsDaemon.Keyboard.SetInputSource 0 > /dev/null 
endfunction 

autocmd InsertLeave * call SetUsLayout() 

hoặc ngắn hơn

silent !gsettings set org.gnome.desktop.input-sources current 0 
Các vấn đề liên quan