vimの「replacewithcharacter」コマンドの代わりを探しています。具体的には、テキストを選択して、各文字を入力した文字に置き換えられるようにしたいです(難易度:「ビンテージ」モードなし)
例:
で始まります
I am some text with an arbitrary number: 12358998281
簡単に選択12358998281
して変換し99999999999
、結果を出す方法が欲しい
I am some text with an arbitrary number: 99999999999
(vimでは、これはカーソルをの先頭に移動し、12358998281
で選択してve
からを押すことで実行されますr9
)
これを行うには、テキストを選択し、[検索]ダイアログを表示し、[選択中]と[正規表現による]が有効になっていることを確認し、。を検索して、結果の複数選択に文字を入力します。ただし、これは非常に面倒で12358998281
あり、複数選択でこのプロセスを実行できません(たとえば、ファイルの複数の部分に存在する場合、99999999999
上記のプロセスを実行するのではなく、すべてのインスタンスをすばやく置き換えることができます。置換を取得し、クリップボードにコピーしてから、それと置き換えます)。
Sublimeには、何かにバインドできるvimの「置換」のように機能するコマンドがありますか、それとも必要なものを取得するためにマクロを作成する必要がありますか?または、私はこれに完全に間違った方向からアプローチしていますか?
これについてのより一般的な考え方は、「すべての文字で選択を複数選択に分割するにはどうすればよいですか」です。
私はこれを単純な(エレガントでない場合)プラグインで解決することになりました:
import sublime_plugin
import sublime
class MultiSelectWithinSelectedCommand(sublime_plugin.TextCommand):
def run(self, edit):
selection = self.view.sel()
new_regions = []
for selected_region in selection:
if selected_region.empty():
selection.add(self.view.word(selected_region))
for selected_region in selection:
if selected_region.a > selected_region.b:
region_begin = selected_region.b
else:
region_begin = selected_region.a
for pos in range(selected_region.size()):
subregion_begin = region_begin + pos
subregion_end = subregion_begin + 1
new_regions.append(sublime.Region(subregion_begin, subregion_end))
selection.clear()
selection.add_all(new_regions)
これをプラグインディレクトリに貼り付けたら、通常のようにキーマップファイルのコマンドをバインドします。
{ "keys": ["alt+f"], "command": "multi_select_within_selected" }
(alt + fを任意に選択)、およびlo、キーを押すことで選択したすべての文字を複数選択します(その後、置換文字を押すことができます)。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加