vimネタ Explore、vimshell

もし~/.vimrcを無くしてしまったら、その日は一日中立ち直れないだろう。


vimディレクトリを開いたときに出てくる:Exploreが何気に便利なわけですが、表示されるファイルのソート順のデフォルト値は、Myカスタマイズにしておくと便利。

↓Myカスタマイズ
map :Explore
let g:netrw_sort_sequence="[\\/]$,*,\\.\\(mv\\|old\\|cp\\|bak\\|orig\\)[0-9]*[\\/]$,\\.\\(mv\\|old\\|cp\\|bak\\|orig\\)[0-9]*$,\\.o$,\\.info$,\\.swp$,\\.obj$ "

1. /で終わるファイル名(=ディレクトリ)
2. その他のファイル
3. *.mvとか*.oldとか*.old1とか*old2とかで終わるディレクト
4. *.mvとか*.oldとかとかで終わるファイル
5. *.oとか*.swpとか*.objとか
でソートされます。



それから、最近vimshellなるモノを導入したら、これが便利で困る。

http://www.wana.at/vimshell/

vimのwindowでptyを使うというモノ。

プラグインではなくパッチなので、再コンパイルが必要なのが少々面倒。
vim7にvim-shellパッチを当てるときは、vim7の修正パッチ(vim-7.0.0-218とか)を当てると、configureへのパッチが衝突してコンパイルできないのは難点。vim7.1にも当たらない。


vim-shellはいろいろと挙動がおかしかったりするのだけど、vim-shellの中でscreenを起動しておくと幾分マシになる。


というわけで、↓こんな感じでmapしてみる。

map :Hexplore \| vimshell screenls
noremap! :Vexplore! \| vimshell screenls
noremap! :Hexplore \| vimshell screenls


Ctrl-W + Ctrl-Kで、ウィンドウを左右に割ってから右側にvim-shellを起動、 Ctrl-W + Ctrl-Mで、ウィンドウを上下に割ってから下にvim-shellを起動。
screenを起動して、ついでにlsを自動実行。




vim-shellのウィンドウはCtrl-W + cで閉じるのだけど、間違ってフツーの状態でCtrl-W + cを押してしまうと、いろいろおいしくないことがおこって良くない。
というわけで、フツーの状態ではC-W + cを無視するようにmap。

noremap c :
noremap! c :




ついでに.bashrc用に↓小物スクリプトを。
fing() {
local find_real=`which find`
if [ -z "$1" ];then
$find_real
elif [ -z "${1##-*}" ];then
$find_real "$@"
else
local dir="."
if [ -d "$1" ];then
dir="$1"
shift
fi
if [ -n "$1" -a -z "${1##-*}" -o -z "$1" ];then
$find_real "$dir" "$@"
else
$find_real "$dir" | grep --color "$@"
fi
fi
}
#alias find=fing
mixiでもpreなコードが書けると嬉し)


find | grepエイリアス。fing。

第一引数がディレクトリだったら そこにfindしてくれるという、ちょっとした親切機能付き。


それから引数が無かったり、第一引数が-で始まる文字列だった場合は、普通にfindを実行。
fing -exec...まで打ってから、fingじゃなくてfindだった、と言うときでも安心。

grepに引数を渡す場合は最後に。
fing hoge -v -i で、大文字小文字を区別せずにhoge以外。


何気にfind違和感なくfindっぽく使えるので、果敢に alias find=fing としてみるのも一興。