Sublime Text 3 + Vintageでロシア語のテキストを簡単に操作できます

最近開始した場合:1)Sublime Textを使用する、および/または2)Vintageプラグインを使用する、および/または3)ST3 + Vintageを使用してロシア語(またはその逆)で多くのテキストを編集する場合、おそらくどのような痛みがコマンドに関連付けられているかをすでに感じている「$」、「;」、「。」、「、」、「」」などの句読点文字に割り当てられます。カットの下の短いメモで、この痛みを大幅に軽減するのに役立つ松葉杖をいくつか提供したいと思います。







おそらく、ビンテージプラグインの重要な部分は、プラグインに実装するための標準Vimコマンドの多数のバインダーであることを知らなかったでしょう。たとえば:







{ "keys": [";"], "command": "set_repeat_move_to_character_motion", "context": [{"key": "setting.command_mode"}] },
      
      





したがって、上記の問題は、このバインディングが4 / $ /キーが押されたかどうかを知らないという事実に根ざしています。 (および「行末」で実行する必要があります)または; / f /:(および「文字の検索を繰り返す」を実行する必要があります)。 つまり、実際には、バインディングは現在のレイアウトを認識しません。 プラグインが現在のレイアウトを伝えることができれば、すべてが素晴らしいでしょう。







そして、このヒントを作成することが可能であることがわかりました-このため、バインダーには設定を調べることができる「コンテキスト」があります:







 {"key": "setting.is_rus"}
      
      





このトリックを使用して、シンボル「;」の動作を変更できます。 「is_rus」設定がtrueに設定されている場合のみ、「行末」になります。







  { "keys": [";"], "command": "set_motion", "args": { "motion": "vi_move_to_hard_eol", "motion_args": {"repeat": 1, "extend": true}, "inclusive": true, "clip_to_line": true }, "context": [{"key": "setting.command_mode"},{"key": "setting.is_rus"}] }
      
      





残念ながら、このソリューションは理想的ではありません。ロシア語と英語のテキストがほぼ同じ量のファイルを編集している場合、いずれかの言語が影響を受けます。 さらに、少なくとも30分ごとに異なる言語のファイル間で切り替える場合、毎回設定に登ることはあまり便利ではありません。







もちろん、システムレイアウトを自動的に確認して値「is_rus」を追加する行をさらに2つ紹介します。 しかし、今はどうすればいいのかわかりません。おそらく後でそれを見つけて、間違いなく結果を共有するでしょう。







それでも、私はあなたのために2番目の松葉杖を持っています。これにより、この痛みを大幅に軽減できます。 これは「toggle_setting」コマンドに基づいており、指定したブール設定を切り替えることができ、F8でハングします。







  { "keys": ["f8"], "command": "toggle_setting", "args": {"setting": "is_rus"} }
      
      





その結果、おおよそ次の作業方法を提案します。コードを記述し、チームの1つでつまずき、チームメイト、F8キーを押す、静かに作業します。 30分後、Habrに関する記事の執筆を開始し、チームの1つに出会い、matyat、F8キーを押して、記事を静かに追加します。







ベースとして、この松葉杖セットを開いた後につまずいたバインダーをあなたと共有します:







  { "keys": ["\"", "<character>"], "command": "vi_replay_macro", "context": [{"key": "setting.command_mode"},{"key": "setting.is_rus"}] }, { "keys": [";"], "command": "set_motion", "args": { "motion": "vi_move_to_hard_eol", "motion_args": {"repeat": 1, "extend": true}, "inclusive": true, "clip_to_line": true }, "context": [{"key": "setting.command_mode"},{"key": "setting.is_rus"}] }, { "keys": ["."], "command": "show_panel", "args": { "panel": "incremental_find", "select_text": false, "reverse": false }, "context": [{"key": "setting.command_mode"},{"key": "setting.is_rus"}] }
      
      





誰かがこの問題に対してより成功した解決策を提供できる場合は、コメントで教えてください。







ロシア語文字のバインディングを備えた PS Ready構成








All Articles