エディターやIDEで関連するファイルを一度に開く方法

タグ: KATE  

なにも自分の使用しているエディターやIDEに関連するエディターを一度に開く機能が無くても悔しがることはありません。ちょっとした工夫で便利になります。

やりたかったのはaaaを指定し、sed/aaa.sedとja/aaa.mdかja/aaa.phpを開くことです。sedフォルダーとjaフォルダーには多くのファイルが存在しているため、スクロールアップ・ダウンするのが面倒なのでした。

フォルダーにファイルが多くなくても、関連するファイルがべつのディレクトリーに存在していると、面倒ですよね。

つまるところエディターの拡張機能を利用できれば良いのですが、それが面倒であれば、コマンド作っちゃいましょう。最近のエディターはコマンドラインを簡単に使用できるようになっていますし、Linuxのディスクトップ環境であれば伝統的にALT+F2でコマンドを実行できます。エディターやIDEにコマンドラインが無くても、端末ウィンドウを開いて置くのはよくやるでしょう。

確認作業

これを行うには、まず確認作業が必要です。最初はコマンドラインから複数のファイルが開けるか確認しましょう。もちろん、自分が使用しているIDEやらエディターやらのコマンドラインで、どうやって開くファイルを指定できるのかも確認しましょう。この時、ちゃんと既存のファイルを2つ以上開けることを確認しておきましょう。(冗談のようですが、開発途中のエディターでは、コマンドラインから開けなかったり、複数のファイルを上手く処理できなかったりします。)

次に予め既存のファイルを開き、それの内容を更新し、保存はしないでおきます。次に、コマンドラインからそのファイルを開いてください。何の警告もなくせっかくの修正が、再度読み込まれた古い内容に置き換わらないことを確認しましょう。ベストなのは、黙って修正内容をそのままにしておいてくれることです。開く対象が既にそのIDEやエディターで開いているなら、何もしない賢い仕様になっていることを確認しましょう。

ちょっと口うるさい小姑のようですが、「開いていますよ。更新されていますよ。どうしますか?」と訪ねてくるのはまあ合格です。しかし、黙って別のウィンドウで開いちゃったり、修正した内容を古い内容で上書きするのはアウトです。諦めてください。

コマンドを作成しましょう。

大抵のIDEやエディターなら合格します。では、コマンドを作成しましょう。実行パスの通っているフォルダーにお好きな名前でシェルプログラムを作成しましょう。

#!/bin/bash

kate /home/hiro/project/sed/$1.sed /home/hiro/project/ja/$1.md

一番簡単なサンプルです。説明の必要もないでしょう。linuxのbashスクリプトでkateエディターを使用する例です。最初の引数をファイル名としてエディターで開いています。

ちょっと工夫したいならば、ファイルの存在チェックをしましょう。

#!/bin/bash

sedfile="sed/${1}.sed"
mdfile="ja/${1}.md"
phpfile="ja/${1}.php"

if [ ! -f $sedfile ]
then
    echo $sedfileが存在しません。
    exit 0
fi

if [ -f $mdfile ]
then
    kate $sedfile $mdfile
else
    if [ -f $phpfile ]
    then
        kate $sedfile $phpfile
    else
        echo $mdfileも$phpfileも存在しません。
        exit 0
    fi
fi

いろいろツッコミどころはありますね。面倒なので、全部exit 0で終了しています。フルパスでファイルを指定していません。

フルパスで指定していないのは、これはkateのプロジェクト管理と合わせて使用する目的だからです。Current Projectという下部のウィンドウはいつもそのプロジェクトのトップディレクトリーがカレントディレクトリーになってくれるので、そこからの相対パスで指定しています。

このスクリプトはsedディレクトリー中のsedファイルをまずチェックします。これは必須だからです。jaの中は同名のphpかmdファイルが存在すればOKなのでどちらか一方が存在すれば開くようにしてあります。phpとmdファイルは同時に存在させないように管理しています。

私はこれにbothという名前をつけています。Kateの下部のCurrent Projectウィンドウでboth aaaとタイプすれば、関連する2ファイルが開く仕組みです。簡単です。他のOSやエディター、IDEでも応用の効く考え方です。