vim × tmux環境を整える1
vim × tmux環境を整える1
この記事の結果
twitterでこの動画をみかけて以前からやってみたかったvim × tmux環境に移行チャレンジ
とりあえずできるだけコピーしてみて、そこから自分にあうようにアレンジしてみる
現在の環境
不満点
- 複数エディタを行ったり来たりでスイッチングコストがめんどくさい
- キーバインディングを統一するのも限界がある
- 今後新たな言語で開発するときにまたそのため適したIDEの扱いを覚えるのが嫌
- エディタと同じウィンドウでターミナルを扱いたい
- PHPStormもVSCodeもできるけどパネルの位置、大きさをカスタムしにくいのが不満
tmux
tmuxインストール
macはかんたん
$ brew install tmux
触ってみる
さっそく~/bin/ide
としてコマンドを作成
#!/bin/bash tmux split-window -v -p 30 tmux split-window -h -p 66 tmux split-window -h -p 50
また、.tmux.conf
にキーバインド等を設定してペインを移動できるように
動画ではプレフィックスをTにしていたけど、僕には遠いような気がしてとりあえずQでやってみる
set-option -g prefix C-q unbinde C-b bind -r k select-pane -U bind -r j select-pane -D bind -r h select-pane -L bind -r l select-pane -R
.tmux.confの再読み込み
しかしキーバインドが全然かわらない。iTermごと再起動しても変わらない。何かconfigを読み込ますお作法があるのかと調べたらreloadする方法を見つけた
$ tmux source path/to/.tmux.conf
ターミナル起動時にtmuxも起動
# 初回シェル時のみ tmux実行 if [ $SHLVL = 1 ]; then tmux fi
vim
プラグイン
vim-pluginでunite,VimFilerをいれる。vimを起動して:PlugInstall
でインストール開始
"""""""""""""""""""""""""""""" " プラグインのセットアップ """""""""""""""""""""""""""""" call plug#begin('~/.vim/plugged') " ファイルオープンを便利に Plug 'Shougo/unite.vim' Plug 'Shougo/vimfiler' Plug 'Shougo/vimproc' " Unite.vimで最近使ったファイルを表示できるようにする Plug 'Shougo/neomru.vim' call plug#end() """"""""""""""""""""""""""""""
.vimrc.keymap
この設定でvim内で分割と移動がめちゃくちゃ楽になりました。
sf
でVimFilerを起動できようにした。
" Split window nmap ss :split<Return><C-w>w nmap sv :vsplit<Return><C-w>w " Move window nmap <Space> <C-w>w map s<left> <C-w>h map s<up> <C-w>k map s<down> <C-w>j map s<right> <C-w>l map sh <C-w>h map sk <C-w>k map sj <C-w>j map sl <C-w>l " Resize window nmap <C-w><left> <C-w>< nmap <C-w><right> <C-w>> nmap <C-w><up> <C-w>+ nmap <C-w><down> <C-w>- " VimFiler nmap sf :VimFilerBufferDir<Return> nmap sF :VimFilerExplorer -find<Return> nmap sb :Unite buffer<Return> let g:vimfiler_as_default_explorer = 1 let g:vimfiler_safe_mode_by_default = 0 let g:vimfiler_enable_auto_cd = 0 let g:vimfiler_tree_leaf_icon = '' let g:vimfiler_tree_opened_icon = '▾' let g:vimfiler_tree_closed_icon = '▸' let g:vimfiler_marked_file_icon = '✓'
vimのタブ
これでvim内でタブを開く
" Open current directory nmap te :tabedit " List tabs nmap tl :Unite tab
vimprocの導入
vimのプロセスを非同期で実行させられるプラグイン
vimproc - neovim/vim入門
pluginとしてinstallしたあと、コンパイルしないといけない
$ cd ~/.vim/plugged/vimproc $ make -f make_mac.mak
縦のカーソル移動が重い
調べたらカーソル行のハイライトが重いとあったので無効にしたらすこし軽くなった(ついでに行の相対表示も)
:set nocursorline :set norelativenumber
リンク
- vimfilerとUniteでVimをファイラとして使用する方法 – karakaram-blog
- vimfilerのコマンド集
ここまで最大の悩み
tmuxの同一ペインないでvimを縦スプリットしたら上下移動(jk)のレンダリングがめちゃくちゃ重い!使い物にならないレベル
次回以降
- シェルをfishにしないとしまらない感
- テーマをいれて雰囲気作り
- リピートキーの発動制限時間が短すぎる?
- クリップボードとヤンクを共有したい