Android Studioで便利だと感じた機能（ショートカットしまくろう！！）

## コメント

todo と入力するだけ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1630025/459a28d1-48c3-45e4-891a-af0eef81bfac.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1630025/2b3e1919-bf1d-8d89-07e2-536fc3f595c1.png)

fixme も同様


## main 関数

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1630025/9d55f467-c9d3-7dfb-ab49-fa8a503f63f0.png)


``` kotlin:main
fun main() {
    
}
```

``` kotlin:maina
fun main(args: Array<String>) {
    
}
```

## when


``` kotlin:Weather.kt
enum class Weather {
    Sunny, Cloudy, Rainy
}
```

以下のコードを一発で出す方法

``` kotlin
when (weather) {
    Weather.Sunny -> TODO()
    Weather.Cloudy -> TODO()
    Weather.Rainy -> TODO()
    null -> TODO()
}
```

### 1. ```.when``` を使う


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1630025/742ccdff-a97c-9303-c009-cab7c6e05589.png)


### 2. ```when (xxx) {}``` で「option + return」を押す

「Add remaining branches」を選択するだけ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1630025/4a07e8bd-e0bb-25f6-8d09-c5443b3711f3.png)


## 変数化

### 1. ```.val```

```weather?.name ?: ""``` まで書いて変数に入れておきたかった場合

.val を使う
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1630025/8cbfedae-0f91-5dd6-02ed-7d873d12355b.png)


変数にしたい範囲を選択して
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1630025/7673aabe-c2a6-acc2-e120-5334827a4e89.png)


変数名を付けるだけ！！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1630025/10657294-1dc9-94d2-c753-38ecdcc6617a.png)

### 2. 「option + command + v」

``` kotlin
@Composable
fun Training() {
    Column(
        modifier = Modifier.fillMaxWidth(),
    ) {
        TextButton(
            onClick = {},
            colors = ButtonDefaults.textButtonColors(
                contentColor = Color.Red,
                containerColor = Color.Yellow,
            ),
        ) {
            Text(text = "ボタン1")
        }

        Button(
            onClick = {},
            colors = ButtonDefaults.textButtonColors(
                contentColor = Color.Red,
                containerColor = Color.Yellow,
            ),
        ) {
            Icon(
                imageVector = Icons.Outlined.Star,
                contentDescription = "",
                modifier = Modifier.padding(end = 8.dp)
            )

            Text(text = "ボタン2")
        }
    }
}
```

以下のようにボタンのカラーが共通となっている場合、これを変数化したい。

``` kotlin
ButtonDefaults.textButtonColors(
    contentColor = Color.Red,
    containerColor = Color.Yellow,
),
```


変数にしたいところの上で「option + command + v」を押すと以下のようになるので、変数にしたい範囲を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1630025/faa8fbf9-fa38-16f5-da49-cd9a3ac4e0d7.png)

その後は変数ができる場所を選択するだけ！


| Columnの中 | Columnの外 |
| --- | --- |
| ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1630025/b616feb7-0c6b-fb93-34a2-6c76060d8652.png) | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1630025/43566362-b8ff-1bfe-78bb-75ace307e8a5.png) |
| ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1630025/6d21f5ed-8b08-f83c-1b90-1f2007e40937.png) | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1630025/3209da7e-252c-e40e-e1b7-8e76a6c51b9d.png) |


ちなみに同じものが２箇所以上ある場合は、作成場所を選んだ後に以下のようなものが出る。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1630025/92ef9d33-6c27-e50d-48e1-aeec7aea76ed.png)


### ※ちなみに元に戻したい場合は「option + command + n」

変数にしたものの上で「option + command + n」した場合は、複数箇所あったとしても該当箇所に内容が記載される。全部元通り！

| Before | After |
| --- | --- |
| ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1630025/6974e02d-03a2-3864-0eae-192ae4a6baa5.png) | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1630025/22681f02-3ff1-8488-af9b-c1ecb9e4a699.png) |

<br>
<br>

個別のbuttonColorsで行った場合は、以下のように色々な選択肢から選ぶことが可能。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1630025/be241d13-fc25-1f64-910c-a37aeb8d99a4.png)



## 検索する

### 「shift」 ×2 ： すべてを検索

DAI語で調べられるので楽。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1630025/dc59db93-dad1-653e-b44d-b82344808de7.png)

### 「shift + command + f」 : パス内を検索

画面下部で変更することも可能。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1630025/7189a0d5-5a4a-5b06-aadf-b04d823ebc74.png)


## おすすめキーショートカットまとめ

| 説明 | 操作 |
| --- | --- |
| 変数の抽出 | option + command + v |
| メソッドの抽出 | option + command + m |
| インライン | option + command + n |
| すべてを検索 | shift × 2 |
| パス内を検索 | shift + command + f |


## 参考資料

https://developer.android.com/studio/intro/keyboard-shortcuts