VisualStudio スニペット フォーカスを設定してみる

こんにちは。レモンティーです。

XamalinでGridを使うと
画面を分割して
レイアウトができます。

…しかし、やってることのわりに長いです。
すでに楽な書き方がある場合は教えて欲しいくらいです。

と、いうわけで今回は…

sawalemounity.hatenablog.com

↓を↑の記事の手順でスニペットに登録したよ
…って記事です。内容はここまでですが以下ぐだぐだ続きます笑

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippet Format="1.0.0">
  <Header>
    <Title>GridPosition</Title>
    <Shortcut>gr</Shortcut>
  </Header>
  <Snippet>
    <Declarations>
      <Literal>
        <ID>RowNumber</ID>
        <Default>0</Default>
      </Literal>
      <Literal>
        <ID>ColumnNumber</ID>
        <Default>0</Default>
      </Literal>
    </Declarations>
    <Code Language="xaml">
      <![CDATA[
      Grid.Row="$RowNumber$" Grid.Column="$ColumnNumber$"
      ]]>
    </Code>
  </Snippet>
</CodeSnippet>

そもそも
Grid="1,2"とかって書けたらいいんですけど
Grid.Row="1" Grid.Column="2"
のように書く必要があります。

VisualStudioのすごく優秀な推測・補完機能で実際には
g r Enter r Enter 1 Space g r Enter c Enter 2
みたいにだいたい13回くらいで入力できますし、
0なら省略できるらしいので実際にはもっと減りますが…

それでも縦横を別々に指定するのとか
なんかモヤモヤしませんか?

このスニペットなら
g r Tab 1 Tab 2
の6回入力でOKです。

フォーカスとか言ってるのは
で指定したやつを
コード中に$で囲んで登場させれば
その部分にTabキーでフォーカスできる機能のことです。
なんか正式な名前があるかも。

フォーカスしてると色が変わり、そのまま文字を変えられます。
カーソルを合わせたりデフォルトの文字を消したりする手間がかかりません。

なのでこのスニペットを使うとこんな感じです

g r
f:id:sawalemontea:20171120032120p:plain

Tab
f:id:sawalemontea:20171120032131p:plain
この時点でRowの方がフォーカスされていますね。

1
f:id:sawalemontea:20171120032213p:plain

Tab
f:id:sawalemontea:20171120032227p:plain
フォーカスが切り替わります。
ぬけなければ何回押してもぐるぐる周回します。

3
f:id:sawalemontea:20171120032347p:plain
まあ今回は素直に値を入れます

Enter
f:id:sawalemontea:20171120032424p:plain
これでフォーカス状態を抜けました。
カーソルは元の位置です。簡単に書けましたね。


欲をいえばスニペットで引数みたいなのが使えればいいんですが…。
その場合、定義のほうもずいぶん書きやすくなりますね。

grnm Tab で

Grid.Row="n" Grid.Column="m"

grdnm Tab で

<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
…がn個でる
</Grid.RowDefinitions>

<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
…がm個でる
</Grid.ColumnDefinitions>

みたいな。
やり方知ってる人がいたらぜひ教えてください

今回はこれでおしまいです