便利だと思った bash/vim/Mac/Xcode/AndroidStudio のコマンド集

便利だなと思ったコマンドが、ほどよく貯まってきたので、
ここらでちょっとQiitaに書いてみようと思います。

こんなん知ってて当たり前なものもあれば、
こんなことできたんだ！な人もいるかもしれませんので。

備忘録として。

# 概要

ここで話題に上げる内容は、すべてMac上でのショートカット、コマンドです。

以下の内容で、コマンドを紹介していきます。

- bash
    - シンボリックリンクを張る
    - ジョブ実行中にターミナルに戻る、ジョブに戻る
- vi/vim
    - 画面を分割する/複数のファイルを開く
    - アクティブにする画面を選択（移動）する
    - 複数行を一気にインデントする
- Mac
    - 同じアプリケーション内の別のウィンドウを表示する
- Xcode
    - コード整形
    - 使えるメソッド・コードの一覧を表示
- AndroidStudio
    - QuickDocを表示

# bash

## ln -s [リンク先のソースパス] [作成するリンク]：シンボリックリンクを張る

今となっては、やっておいたほうが良かったなと思うことは、**bashrcとbash_profileを別の場所に定義する**ということです。別の場所に定義しておいて、そこでGit管理してあげれば、何か設定を間違った時にも戻せるという利点があります。vimrcとかの設定ファイル系は、リンクにしちゃうのが良いかもしれません。
以下は、ホームディレクトリのbash_profileを、Documents/bash_profile内のbash_profileにリンクする例です。

```shell-session
ln -s /Users/user/Documents/bash_profile/.bash_profile .bash_profile
ls -al
lrwxr-xr-x 1 user staff 53 2 5 15:22 .bash_profile -> /Users/user/Documents/bash_profile/.bash_profile
```
ちなみに、パーミッション表示直前の「`l`」の字が、シンボリックリンクであることを示しています。
パーミッション直後の数字は、ハードリンクの数。

## ジョブ実行中にターミナルに戻る、ジョブに戻る（Ctrl + Z / fg / jobs）

ターミナルを開いている時に、複数のプロセス（というよりはアプリケーション？）を行き来しながら作業したい時があると思います。もしかすると、サーバサイドの作業中も、そうかもしれません。そんな時に、便利なコマンドです。

### Ctrl + Z：プロセスを一旦停止して、ターミナルに戻る

プロセスのkillという意味では、`Ctrl + C`はよく使うんだけど、一旦止めたい時はどうしたら良いのか。
`Ctrl + Z`でした。
下のような表示のあと、ターミナルに戻ります。

```bash
[1]  + 10345 suspended  vi .bash_profile
```

### jobs：バックグラウンドのプロセス一覧を表示する

一旦停止したプロセスの一覧を見ることができます。下は、viとmysqlを2つ、止めている例です。

```bash
jobs
[1]  - suspended  vi result.txt
[2]  + suspended  mysql
```

### fg：プロセスを再開（フォアグラウンドに）する

一旦停止したプロセスを再開します。
`fg`のみ → 直前に停止したプロセスを再開
`fg %[数字]` → `jobs`で表示したリストについている番号のプロセスを再開。%つけ忘れない。

### Ctrl + A / Ctrl + E: コマンド入力時にカーソルを先頭・に移動する

しばしば、`cp file/to/path file/to/path`みたいな入力をした後に「mvに変えたい」など、コマンドを修正したい時に便利です。

# vi/vim

いずれも`esc`を押した、コマンドモードの時に使用します。

## sp / vs：画面を分割する/複数のファイルを開く

vi/vimを使っていると、複数のファイルを開きたくなることがあります。
NERDTreeなどのプラグインを入れると、そういうとき便利なのかもしれませんが、ここではデフォルト設定で。

`sp [ファイル名]` → 水平に2分割します。上下に別れます。
`vs [ファイル名]` → 垂直に2分割します。左右に別れます。

## Ctrl + W / Ctrl + H, J, K, L：アクティブにする画面を選択（移動）する

画面を分割した後は、画面を移動したくなります。その時は、コチラのコマンド。

`Ctrl + W` → 次の画面に移動する。
`Ctrl + H, J, K, L` → H:左、J:下、K:上、L:右の画面に移動する。

## Shift + V → = ：複数行を一気にインデントする

viにはビジュアルモードという便利なモードがあって、それを使わない手はないです。

`V`でビジュアルモードに入ります。文字単位で範囲選択とかできるようになります。
`Shift + V`で行単位の範囲選択。`Ctrl + V`で矩形の範囲選択が可能です。

**複数行を一気にインデントするときは**
`Shift + V`で行を選択、`=`を押すと……一気にインデントされました！

**特定の範囲だけコピー or 切り取りしたいときは**
文字単位（`V`） or 行単位（`Shift + V`） or 矩形（`Ctrl + V`）で範囲選択した後、
`D`が切り取り、`Y`がコピーです。`P`でペーストです。

つまり、**数十行も行数を数えて`53YY`して`P`する**とか、それで**しかも不要な行までコピーしちゃった**みたいなことがなくなるので、ビジュアルモードはかなり便利です。

# Mac

## Command + F1：同じアプリケーション内の別のウィンドウを表示する

これは日常的に使える便利。
よく、`Command + Tab`でアプリケーションの切り替えはよくやるんだけど、**アプリケーション内でのウィンドウの切り替え**は、もっぱら`F3`から**Mission Controlを表示して**切り替えたりして、そしたら**同じアプリケーションのウィンドウが重なっちゃって隙間から頑張ってウィンドウを選択**して、でも**間違っちゃったりして**もう面倒ったら……。

<img width="294" alt="スクリーンショット 2016-02-26 12.25.21.png" src="https://qiita-image-store.s3.amazonaws.com/0/75329/0863cc67-beea-2372-11c2-575a1c72fe4d.png">

**`Command + F1`で、一瞬でした**。気持よくなれます。

# Xcode

## 範囲選択 → Ctrl + I：コード整形

Objective Cで書いていると、どうしてもメソッド周辺でガタガタしちゃったりして、でも仕方ないんだけど。
とりあえず、1行ずつインデント直しているの面倒なので、

範囲選択 + `Ctrl + I`

で一気に直しましょう。

## Esc：使えるメソッド・コードの一覧を表示

これも意外と便利。いちいち、アルファベット1文字を入力してみたりいろいろしながら探さなくても良いのね。

# Android Studio

## F1, Ctrl + J：QuickDocを表示

前はEclipseみたいに、マウスオーバーで表示できるようにしていたのですが、
邪魔になってしまって、その機能はOFFにしていました。
これからは、`F1`または、`Ctrl + J`で表示するようにします。

## Command + P：引数に必要なパラメータの確認

メソッドを実装し始めて、最初に忘れるのが引数。
そんなときに、`Command + P`。
これでプロパティを確認することができます！

---

とりあえず、また気づいた時に追加していこうかと思います。