15

米国以外のテキストを書くためにvimを使用することがあります。通常モードでコマンドを使用する場合は、レイアウトを米国に変更する必要があります。それを自動的に行うことは可能ですか?

PS。私はこのようにマッピングを行うことができますが、この場合、コマンドは:цの代わりに:wのようになります-きれいではなく、タイプミスのリスクがあります。

アップデート

CapsLockによる言語の切り替えを好むため、キーマップオプションは使用しません。InsertLeaveイベントのautocmdを書き込もうとしましたが、失敗しました...

アップデート2

おそらく誰もが知っている、なぜ以下が機能しないのですか?

function SetUsLayout()
  !setxkbmap us,ru
endfunction

autocmd InsertLeave * call SetUsLayout()
4

4 に答える 4

5
:help langmap

必要なすべての情報を提供する可能性があります。

于 2012-06-11T16:17:27.043 に答える
4

そのクロスプラットフォームソリューションは存在しないようです...したがって、KDEでは次を使用します。

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

autocmd InsertLeave * call SetUsLayout()
于 2012-06-12T09:47:45.300 に答える
1

私にとっては、qdbus を使用するのが最良の選択肢です。私は、私にとって非常にうまく機能するシンプルだが壊れやすいプラグインを作成しました:

他の誰かが使用したい場合、堅牢性があまりないため、私はそれを壊れやすいと呼んでいます。

いくつかの例外を除いて、Vim を使用しているときは主に英語が必要です。母国語で書きたいときは、'leader'-k を押すと、航空会社のステータス バーに言語を切り替えたことが表示されます。言語が英語でない場合、スクリプトは、挿入モードに入るたびに、qdbus を介して母国語が設定されるようにします。挿入モードを終了するたびに、言語は英語に戻ります。また、バッファ間の個別設定にも対応しています。これは最善の方法ではないかもしれませんが、他の誰かがそれを利用する可能性がある場合に備えて、共有したいと思いました.

于 2014-09-13T11:01:45.463 に答える
0

Ubuntuでは、次を使用します。

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()

またはそれより短い

silent !gsettings set org.gnome.desktop.input-sources current 0  
于 2016-03-19T21:40:30.107 に答える