#Vim + tmuxに入門した話
tmuxについてはこの記事がわかり易かった(後ほども同じリンクがでてきますが):vimのキーバインド風にtmuxのよく使う操作をチュートリアルっぽく解説
###まず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
こんな感じででてくると思いますが、見てほしいのは5行目のHuge版というところがtinyとか別のものになってたら、
sudo apt-get install -y vim
でインストールすればそのままのコマンドでHuge版が使えます。
キーとかはこれ見て覚えました
vimチートシート
###tmuxを入れる
やっとtmuxの話ですが、最新版がいいのであればgitからソースを落としてきてバイナリつくるのが簡単そうです。
ここではそこまでこだわらずに素直にインストールします。
sudo apt-get install -y tmux
そしたら設定関連ですが、この方の設定(vimのキーバインド風にtmuxのよく使う操作をチュートリアルっぽく解説)が分かりやすかったのでそのまま使ってます。
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を編集(ない人はホームディレクトリ配下に作ってください)
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ライフを。