vim + tmuxに入門した話

#Vim + tmuxに入門した話

tmuxについてはこの記事がわかり易かった(後ほども同じリンクがでてきますが)：[vimのキーバインド風にtmuxのよく使う操作をチュートリアルっぽく解説
](https://qiita.com/sainuio/items/b7e04182e1dd8cb3bbd6)

###まずVimがちゃんとVimしてるか？
ずっとvimって苦手だな、なんであんなの使うんだろうってずっと思ってたんですよ。
そしたらなんと、僕が使ってたのって、vimじゃなくてtiny vimとか呼ばれる軽量版のvimでした。
どうやら、ubuntuの標準搭載がtiny vimらしいです。
まず、このコマンドを打ってもらって、

```
vi --version
```
```
VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Apr 10 2018 21:31:58)
適用済パッチ: 1-1453
Modified by pkg-vim-maintainers@lists.alioth.debian.org
Compiled by pkg-vim-maintainers@lists.alioth.debian.org
Huge 版 without GUI.  機能の一覧 有効(+)/無効(-)
+acl               +farsi             +mouse_sgr         -tag_any_white
+arabic            +file_in_path      -mouse_sysmouse    -tcl
+autocmd           +find_in_path      +mouse_urxvt       +termguicolors
-autoservername    +float             +mouse_xterm       +terminal
-balloon_eval      +folding           +multi_byte        +terminfo
+balloon_eval_term -footer            +multi_lang        +termresponse
-browse            +fork()            -mzscheme          +textobjects
++builtin_terms    +gettext           +netbeans_intg     +timers
+byte_offset       -hangul_input      +num64             +title
+channel           +iconv             +packages          -toolbar
+cindent           +insert_expand     +path_extra        +user_commands
-clientserver      +job               -perl              +vertsplit
-clipboard         +jumplist          +persistent_undo   +virtualedit
+cmdline_compl     +keymap            +postscript        +visual
+cmdline_hist      +lambda            +printer           +visualextra
+cmdline_info      +langmap           +profile           +viminfo
+comments          +libcall           -python            +vreplace
+conceal           +linebreak         +python3           +wildignore
+cryptv            +lispindent        +quickfix          +wildmenu
+cscope            +listcmds          +reltime           +windows
+cursorbind        +localmap          +rightleft         +writebackup
+cursorshape       -lua               -ruby              -X11
+dialog_con        +menu              +scrollbind        -xfontset
+diff              +mksession         +signs             -xim
+digraphs          +modify_fname      +smartindent       -xpm
-dnd               +mouse             +startuptime       -xsmp
-ebcdic            -mouseshape        +statusline        -xterm_clipboard
+emacs_tags        +mouse_dec         -sun_workshop      -xterm_save
+eval              +mouse_gpm         +syntax
+ex_extra          -mouse_jsbterm     +tag_binary
+extra_search      +mouse_netterm     +tag_old_static
      システム vimrc: "$VIM/vimrc"
      ユーザー vimrc: "$HOME/.vimrc"
   第2ユーザー vimrc: "~/.vim/vimrc"
       ユーザー exrc: "$HOME/.exrc"
  デフォルトファイル: "$VIMRUNTIME/defaults.vim"
       省略時の $VIM: "/usr/share/vim"
コンパイル: gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/build/vim-NQEcoP/vim-8.0.1453=. -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1
リンク: gcc   -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -o vim        -lm -ltinfo -lnsl  -lselinux  -lacl -lattr -lgpm -ldl     -L/usr/lib/python3.6/config-3.6m-x86_64-linux-gnu -lpython3.6m -lpthread -ldl -lutil -lm 

```

こんな感じででてくると思いますが、見てほしいのは５行目のHuge版というところがtinyとか別のものになってたら、

```
sudo apt-get install -y vim
```

でインストールすればそのままのコマンドでHuge版が使えます。


キーとかはこれ見て覚えました
[vimチートシート](https://www.namaraii.com/files/vim-cheatsheet.pdf)


###tmuxを入れる
やっとtmuxの話ですが、最新版がいいのであればgitからソースを落としてきてバイナリつくるのが簡単そうです。
ここではそこまでこだわらずに素直にインストールします。

```
sudo apt-get install -y tmux
```
そしたら設定関連ですが、この方の設定([vimのキーバインド風にtmuxのよく使う操作をチュートリアルっぽく解説](https://qiita.com/sainuio/items/b7e04182e1dd8cb3bbd6))が分かりやすかったのでそのまま使ってます。
homeディレクトリ配下でwegetすれば生成されるので、



先程の記事の

```
cd ~ && wget https://raw.githubusercontent.com/sainuio/dotfiles/master/home/.tmux.conf
```

これをしてあげればOKです。

###端末を開いたら自動的に開いてほしい
僕の場合、bashを使ってるので、~/.bashrcのエイリアスの上の部分、(aliasと書いてある部分が全て下に来るように)に

```
if command -v tmux>/dev/null; then
         [[ ! $TERM =~ screen ]] && [ -z $TMUX ] && exec tmux
fi

```

を追加すると、tmuxが入っていて通常に動く場合にはtmuxの状態で起動してくれます。

###コピー＆ペーストをOSのものと連携させたい

○ tmux側
まずはxselというものをインストールします。

```
sudo apt-get install xsel
```
そしたら、tmuxの設定ファイル(~/.tmux.conf)の最下部の##set oparation of the copyの下を下記のように書き換えます

```
bind-key -T copy-mode-vi y send -X copy-pipe-and-cancel "xsel -ip && xsel -op | xsel -ib"
bind-key -T copy-mode-vi Enter send -X copy-pipe-and-cancel "xsel -ip && xsel -op | xsel -ib"
```

○ vim側
```vim --version | grep clip```して、clipboardが＋ならそのままでOK
-だった人は

```
sudo apt-get install -y vim-gnome
```
でgvimを入れましょう。

そしたら、~/.vimrc(無い人は作って)に

```
set clipboard=unnamedplus
```
を追加
普通にコピーすればクリップボードに反映されます。

###ファイルツリー欲しくない？？
vimってこんなにプラグイン豊富なんですねって感じでびっくりしたのですが、そのプラグインを導入してファイルツリーを表示させてみます。

プラグインマネージャーを導入(unix系)

```
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
    https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
```
.vimrcを編集(ない人はホームディレクトリ配下に作ってください)

```~/.vimrc
call plug#begin('~/.vim/plugged')

Plug 'scrooloose/nerdtree'
Plug 'jistr/vim-nerdtree-tabs'

call plug#end()
```
ここまでできたら、vimの画面のままで、```:PluginInstall```と```:source ~/.vimrc```を実行

そして任意のファイルを開いて、```:NERDTree```を実行すると開きます。
ファイルツリーとエディターの移動は、設定を変更していなければ、**cnt+w, h or l**でできます。(vimのタブ移動コマンド)

みなさんも良いvim + tmuxライフを。