コマンドまとめ～ubuntu, docker, vim, git, tig

モブプログラミングを仲間とする時に、よく使うコマンドをまとめておくことにしました。
ubuntu, docker, vim, git, tigのコマンドを記載しています。
閲覧のしやすさを考え、同じ記事にしています。

##ubuntu
###接続
```bash:ssh接続
$ ssh {localPCName}@{外部IP}  # ssh接続
$ ssh -L {port}:localhost{port} {localPCName}@{外部IP} # sshポートフォワーディング
$ exit  # 接続切断
```
###ディレクトリ
| コマンド| 説明
|:--- |:---|
| $ <kbd>Ctrl</kbd> + c| 実行コマンドキャンセル|
| $ cd ~| ホームディレクトリに移動|
| $ cd /| ルートディレクトリに移動|
| $ cd ..| 親ディレクトリに移動|
| $ pwd| 作業ディレクトリ確認|
| $ ls| カレントディレクトリの中身確認|
| $ ls -l| 権限確認|
| $ chown -R {userOwner}:{groupOwner} {dirName}| ディレクトリ権限変更|
| $ mkdir {dirName}| ディレクトリ作成|
| $ rm -r {dirName}| ディレクトリ削除|
| $ mv {currentDirName} {newDirName}| ディレクトリ名変更|

###ファイル
| コマンド| 説明
|:--- |:---|
| $ rm {fileName}| ファイル削除|
| $ mv {currentFileName} {newFileName}| ファイル名変更|
| $ find {pass} -name "{fileName}"| ファイル名検索|
| $ grep -r "{searchWord}" {dirPass}| ファイル内検索|
| $ vim {fileName}| ファイルをvimで開く|
| $ cat {fileName}| ファイル内のテキストを表示|
| $ echo '{any}' > {fileName}| ファイルを新規作成し、''の内容を書き込む|
| $ echo '{any}' >> {fileName}| 既存ファイルに''の内容を書き込む|


```bash:vimプラグイン導入（Vundle）
$ git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
$ cd ~
$ vim .vimrc
$ vim +PluginInstall +qall
```
参照：https://github.com/VundleVim/Vundle.vim
モブプログラミングのvim設定：https://github.com/h-nago/dotfiles

##docker
権限エラーが表示された場合、コマンドの先頭に`sudo`をつけて実行。

```bash:docker
# コンテナ
$ docker ps                # 動作中のコンテナ表示
$ docker ps -a             # コンテナ一覧表示
$ docker rm {conteinerID}  # コンテナ削除
# イメージ
$ docker images         # イメージ確認
$ docker rmi {imageID}  # イメージ削除
```
```bash:docker-compose
$ docker-compose up -d
$ docker-compose ps
$ docker-compose images
$ docker-compose run --rm {ServiceName} bash
```

##vim
###表示

| コマンド| 説明|
|:--- |:---|
| :vsplit | 垂直分割|
| :split | 水平分割|
| <kbd>Ctrl</kbd> + w, → | 分割画面間の移動|
| :e {fileName}| ファイルを開く|

###編集

| コマンド| 説明| 備考|
|:--- |:---| :---|
| y | コピー | 5y（5行コピー） ||
| p | ペースト| カーソルの1行下に入る|
| dd | 切り取り | 3dd（3行切り取り）|
| x | 切り取り(文字) | 3x（3文字切り取り）|
| u | 元に戻す | Undo |
| <kbd>Ctrl</kbd> + r | やり直し | Redo |
| v | 選択 ||
| o | 改行 | ◦　カーソルの1行下に入る<br/>◦　Insertモードに移行する |
| i | INSERTモードに移行 | <kbd>Esc</kbd>でCommandモードに戻る |
| :set paste| "i"でINSERT(paste)モードに移行する ||
| :set nopaste| INSERT(paste)モード解除 ||

###移動

| コマンド| 説明|
|:--- |:---|
| gg | 1行目に移動|
| G | 最終行に移動|
| {数字}gg | 数字行に移動|
| ^ | 行のテキスト先頭に移動|
| 0 | 行頭に移動|
| $ | 行末に移動|
| % | 対応する括弧に移動|

###検索／置換
| コマンド| 説明|
|:--- |:---|
| / \<searchWord\> | 後方検索|
| ? {searchWord} | 前方検索|
| :%s/{beforeWord}/{afterWord} | ファイル内の最初に見つかった単語を置換|
| :%s/{beforeWord}/{afterWord}/g | ファイル内のすべての単語を置換|
| :%s/{beforeWord}/{afterWord}/gc | ファイル内のすべての単語を確認しながら置換|

###保存／終了

| コマンド| 説明|
|:--- |:---|
| :w | ファイル保存|
| :wa | すべてのファイルを保存|
| :q | ファイルを閉じる|
| :qa | すべてのファイルを閉じる|
| :wqa | すべてのファイルを保存して閉じる|

##git
###インストール（Ubuntu 16.04）
```bash:Install
# 最新版Git
$ sudo add-apt-repository ppa:git-core/ppa
$ sudo apt-get update
$ sudo apt-get install git
$ git --version
# 最新バージョンならばOK 
```


###設定
```bash:設定
# 設定内容確認
$ git config -l
# ユーザー、メールアドレス
$ git config --global user.name "{UserName}"    # ユーザー
$ git config --global user.email "{UserEmail}"  # メール
# 色
$ git --global color.diff auto
$ git --global color.satus auto
$ git --global color.branch auto
# エディター
$ git config --global core.editor 'vim -c "set fenc=utf-8"'  # エディターをvimに設定
# リポジトリ
$ git init                           # リポジトリ作成
$ git remote add origin {remoteURL}  # リモートリポジトリにアクセス
```

### 基本操作
```bash:基本操作
# クローン
$ git clone {URL}
# ステージ
$ git add -A
& git resert HEAD  # add取り消し
# コミット
$ git commit -m '{comment}'
# プッシュ
$ git push origin {localBaranchName}:{originBranchName}
# プル
$ git pull origin {originBranchName}
# ブランチ
$ git branch -a  # ブランチの確認
$ git checkout -b {branchName} origin/{branchName}  # ブランチのチェックアウト
$ git branch -d {branchName}  # ブランチの削除
# ローカルの変更取り消し
$ git chekout {fineName}  # 特定のファイル
$ git checkout .  # すべてのファイル※追加ファイルは別途削除
# リモートリポジトリの更新情報取得
$ git fetch
# マージ
$ git merge {branchName}
$ git merge --allow-unrelated-histories {branchName}  # 無関係なヒストリを持つブランチの場合[Git 2.9から]
# リベース
$ git rebase {rebaseの元にするBranchName}
# Tree表示
$ git log --graph --all --abbrev-commit --date=relative --pretty=format:'%C(red)%h %C(reset)-%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'
```

##tig
`$ tig`でmain画面起動させた後のコマンドです。

| コマンド|説明|
|:--- |:---|
| $ s | status確認|
| $ u | ステージ（アップ／ダウン）|
| $ ! | 変更を元に戻す|
| $ C | コミット|
| $ <kbd>Enter</kbd> | 選択ファイルを開く|
| $ k | ↑移動|
| $ j | ↓移動|
| $ ! | 変更を1つずつ元に戻す　※ファイルを開いた状態|