LoginSignup
26
21

More than 5 years have passed since last update.

Xcode10からマルチカーソル機能が使えるようになったぞ

Posted at

タイトルの通りなのですが、Xcode10からついにマルチカーソル機能が使用できるようになりました。
今までも ⌘+Control+E (Use Selection for Replace) でマルチカーソルもどきは使用できたのですが、本格的なマルチカーソルは今回が初です

コマンド

Select Column Up(Down) Shift+Control+↑ Shift+Control+↓

Untitled.gif

(ダブルクォーテーションの補完が1行目のほうしかできてない😅)

上または下の行にカーソルを複製する。

このコマンドだけ唯一デフォルトでショートカットキーが設定されています。他のに関してはデフォルトだと設定されてないので自分で設定しないといけません

Select All Symbols

Untitled2.gif

同じシンボルをすべて選択してカーソルを割り当てる。

これによる選択はただ文字列が一致しているかを見ているのではなく、コードとして別の意味を持ったシンボルであれば選択されないようになっています。
例えば、上の例だとtextLabel.text.text部分でこのコマンドを実行しても、下の.textColorのtextは選択されません。
つまるところ既存の ⌘+Control+E (Use Selection for Replace) と同じように見えます。どこに差分があるのだろう?

Split Selections By Lines

Untitled3.gif

選択されている範囲を行ごとに分割する感じです。どういうときに使うんだろう?画像ではCSVとかから雑多にコピペした想定で行末が揃ってない文字列をトリムしてみましたが、あんまり使う機会ないような?

Balance Delimiters

Untitled4.gif

字面からは意味がよくわからないですが、現在のカーソル位置の外側にある括弧を選択するっぽい挙動をします。これはマルチカーソル関係ないですね。

これもどういった場面で有用なのでしょう?長い関数があってその始点を知りたいときとか、まるっと削除したいときとか?

おわり

Xcode10で追加されたカーソル選択範囲まわりの機能を紹介しました。ようやく実装されたマルチカーソル、便利なのでぜひ使って開発効率向上させましょう。

ちなみにXcodeSourceEditorExtensionでは以前から XCSourceTextBuffer に複数の選択範囲(XCSourceTextRange) を渡すことができましたが、Xcode9以前では渡しても意味がありませんでした。
ところがXcode10では渡した部分がきちんとカーソルに反映されるようになったため、Sublimeなどのような押した回数だけ選択部分が増えるタイプのマルチカーソルもXcodeSourceEditorExtensionを用いれば作れそうでした。

26
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
21