パーソナルツール

PushPop.vim : vimエディタでUnixのpushd、popdコマンドの機能を使用できるように

— カテゴリ:
作者: 小見 拓 最終変更 2012年01月10日 02時08分

Unixのpushd、popd、dirsコマンドにあたる機能と、 「cdpath」を動的に変更する機能を提供するvimスクリプトです。 このスクリプトは、vimエディタ上で複数のディレクトリを交互に参照する必要のある 作業を行う場合に便利です。 (Windows, Mac)

概要

PushPop.vim : Pushd/Popd implementation for vim command-line
http://www.vim.org/scripts/script.php?script_id=129

Unixのpushd、popd、dirsコマンドにあたる機能と、 「cdpath」を動的に変更する機能を提供するvimスクリプトです。
このスクリプトは、vimエディタ上で複数のディレクトリを交互に参照する必要のある 作業を行う場合に便利です。

「cdpath」は、:cdコマンドで移動する先のディレクトリが見つからない時に、 移動先のディレクトリを探すためにvimエディタが使用するPATHのリストです。

インストール方法

このスクリプトを使用するには、vim6.3以降が必要です。

PushPop.vim スクリプトと、
PushPop.vimスクリプトが動作に必要とするライブラリ、
genutils.vimmultvals.vim をダウンロードしてください。

スクリプト URL
PushPop.vim http://www.vim.org/scripts/script.php?script_id=129
genutils.vim http://www.vim.org/scripts/script.php?script_id=197
multvals.vim http://www.vim.org/scripts/script.php?script_id=171

入手したこれらのスクリプトを、pluginディレクトリにコピーしてください。

使い方

このスクリプトで追加されるコマンドが下の表です。
ディレクトリスタックを操作する:Pushd、:Popd、:Dirs、:Cdp、:Cd コマンドと、
「cdpath」を操作する:PPAddDir、:PPRemoveDir、:PPAddPat、:PPRemovePat、:Cdpath コマンドが追加されます。

コマンド 説明
:Pushd ディレクトリ 指定のディレクトリをディレクトリスタックの1番上に積んで、新しく1番上になったディレクトリ(指定のディレクトリ)にカレントディレクトリを変更します。
:Pushd +n (nは数値) (n + 1) 番目のディレクトリがディレクトリスタックの1番上に来るまで、ディレクトリスタックを進め、新しく1番上になったディレクトリ(n + 1番目のディレクトリ)にカレントディレクトリを変更します。
:Pushd ディレクトリスタックの1番目と2番目を入れ替えて、新しく1番上になったディレクトリ(ディレクトリスタックの2番目にあったディレクトリ)にカレントディレクトリを変更します。
:Popd ディレクトリ 指定のディレクトリをディレクトリスタックから取り除きます。
:Popd +n (nは数値) (n + 1) 番目のディレクトリをディレクトリスタックから取り除きます。
:Popd ディレクトリスタックの1番上のディレクトリを取り除いて、新しく1番上になったディレクトリ(ディレクトリスタックの2番目にあったディレクトリ)にカレントディレクトリを変更します。。
:Dirs ディレクトリスタックの内容を表示します。
:Cdp 現在編集中のファイルのあるディレクトリをディレクトリスタックの1番上に積んで、新しく1番上になったディレクトリにカレントディレクトリを変更します。
:Cd ディレクトリ 指定のディレクトリにカレントディレクトリを変更します。vimエディタには組み込みの:cdコマンドがあるので、通常は使う必要はありません。
:Cd -i ディレクトリスタックの中身をリストとして表示して、リストの中から選択してカレントディレクトリを変更できます。
:PPAddDir ディレクトリ 「cdpath」に指定のディレクトリを追加します。
:PPAddDir 「cdpath」にカレントディレクトリを追加します。
:PPAddPat パターン 「cdpath」に指定のパターンのディレクトリを追加します。パターンにはワイルドカードが使用できます。
:PPRemoveDir ディレクトリ 「cdpath」から指定のディレクトリを取り除きます。
:PPRemoveDir +n (nは数値) 「cdpath」からn番目のディレクトリを取り除きます。
:PPRemoveDir 「cdpath」の中身をリストとして表示して、リストの中から選択して「cdpath」から指定のディレクトリを取り除けます。
:PPRemovePat パターン 「cdpath」から指定のパターンのディレクトリを取り除きます。パターンにはワイルドカードが使用できます。
:Cdpath 「cdpath」の中身を表示します。

:Pushd、:Popd、:Dirs

bashのpushd、popd、dirsコマンドをエミュレートします。
これらのコマンドで、ディレクトリスタックを操作します。

" :Pushdコマンドの実行例
:Pushd /etc
:Pushd +2
:Pushd
" :Popdコマンドの実行例
:Popd /usr/local/bin
:Popd +3
:Popd

:Dirsコマンドで表示されるディレクトリスタックの内容は、
左の方がディレクトリスタックのより上の方になります。

" :Dirsコマンドの実行例
:Dirs

:Cdp

編集中のファイルのあるディレクトリを、カレントディレクトリに変更します。
Kaoriya版vimに含まれる:CdCurrentコマンドとの違いは、 ディレクトリスタックに、移動先のディレクトリを追加するかどうかです。

" :Cdpコマンドの実行例
:Cdp

:Cd

「-i」オプションを付けて、:Cdコマンドを実行すると、 ディレクトリスタックのリストを表示するので、
このリストから選択して、ディレクトリを移動する事ができます。

" :Cdコマンドの実行例
:Cd -i
:Cd -i コマンドの実行
" :Cdコマンドの実行例 その2
:Cd /Library

「-i」オプションを付けないで:Cdコマンドを実行した場合には、 vimエディタ組み込みの:cdコマンドと同じ結果を返します。

:PPAddDir、:PPAddPat、:PPRemoveDir、:PPRemovePat

「cdpath」は、:cdコマンド実行時に移動する先のディレクトリが見つからない時に、 移動先のディレクトリを探すためにvimエディタが使用するPATHのリストです。
通常、「cdpath」の設定は、vimエディタの設定ファイルに書くか、シェルの${CDPATH}にセットするのですが、 :PPAddDir、:PPAddPat、:PPRemoveDir、:PPRemovePatの4つのコマンドは、 「cdpath」の値を設定ファイルを変更する事無く、動的に変更することができます。

このスクリプトで「cdpath」に追加された情報は.viminfoファイルに情報が格納され、 次回のvimアプリケーション起動時に、自動的に「cdpath」に再セットされます。
(この挙動は設定により変更可能。)

" :PPAddDir、:PPAddPatコマンドの実行例
:PPAddDir /tmp
:PPAddDir
:PPAddPat src/**
" :PPRemoveDir、:PPRemovePatコマンドの実行例
:PPRemoveDir /tmp
:PPRemoveDir +5
:PPRemoveDir
:PPRemovePat src/**

:Cdpath

現在、「cdpath」に格納されている値を表示します。複数のPATHは、半角スペースで区切られます。

" :Cdpathコマンドの実行例
:Cdpath

設定

PushPop.vimスクリプトの挙動を制御する設定です。
vimエディタの設定ファイルに、下の設定を追加すると、 スクリプトの挙動が変えられます。

設定 説明 デフォルト値 設定例
pushpopPersistCdpath このスクリプトで変更した「cdpath」を保存し、次回vimアプリケーション起動時に「cdpath」に再セットするかどうか。0にすると保存しない。 1 :let pushpopPersistCdpath=0

注意事項など

このスクリプトを使用するには、vim6.3以降が必要です。

ドキュメントアクション
コメント
blog comments powered by Disqus