バカンス駆動開発

この前バカンスって言ったら「古っ」って言われました

vim × tmux環境を整える1

vim × tmux環境を整える1

この記事の結果

f:id:egapool:20190728183857g:plain

twitterでこの動画をみかけて以前からやってみたかったvim × tmux環境に移行チャレンジ
とりあえずできるだけコピーしてみて、そこから自分にあうようにアレンジしてみる

www.youtube.com

現在の環境

不満点

  • 複数エディタを行ったり来たりでスイッチングコストがめんどくさい
  • 今後新たな言語で開発するときにまたそのため適した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

リンク

ここまで最大の悩み

tmuxの同一ペインないでvimを縦スプリットしたら上下移動(jk)のレンダリングがめちゃくちゃ重い!使い物にならないレベル

次回以降

  • シェルをfishにしないとしまらない感
    • テーマをいれて雰囲気作り
  • リピートキーの発動制限時間が短すぎる?
  • クリップボードとヤンクを共有したい

#開発環境 #vim #tmux