個人的★追加ショートカットキー

個人的に使うショートカットキー

# よく使うエディタ
JetBrains とか、 VisualStudioCode とか

VSCodeは大抵 JetBrainsKeyMap 入った状態で確認しているので、デフォルト設定と違うこと言ってるかも。

# 既存系

## 行コピー/切り取り 範囲選択してない状態で、`Ctrl + C/X`
最近のテキストエディタはほぼサポートしている。ヤツ。
たまにウェブブラウザのエディタで対応してなくてキレそうになる（Qiitaのエディタとか、Qiitaのエディタとか(大事なことなので以下てんぷら))

notepad.exeとかも当然対応してない。
行末の改行記号を含めてコピー/切り取りするので、貼り付けたときも行末で改行される。

サクラエディタなどのマクロで実装する場合は、範囲選択の条件式で分岐させて、
「(Home または ↑,End,→),Shift+End,Shift+→,コピー」の入力を再現すればいけるはず。
ただし、序盤でEndキーを使うほうは、先頭行は非対応だし、実行後の状態が若干残念なことになる。まあ、妥協は必要。


## 複製 `Ctrl + D`

カーソルのある位置の行か、選択範囲を複製する。

マクロで再現する場合は、上記の「行コピー」と同様の操作の後に、直後行の行頭などに貼り付ける動作を構成する。


# 新しく割り当てる系

## 矩形選択

選択範囲(カーソル)を上下に増やす。
`Alt + ↑ / ↓` (実際の設定値は`UpArrow / downArrow`とか)などを登録する。

※ JetBrains系ではこのキーアサインは既存であって、「`Previous / Next Method`」になっていて、`Ctrl Shift Alt`のいろんな組み合わせでこれ系の操作が登録されている。どれかを犠牲にするか、上下キーを別のキーでアサインするかは考えどころ。
※ この場での話とはあまり関わりがないけど、`,`と`.`がキーボードプリント見ると「`<`と`>`」なので「`Previous / Next`」とイメージは合い、これらのキーに割当てられてる機能はあまりない(ちょっとある)ので、これに割当てても良さそう。(設定を構成するのがめんどいのであまりまじめに考えてないけど)
一応、フルサイズキーボードなら右手だけで入力できる。
右手ショートカットキー非対応って人もいると思うけど、僕はもとピアニスト(笑)なので両利きだし、指くぐらせる運指も可能。
`Alt`は親指、`Ctrl`小指、`Shift`薬指、`,.`は人差し指。など。
要は慣れ。

### 設定名

* JetBrainsだと 設定のKeyMapで、
    * `Clone Caret Above`
    * `Clone Caret Below`
        * 「`Cursor`」の検索でもヒットする。
* VSCode だと キーボードショートカットで、(和名は日本語の公式(?)プラグインより)
    * `editor.action.insertCursorAbove`(`カーソルを上に挿入`)
    * `editor.action.insertCursorBelow`(`カーソルを下に挿入`)

### 補足

両方で共通して、

*  「`Alt + マウスクリック`」で、クリックした位置でカーソルをトグル(入れたりとったり)できる。
*  マウスミドルクリックのドラッグアンドドロップ(?)で、なぞった範囲を矩形選択できる。
    *  VSCodeはもしかしたらデフォルトじゃないかも。
    *  JetBrains系だと、ミドルクリック単押しが「`Find Usage`」または「`Find Declaration`」なので、間違って押すと若干面倒なことになる場合もあるので注意。
        *  特に後者。場合によってはAPIをデコンパイルし始めたりで、マシンスペックがしょぼいとかなり重くなる。便利だから積極的に使うときもある。

### 使い所 usage

同じような名前とか、配列とか、htmlのテーブルデータ要素内の同じ位置を弄くりたいときに使う。
`Ctrl + 左右`の単語単位でジャンプするやつとか、
JetBrains系によくある`Ctrl + W`の`extendSelection`系とかを併用するとものすごく捗る。

ただし、`Ctrl + 左右`が必須になるような選択をする場合は、間で`-_"`のような、単語境界を崩すような記号が入る行が一行だけとか紛れ込んでると、選択範囲が共通してなくて崩れるので、編集をする前に選択範囲を要確認。
行頭と行末と、それぞれからなら共通してるなら、`Home/End`キーを使えば回避できたりする。

あとは、共通部分のガワだけ先に作ったところに、格納する値とか、変数名が個別になるところだけ別のところで編集して、作ったそいつらをコピーした後、ガワを作ったところで矩形選択して貼り付け、とかもできる。

<details>
<summary>使用例(クソ長い)</summary>
<div>

```java:下のように編集して、「」範囲を切り取り(前後の改行を含まず)
private int =;
private int =;
private int =;

「
val_1
variable_2
value_3
」

52
137
92
```

`private int =;`なんかは、一回書いてから`Ctrl + D`で複製したり、最初から空の三行を矩形選択した状態で書き始めれば、複製しなくても三回分書いたことになる。

```java:「|」の位置を矩形選択して
private int |=;
private int |=;
private int |=;


52
137
92
```
```java:貼り付け(終了後のカーソル位置も表現)
private int val_1|=;
private int variable_2|=;
private int value_3|=;


52
137
92
```

改行文字を含んだ切り取りだったが、改行はされない。
都合よく解釈してくれる。便利。

```java:下キーを5回
private int val_1=;
private int variable_2=;
private int value_3=;


52|
137|
92|
```
```java:Shift+Home
private int val_1=;
private int variable_2=;
private int value_3=;

(範囲選択)
|52|
|137|
|92|
```
```java:切り取り
private int val_1=;
private int variable_2=;
private int value_3=;


|
|
|
```
改行文字を含まずに切り取るので、行が残る(以降省略)

```java:上キーを5回
|private int val_1=;
|private int variable_2=;
|private int value_3=;
```
```java:Endキーを押してから左キー
private int val_1|;
private int variable_2=|;
private int value_3=|;
```
```java:貼り付け
private int val_1=52;
private int variable_2=137;
private int value_3=92;
```

</div>
</details>

### メモ 矩形選択を英語で言うと...

Cursor column select
らしい。
VSCodeの設定にこの名前の設定があって(`cursorColumnSelect`_BlaBlaBla_)、これらは矩形選択を行うための設定らしい。
[VS Code で矩形選択するキーボードショートカット - s4_ba’s diary](https://s4-ba.hatenablog.jp/entry/2018/02/02/153633) wrote by s4_ba


## 新規ファイル作成 (New File 系)

ファイル作成に `Alt + F` (File)
フォルダ作成に `Alt + D` (Directory)

これらのキーは、基本的には、メニューバーの頭文字から、該当する項目の選択になっていて、
「`Alt + F`」は「ファイル」、「`Alt + D`」は該当なし
だと思う。

この組のショートカットを使う人でも、「`Alt`」単体で押せば問題なくメニュー操作できるので、
あまり困らないと思う。

まあ、それを言ったら、新規でファイルとかフォルダ作るなんて、
プロジェクトの初っ端とか、機能追加のときだけだから、
利用頻度おそろしくひっくいし、
潰しちゃってる「ファイル」メニュー派生の操作だから、そこから素直にファイル追加してもいいのかもしれない。
というかそれでいいでしょ（ヲイ）