NetBeansサイド
FuelBeans 11 あなたが合わせるのでなく、ショートカットを合わせよう
せっかくビューの話をしたので、続けてもう少しやりたいけど…ああ、指が痙りそうです。先に、キーバインドやらせてください。
このチュートリアルを作成するにあたって、NetBeansを新しくインストールし直し、まっ更な状態から初めているもんで、いつもとキーバインドが異なっているんです。
そのおかげで、指が痙りそうです。ですから、先にキーバインドの話をしたいと思います。
(追記:文中キャロットはキャレットの間違いです。面白いので、残しておきます。)
若い人や、コンピューターを始めたばかりの人にキーバインドをやらせると、ドンドンと割り付け、なかには全部何かのキーに割り付けてしまう人もいます。
かと思えば、デフォルト信者もいまして、変更は悪だと考える人もいるのです。尊い技術者様が我々下々の者のため、一生懸命決めていただいた、割付を変更するなんて、っね。
どちらも、そのソフトを十分に活用できません。とくに、エディター系のソフトには当てはまります。
キーバインドを考えてみるのは、究極のUI設計です。あなたは自分が一番良く知っている人間、「自分自身」のために、ユーザーインターフェイスを設計するのです。
例えば、あなたはよく利用するソフトで、キーバインドに親しんでいるのは何でしょうか?vi?残念、emacsでしたら、NetBeansにも用意されています。同じIDEのEclipsを使ってらしたら、おめでとうございます。NetBeansにキーバインドが用意されています。
では、そのソフトで気に入らないキーバインドはなんでしょう?便利だけど、覚えられないバインドは?
どんなキーボードをお使いですか?フルキーボードオンリー?それともノート?
キーボードメイン派ですか?それとも、マウスと使い分け派?
指は長い?短い?ファンクションキーは使いますか?数字入力はテンキー利用?
こうした要素を考え、覚えやすく、打ちやすい割付を考えるのです。頭をフルに活用する、究極の作業です。
ご存じの方も多いでしょうが、現在のキーボード配列は、打ちづらく並べられています。もともとは、タイプライターの配列です。初期のタイプライターは機械式でした。人がキーを押し込む力で、文字を紙に打ち付けていました。
つまり棒の先にはんこをつけてそれを振り回して印字していたようなものです。使用者のスキルが上がり、余りにも早く打つようになり、その棒が元の位置に戻る速度に対応できなくなったのです。
更に、棒同士が絡まってしまうことも起きました。ですから、英語の単語中でしばしばつながっている文字の組み合わせは、離れて配置されています。
コンピューターが一般的になりだたころ、どこかのバカが統一の名のもとに、Caps Lockキーをホームポジションの横、打ちやすい場所へ移動してしまいました。もともとここには、通常コントロールキーがありました。もし、あなたがコントロールキーとの組み合わせのショートカットを使って、指がつりそうだとしても、あなたの責任ではありません。移動したバカのせいです。(まあ、コントロールキーは右左に存在しているのですけどね。昔は片方しかなかった物も多かったです。そうでなくても、コントロールキーや、シフトキーを両方使い分けるのが難しいものです。)
そして、キーバインド自体、そのソフトの前に存在した、似たようなソフトを参考にして決められることが多いのです。今では大抵のソフトでも標準となっている、コントロール+sでセーブとかは、たしか英語のワープロソフト、wordstarなどの影響を受けています。IDEを広く世に知らしめた旧ボーランドのターボシリーズで、プログラムの実行やデバッグなどをファンクションキーに割りつけました。今でも面影が残っていると思います。マイクロソフトのIMEは最初、日本で主流であったATOKとショートカットが異なっていたはずですが、それを合わせることでユーザーに使われるようになりだしたのです。こうした既に存在するキーバインドを取り込んでいく過程で、段々と複雑になり、覚え切れないくらい、割りつけられ、しかも、統一性が失われて行くのです。
コンピューターも、ソフトも道具です。特にIDEや含まれているエディターは、道具なのです。言いたいことはこれです。
「自分を道具に合わせるな。道具を自分に合わせろ。」
エクセルは素晴らしいソフトですが、同時に嫌いなソフトでもあります。ワードとショートカットが統一されていない部分が多く、しかもキーの割付が変更できません。(ワードは出来るのにですよ。)たぶん、複雑なソフトですから、コンピューターの性能が低い時代には、キー割付の仕組みが動作の負担になったのでしょう。また、プログラムが複雑になるのを嫌ったのかも知れません。もしかしたら、誰が使っても、同じ動作をするように、意図的に固定しているのかも知れません。
便利ですが、上から目線でこう言っているのです。「私が正しい。何も変える必要がない。」
さて、キーボードのCapsLockですが、初心者のうちは大変便利に思えます。ですが考えてください。文字を大文字で入れ続ける機会がどのくらいあるでしょうか?
大抵の方は、めったにないか、全然ないでしょう。それなのに、この機能のためにホームポジションの横という一等地が割り当てられています。
昔からコントロールキー+英字がショートカットとして利用されたのは、まだOSが現在程の機能を持たいない時代、プログラムがキーの一文字入力を待ち、そしてコントロール+英字で入力されるコントロールコードは文字として受け取ることができ、それによって特別な機能を実行できたからです。コントロールキーはコントロールコードと呼ばれる文字を入力するためのキーでした。
ですから、CapsLockの代わりにコントロールキーが一等地に存在していました。(大抵の場合です。現在と異なりキー配列は統一されておらず、会社によって異なっていました。)
今では、コントロールコードを入力する機会は全くありませんが、コントロールコードを利用したショートカットは残っています。ベテランさんであれば、多用されているでしょうが、多用すればするほど、指が攣りそうになります。(左右のコントロールキーを使い分けられることが出来る方は別です)
そのため、CapsLockキーをコントロールキーと入れ替える、もしくは、CapsLockキーを使用しせずコントロールキーにしてしまうのは、利口なやり方です。
Linuxであれば、入れ替える手法はディストリビューションに取り込まれていることもあります。私がよく使用するのは、UbuntuとopenSUSEですが、特にopenSUSEのKDEデスクトップでは、GUIによるキーボードの設定に、予め用意されており、初めてこの設定項目を見つけた時には感激したものです。
Windowsでもキーバインドを変更するソフトはたくさんあります。常駐型は多少うざったいこともありますが、現在はメモリもたくさん乗っかっており、マルチコアの時代ですから、これも選択しても支障ないでしょう。
私のXP環境では、マイクロソフトの日本人の方が作られた、レジストリー書き換え型ソフトで、CapsLockキーをコントロールキーに置き換えてしまっています。
もし、コントロールキーを利用したショートカットが便利だと感じ、多用したい、もしくは多用するつもりの方は、コントロールキー自体を一等地に持ってきて、使い勝手を向上する手段もあることを覚えておきましょう。今コントロールキーを使うことに慣れている人でも、使ってみると、その快適さにびっくりするでしょう。(私はそうでした。)
たくさん割りつけても、覚えていなければ、使わないどころか、邪魔になります。
デフォルトでもNetBeansは多すぎるキーバインドが割りつけられており、ミスタッチして、思ってもいないウィンドウがでたり、勝手に行が消えてしまったりと、大変です。
ですから、最初は必要最低限のものを残して、他は削除することをお勧めします。
こうした最低限の状態から、頭と感覚を利用して、キーを機能に割りつけましょう。
もし、あなたがキーとマウスを両方を使い分けるタイプのユーザーさんならば(一番多いでしょう)、マウスでやったほうが効率的なことは、キーボードに割りつけないことです。マウスはポインティングデバイスです。ある場所や範囲を指定するためのものですから、そうした目的にはマウスのほうが適しています。
もし、最低限の状態からスタートすることを選択するのでしたら、こちらのキー割付を最低限度にしてしまったバインドを利用していただくと、自分で削除する時間が15分ほど節約できます。(カーソルキーによる移動、選択、Home、End、PageUp、PageDown、BackSpace、Enterキーの一般的な動作、コントロールキー+ZXCVSFWの機能、TABの挿入、削除、メタキーによるコンテキストメニュー、コントロール+マウスホイールでのテキスト文字の拡大/縮小に絞っています。コードの補完や挿入系はそのまま残しているのは、今後の説明のためですが、使わない方は削除しましょう。)オプションウィンドウの下側、インポートボタンを利用して、読み込みます。
キーバインドを変更する場合は、自分独自のプロファイルを作ってからにしましょう。プリセットは後ほど参照したい時のために、残しておきましょう。ツール→オプション→キーマップ→プロファイルを管理で、プロファイルを複製し、それを修正しましょう。
NetBeansのキーバインドはコントロールキー、シフトキー、ALTキーの組み合わせで、その他のキーと結びつけます。実際、これらのキーとの組み合わせでなくともOKです。
例えば、オプションウィンドウを開く機能にoption、つまりo、p、t、i、o、nと順番に叩いた場合を割り付ければ、optionと入力することで、オプションウィンドウが開きます。もちろん、通常はやりません、o、op、opt、...optionの組み合わせがコマンドとなってしまうため、これらの文字列を入力できなくなります。
コントロール・シフト・ALTのあらゆる組み合わせと、あらゆるキー、そして何ストロークであっても、機能と結び付けられます。
一般には2ストロークタイプのキーバインドは、最初にコントロールキーの組み合わせを押したら、次の組み合わせも押したままで叩きますが、一部のソフトでは、最初はコントロールキーと組み合わせても、2つ目はコントロールキーを押さないでアルファベットを押すようになっていることもあります。上部メニューを利用したショートカットはこの形ですね。
NetBeansでは、お好きなように設定できます。最初はコントロールキーとアルファベット、2つ目はシフトキーとアルファベット、3つめはALTと数字の組み合わせ、4つめはコントロール+シフト+ALT+ファンクションキーなんていう、変態的なキーバインドも作成できます。まあ、やりませんね。普通は。
更に一つの機能に、複数のキーバインドを割りつけることも出来ます。
また、上部メニューに対するアクセスのショートカット、ALT+英数字は、固定になっています。変更できません。逆に言えば、定義しなくても利用できます。
オプションウィンドウのキーマップで指定します。アクション(機能)、ショートカット、カテゴリーの欄にわかれています。
ショートカットの欄をダブルクリックするか、右側の四角いアイコンをクリックし編集を選ぶことで、ショートカットにするキーバインドを指定できます。
編集中に叩いたキーのコンビネーションがそのまま登録されていきます。フォーカスを外すため、別の項目をクリックするか、Enterキーを叩くと、登録完了です。
編集中の右アイコンは、キー入力できないキーを指定するために使用します。タブ、矢印キー、Enterキー、エスケープキー、それとマウスホイールです。マウスホイールはバグっているようで、割りつけても動作しません。
自分で指定したショートカットが気に入らなければ、右側のアイコンで、消去を選びバインドの登録を削除するか、編集で新しいキーバインドを指定するか、デフォルトでデフォルトのキーバインドに戻しましょう。
既にショートカットが登録されている時に、右側のアイコンをクリックすると、代替えを追加も選べます。これは、一つの機能に複数のショートカットを登録するときに利用します。
直感的に設定できますので、難しくありません。
もし特定のキーマップへ慣れているのでしたら、迷うことはありません。そのキーマップを取り入れましょう。
まず考えるべきは、カーソルの上下左右の移動です。矢印キーを使っているのでは、ちょっとした移動のたびにホームポジションから指が離れてしまうことになります。
vi系ではホームポジションのhjklで左上下右、emacs系ですと意味のある英単語の頭文字、例えば右ですとコントロール+Fで、forward(前方へ)と言葉をベースに割りつけられています。ダイヤモンドカーソルという、カーソルが今のCapsLockの位置にあった頃によく使われたキーマップはコントロールとの組み合わせでSDは左右、EXで上下、RCはページ単位のスクロール、Aは行頭、Fは行末とキーボード上の位置に合わせて割りつけられていました。
移動系はキーボード上の物理的な配置によって割りつけるのが、覚えやすいです。ダイヤモンドカーソルは使いやすかったですが、左手がメインであるのが残念なところです。
私は右利きです。ですから、コントロールキーを左で押し、右のホームポジション近くで移動したいがため、JKで左右、UNで上下を割りつけています。これは日本語入力で文節の決定が下カーソルか、コントロール+Nに割りつけられていますので、これと矛盾しません。
行頭、行末への移動はどう考えましょう。一つはダイヤモンドカーソルのように左移動の左は行頭、右移動の右は行末とキー位置の物理的な関係で配置する方法です。
もう一つは移動系のショートカットにシフトキーを兼用した時、できるだけ移動するように割りつける方法もあります。例えばコントロール+Sが左なら、コントロール+シフト+Sは行頭に割りつけます。
また、同様に極端に移動する場合に使う別のキーを割り当て、2ストロークにする方法もあります。極端に移動する意味をコントロール+Qに持たせ、続いて移動系のショートカットを押した場合は、できるだけその方向へ移動するように割り付けます。ダイヤモンドカーソルはたしかこの方法でした。コントロール+Qに続けてSDEXRC(左右上下ページ上下)を押した場合、順番に行頭、行末、画面最上部、画面最下部、ファイル先頭、ファイル最後へ移動しました。
現在はマウスが存在していますので、大きな移動時にはマウスを使用することにするならば、それほど多くのショートカットはいらないでしょう。ノートパソコンを使用する方なら、必要になるかも知れませんね。
私は大きな移動や選択はマウスを利用します。コントロール+Eを極端(Extream)と覚え、続けてJK(左右)を叩いた時に行頭、行末にしました。
削除系のキーもホームから離れてしまいます。BackSpaceはまだしも、Deleteは遠いですね。私はカーソル位置から見て左を削除はコントロール+H、右を削除はコントロール+Gを割りつけています。一応行頭まで削除、行末まで削除をコントロール+Eに続けての2ストロークコンビネーションで登録していますが、使ったことがありません。
パックスペースや、Delete、Home、Endキーも長い間の習慣で利用することがあります。その時にInsertキーをミスタイプしてしまうと、インサートモードがオーバーライトモードへ変わってしまい、びっくりします。これを防ぐため、Insertキーは使用していません。ショートカットを削除しています。(つまり、無効にしているのです。)
小さな工夫ですが、Enterキーを叩く場合、ホームから右の人差し指が離れてしまいますので、改行をコントロール+Mに割りつけています。日本語入力もEnterキーを押した時と同様、全文節の変換決定ですので、合致しており迷いません。
コントロールとのコンビネーションでは、SZXCVを多用します。Z(やり直し)の相方のY(再度実行)はほとんど使いませんので、行選択に割り当てています。行選択は1行だけの時は、このショートカットを用い、2行以上の時はマウスを利用しています。どこから、どこまで選択するかというポイントに頭が切り替わっているので、それまでの作業と脳内モードが異なります。そうしたタイミングであれば、キーボードから指を離し、マウスに持ち替えても、苦痛になりません。
逆にいえば、コーディングに集中している場合にはできるだけ、キーがホームポジションから離れないように設定しています。マウスに持ち替えるタイミング、または、2ストロークを利用するときは、どこへ移動するかとか、どこを選択するかという、脳内がコーディングから離れ、編集モードになったタイミングで行うようにしています。
NetBeansでは割付は、何ストロークでも可能ですが、深すぎても使いづらいですので、2ストローク、多くても3ストロークで割り付けましょう。多用するものほど、1ストークにしましょう。2ストローク、3ストロークは1ストローク目を叩くときに、脳内のモードが切り替わるものにしましょう。そのため1ストローク目には何か意味をもたせるのもいいかも知れません。例えば、コントロール+Wはウィンドウ関連、コントロール+Fはファイルもしくは特別な機能(ファンクション)と言うようにです。ワンストロークを叩いたときに、脳内モードが切り替わる、切り替えるようにします。
こうした自分の思考の癖や注意の払い方を把握しておけば、セットしたキーバインドは実にスムーズに使用できるはずです。
くれぐれも、多すぎないように。良く利用するものを最小限に設定するのが原則です。
整形:デフォルトではALT+シフト+Fが割りつけられています。また上部メニューを利用したショートカットではALT+S、Fになります。コードテンプレートなどの入力補正を使い出すと、多用することになります。ALT+シフトでなく、ALTかコントロール単独+アルファベットに割りつけることをお勧めします。
toggle comment:コメント/非コメント切り替えです。選択範囲全体をコメントにします。選択していない場合、その行のコメントを切り替えます。デフォルトでは2つのキーバインドが採用されていますが、コントロール+/をお勧めします。PHPでも行コメントは//ですので、覚えやすく、打ちやすいショートカットです。
単語を選択:その名の通り、キャロット位置の下にある単語を選択します。デフォルトでは割りつけられていません。基本的な選択ですので、私はコントロール+Iに割りつけています。
次の要素を選択、前の要素を選択:名前からは想像できませんが、キャロト(カーソル)位置から段々とブロック単位に選択範囲を広げる/狭める機能です。これは強力です。デフォルトではALT+シフト+ピリオドとカンマに割りつけられていますが、コントロール+ピリオド、カンマに割りつけることをお勧めします。
挿入ポイントを行のテキストの先頭へ、挿入ポイントを行の終わりへ:いわゆる行頭移動、行末移動です。多用する機能ですが、デフォルトではHomeとEndへ割りつけられています。そのたびに、ホームポジションから手が離れてしまいますので、離れなくて済むようなショートカットを考えましょう。
名前を変更:名前を変更という機能が4つもありますが、これはカテゴリーがその他の名前を変更です。これは、現在編集中のエディターの中で名前を変更するものです。変更した名前はタイプする毎に即時反映され、一斉に変更されていきます。一番利用価値が高いでしょう。
次に、カテゴリーがリファクタリングの名前を変更は複数ファイルにわたって変更するための機能です。その名前が含まれている全箇所が表示され、変更する場所はチェックを付け、変更しない場所はチェックを取り、確認が終わったら実行します。
システムの名前を変更はファイル名の変更、プロジェクトの名前の変更はプロジェクト名の変更です。この2つのショートカットは不必要ですね。
ショートカットの一覧をhtmlへ出力する機能が存在しているのは、キーの割付のところに表示されるため、知ってはいたのですが、何も出力されていないようなので、バグっているのかと思い忘れていました。
今日検索したら、やっと出力場所がわかりました。
まず、出力方法ですが、わざわざショートカットを定義する必要はありません。NetBeansの右上の検索は機能の検索ができます。そこに「ショートカット」と入力してください。ショートカットをHTMLで出力という項目がでますので、選択します。
出力先は現在のバージョン7.1の場合、Documents and Settings\ユーザー名\.netbeans\7.1\config\shortcuts.htmlになります。
これをブラウザで見れば、キーバインドがバッチリ分かります。
| FuelBeans 9 : ウィンドウに親しむ< 前 | 次 >FuelBeans 13 : ファイルとコードのテンプレート |
|---|
| < 前 | 次 > |
|---|