emacs初心者が学んでおきたい xyzzyの10+αの機能かも

ファイル名: -

 isearch-deco2     

xyzzyやemacsは、普通に生活していたら使わない概念があったり、意外と便利な機能がありそこまで出来るのか!?と驚くこともしばしばです。最初は戸惑う独特の使用方法、でも便利で使いたくなった機能を紹介します。

かなり調べるのに時間がかかったり、しばらくそのような機能があることに気づかなかったりしたものを特に、今回共有したいと思います。

 

それでは、どうぞ!

 

(Q)ソートしたい

(A)コマンドプロンプト経由(sortコマンド)を使って、xyzzyのバッファ上のテキストをxyzzyの中だけでソートが出来ます。

これでリージョンを範囲をソートできます(xyzzyの内部動作はリージョン範囲を sort.exeに渡し、結果を再度リージョン範囲に割り当てることをしてくれる) sortのコマンドを例えば変えて、treeコマンドや DIRで値をパスで渡せますね。

ちなみにバッファ全体の場合 "|"ではなく、"#" です。filter-bufferと言って、ちょっと概念が違いますが、この場合は同じような使い方です。 "|"ではなく、"&"に変えた場合場合は、は単なるコマンドの実行です。 rubyでバインド例

 

(Q)ソースの一部だけ編集して、他のところを編集させないようにしたい。

(A)リージョンで範囲を指定して C-x n (narrowing 狭める)/ C-x w(widing 広げる) 範囲外は編集できなくなります。戻すときに w の方を使ってください。

リージョン(region)は カーソル位置と、C-SPC (私はC-@を設定してますが)でマークしたカーソル位置の間の範囲です。いわゆる選択範囲のようには反転されないため、見えないです。  

 

(Q)各行の先頭に同じ文字 # とかを入力したい

(A)指定範囲に対して面倒な作業不要でさくっと処理できます。

範囲をリージョンで指定し、M-x string-rectangle です。その後文字を入力します。  

右クリックメニューに引用付き貼付けをするをどうぞ  

 

(Q)ちょっと日付や暦を確認したい

(A)M-x calendarカレンダーをxyzzy内にカラフルに表示させます。ちなみに カーソルを祝日に合わせるとすごいことに(う~ん作りが細かい!)。  

 

(Q)ちょっと計算したい

(A) M-x calc を使って、バッファ内で文字で計算(普通の電卓のように)できます。いろいろ関数がたくさんあり、式が残ったりする(コピペで再利用できる)ので便利です。

分数や小数点なども問題なく動きます。 sqrtやべき乗など、よくある計算方法も関数で豊富に用意されています。  

(Q)ファイル開いたら、文字化けしてたんですけど、秀丸の「閉じて開く」みたいなものはありませんか?・・

(A)コードを変更するには、C-u M-x revert-buffer して、 文字コード ( sjis, euc-jp, jis など ) を入力すれば変更できます。 Version 0.2.0.125 、Version 0.2.0.121(こっそり):文字コード名 | 文字コードを勉強したい人はこちら

今開いているバッファのファイルエンコードを変更したい場合は C-x C-k f [=>change-fileio-encoding関数]

バッファの改行コードを変換の場合は、C-x C-k n [=>change-eol-code] でトグルします。

それでもダメな場合、残念ですが閉じてから、 メニューから開いてエンコードを指定してください。  

 

(Q)ちょっとエンコードしたいのですが

(A)単なる文字化けは 上の revert-bufferをします。 メールの場合は M-xのあと多分これです。それ以外はファイルの名前をつけて保存して、その時にエンコードを指定します。

  • Base64 : base64-decode-region-to-file
  • uudecord : uudecode-region-to-file

 

(Q)矩形選択のやり方を教えて欲しい・・

(A) Ctrlキーを押しながらマウスで通常とほぼ同じようにコピー操作し、矩形貼り付け>挿入からできます。

詳しくはこちらをどうぞ メールアーカイブ:枠線と矩形    

 

(Q)wordチックな文字列のドラッグ&ドロップをしたい

(A) GUIの設定で可能です。ツール>共通設定>さまざま>D&D設定 チェックで可能になります。

文字列を選択して、マウスで移動可能になります(ちなみに、Ctrlを押せば アイコンに+がついて、コピーになります。)。  

 

(Q)xyzzy上で javaをコンパイルしたい

compileResult

ミニバッファーからコンパイルした時の画面表示(上下②分割され上に、コンパイル結果が出力)

command

xyzzy上でのコンパイルの仕方(ミニバッファ)

xyzzy上でwindowsのDOS窓処理をすることが可能です。ウィンドウを内部で上下2つ開き、コンパイル結果で対応するソースのエラー箇所へジャンプしたりできます。

やり方

  1. シェルを起動する方法は C-x & (C-xの後に & を押す : (execute-subprocess))です。
  2. ミニバッファ上で javac hogehoge.java [RET]
  3. すると dosプロンプトで表示していたような結果が、画面上部に結果が出ます。
  4. F10,F11でGrepのようにエラー行にジャンプできます。

M-x shell とすると、xyzzy中にコマンドプロンプトが出ます(bashなどの設定も *eshell*で可)。 C-x kで exitします。(履歴等が使いやすくなる shell3.l、キーワード設定したものは放置中)

C-x & の他に  | ,#があります。 上記のsort のように使えます。  

 

(Q)interactiveってなんですか?

(A)関数を キーに割り当てて動的に起動する設定です。

インタラクティブは対話というニュアンスがあります。静的な関数だと毎回同じ返信が関数から返りますが、インタラクティブだと引数を渡して処理に柔軟性をもたせたり、状況に合わせて関数の処理を対応させることができます。

M-x で起動できるようになったり、一覧で表示できるようになります。 (単純なサブルーチン的な関数は interactiveにしません。また関数以外で動的に呼び出せません)

 

(interactive "p"):C-u や M-1 などの数値を受け付けて各関数が独自の処理を行えるよう(各関数の拡張を)、引数引渡し処理をlispがサポートします。

例えば C-k は kill-lineですが C-u C-k とすると 4が引数に渡され、 4行分の kill-lineが実行されます。 C-u 6 4 C-k など 間に数字を入れた場合は、その数字の回数分実行します。( 0の場合 かつ kill-line関数の場合は行頭に向かった killを処理します[処理は関数依存]。)

nの場合はほぼ同様で、mini-bufferです。 rの場合は、 リージョンの2地点のポイントが引数で渡されます。 関数はこんな定義:

その他 *は 読み取り専用はNGの設定、fはファイルなど10個以上あります :)

 

それでは xyzzyライフ を  楽しんで!!

Bookmark this on Yahoo Bookmark
Buzz This
Bookmark this on Delicious
Bookmark this on Digg
Share on reddit
Share on LinkedIn
Bookmark this on @nifty clip
LINEで送る
email this
Pocket




コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です