Date: | 2013-11-03 23:00 |
---|---|
tags: | kaa, Python3 |
slug: | kaa-doc-ja |
kaa はシンプルで簡単に使える、コンソール用テキストエディタです。
Contents
kaa は簡単かつ高機能なテキストエディタで、次のような機能を備えています。
- マクロ記録
- Undo/Redo
- マルチウィンドウ・マルチフレーム
- 構文ハイライト
- Grep
- Python デバッガ
- オープンソース・ソフトウェア(MITライセンス).
- などなど
http://kaaedit.github.io にもスクリーンショットが公開されています。
kaaは高機能ですが、簡単に扱えるようになっています。まず最初に、「メニューは f1 キーか alt+m で表示する」ということだけ覚えてください。ほとんどの機能は、このメニューから利用できます。メニューには下線が引かれた文字がありますので、その文字のキーを押して実行します。MS-Windowsのメモ帳のように、わかりやすく使えるように配慮されています。
kaa はプログラミング言語 Python で開発されており、簡単な Python スクリプトでさまざまなカスタマイズを行えます。
kaa はCUI環境用のエディタで、LinuxやMac OS Xなど、多くのUN*X系オペレーティングシステムで動作します。kaa はUnicodeアプリケーションで、kaaを実行するプラットフォームとターミナルエミュレータはどちらもUnicodeをサポートしている必要があります。
MS-WindowsのCygwinは、現在のところサポートしていません。今後、CygwinでPython3.3以降がリリースされたあと、kaaの動作確認を実施する予定です。
Python 3.3以降。
Python 3.3 開発用ライブラリ。Debian/Ubuntuでは、
$ sudo apt-get install python3-dev
で必要なファイルをインストールできます。
Pythonをパッケージ管理システムからインストールするのではなく、独自にビルドして利用する場合、ビルドする前に、ワイド文字をサポートした ncurses ライブラリをインストールしておく必要があります。Debian/Ubuntuでは、
$ sudo apt-get install libcursesw5 libncurses5-dev libncursesw5-dev
で必要なファイルをインストールできます。インストール後に、Pythonを再ビルドしてください。
UTF-8 locales(ja_JP.UTF-8など)
(オプション) Cython
easy_install3 や pip-3で、PyPI からインストールします
$ sudo easy_install3 -U kaaedit
kaaでは、alt+k のような alt キーを使った操作を利用します。最近のWindows や Linux のターミナルエミュレータではそのまま利用できますが、Mac OS X のターミナルやiTermでは、以下の設定が必要になります。
Mac OS X のターミナルの場合 :
- 「環境設定」メニューを開く
- 「設定」タブを開く
- 「キーボード」タブを開く
- 「メタキーとして option キーを使用」をチェックする
iTermの場合 :
- 「Preferences」メニューを開く
- 「Profiles」タブを開く
- 「Keys」タブを開く
- 「Left option Key acts as: +Esc. 」 ボタンと「Right option Key acts as: +Esc. 」 ボタンをチェックする
Gnome terminal では、f1 キーでメニューを表示する場合は次のように設定します。
- 「Edit | Keyboard shortcuts」メニューを開く
- ショートカットに「Help/Contents」が表示されるまでスクロールし、f1キーを別のキーに変更する。
kaaは256色モードをサポートしていますが、256色モードを使えるようにするには、ターミナル設定の変更が必要となる場合があります。 Max OS Xのターミナルの場合、
- 「環境設定」メニューを開く
- 「詳細」タブを開く
- 「ターミナルの宣言方法」で、「xterm-256color」を選択する
iTermでは、次のように設定します。
- 「Preferences」メニューを開く
- 「Profiles」タブを開く
- 「Terminal」タブを開く
- 「Report terminal type」で、「xterm-256color」を選択する
これ以外のターミナルエミュレータでは、手動での端末種別設定が必要な場合があります。 Gnome terminalなどでは、~/.bashrc ファイルに、次の一行を追加してください。
export TERM=xterm-256color
ターミナルの設定については、http://www.pixelbeat.org/docs/terminal_colours/#256 などを参考に256色モードを有効にしてください。
kaa は以下のコマンドラインオプションをサポートしています。
usage: kaa [-h] [--version] [--no-init] [--init-script INIT_SCRIPT] [--palette PALETTE] [--term TERM] [file [file ...]]
-h, --help | show this help message and exit |
--version | show version info and exit |
--no-init | skip loading initialization script |
--init-script INIT_SCRIPT | |
execute file as initialization script instead of default initialization file | |
--palette PALETTE | |
color palette. available values: dark, light. | |
--term TERM, -t TERM | |
specify terminal type | |
--command command, -x command | |
spefify kaa command id to execute at startup e.g: kaa -x python.console / kaa -x tools.grep |
kaaは直感的に使えるように配慮されており、文字キーをタイプすれば文字が入力され、カーソルキーや削除キーもそのまま使えるようになっています。
f1 キーか alt+m (altキーを押しながら m キーを押す) でメニューを表示します。メニューの項目には下線が引かれた文字がありますので、その文字をタイプすると実行します。日本語入力中でIMEが日本語入力モードになっている場合、altキーを押しながらメニューキーをタイプすると、IMEが日本語入力モードのままでもメニューを選択できます。
メニューを終了するときは、エスケープキーでキャンセルします。
New | 新規作成 |
Open | ファイルを開く |
File info | ファイル情報を表示する。また、タブ・インデントなど のファイル別設定を変更する。 |
View Diff | 元のファイルと、現在のバッファの差分を表示する |
Save | ファイル保存 |
Save As | ファイルに名前をつけて保存 |
Close | アクティブなフレームを閉じる |
Save all | すべてのファイルを保存する |
Close all | すべてのフレームを閉じる |
[Recently] | 「最近のファイル」メニューを開く |
Quit | kaaを終了する |
Recently used files | 最近使ったファイルの一覧を表示する |
Recently used dirs | 最近使ったディレクトリの一覧を表示する |
Cut | 選択文字をカット |
Copy | 選択文字をコピー |
Paste | クリップボードからペースト |
Paste History | クリップボード履歴から選択してペースト |
Undo | 最後の修正を取り消し |
Redo | 最後の undo を取り消す |
Search | 文字列検索 |
Replace | 文字列置換 |
Complete | 単語補完 |
[Convert] | 文字列変換メニューを表示 |
Upper | 選択文字列を大文字に変換する |
Lower | 選択文字列を小文字に変換する |
Normalization | 選択文字列を正規化形式KCで正規化し、半角カナ->全角 などの変換を行う |
Full-width | 選択文字列の数字やアルファベットなどを全角に変換 する |
Codeメニューは、ファイルの種類によって異なります。プログラミング言語では、以下のような項目が表示されます。
Comment | 選択範囲した行をコメントにする |
Uncomment | 選択した行のコメント解除する |
Table of contents | 目次を表示し、選択した項目にカーソルを移動する |
Start record | マクロ記録を開始する |
End record | マクロ記録を終了する |
Run macro | 最後に記録したマクロを実行する |
Python console | Pythonスクリプトを実行する |
Grep | 指定したディレクトリからファイルを検索する |
Paste lines | 自動インデントせずにテキストをペースト |
Shell command | シェルコマンドを実行し、結果を入力 |
Make | make コマンドでソースファイルをコンパイル
し、結果を表示します。f9/f10キーで前後のコンパ
イルエラーに移動します。 |
Frame list | フレーム一覧を表示。カーソル左右でフレームを 選択する。 |
Split vert | ウィンドウを縦に分割する |
Split horz | ウィンドウを横に分割する |
Move separator | ウィンドウの分割位置を変更する。カーソル左右で、 分割位置が更新される |
Next window | 次のウィンドウに移動 |
Prev window | 前のウィンドウに移動 |
Join window | 分割したウィンドウを結合 |
[Switch file] | ウィンドウ変更メニューを表示 |
Switch file | ウィンドウで表示しているファイルを切り替える。 カーソル左右でファイルを選択する。 |
New file here | 現在のウィンドウで新規にファイルを作成 |
open file here | 現在のウィンドウでファイルを開く |
Recently used files | 現在のウィンドウで最近使ったファイルの一覧を表示する |
Recently used dirs | 現在のウィンドウで最近使ったディレクトリの一覧を表示する |
F1, alt+m | メニューを表示 |
Alt-w | ウィンドウ変更メニューを表示 |
左、Control+b | カーソル左 |
右, Control+f | カーソル右 |
上 | カーソル上 |
下 | カーソル下 |
Control+p | 1行上の物理行に移動 |
Control+n | 一行下の物理行に移動 |
Control+left, Alt+b | 一つ前のワード境界に移動 |
Control+right, Alt+f | 次のワード境界に移動 |
Alt+p, Page up | 次ページ |
Alt+n, Page down | 前ページ |
Control+a, Home | 行頭 |
Alt+^ | 行頭の非空白文字 |
Control+e, End | 行末 |
Alt+<, Control+Home | ファイルの先頭 |
Alt+>, Control+End | ファイルの末尾 |
Control+g | 指定した行番号へ移動 |
Control+t | 目次を表示 |
Shift+left | 前の文字へ選択 |
Shift+right | 次の文字へ選択 |
Shift+up | 上の行へ選択 |
Shift+down | 下の行へ選択 |
Shift+Home | 行頭まで選択 |
Shift+End | 行末まで選択 |
Control+Shift+Home | ファイルの先頭まで選択 |
Control+Shift+End | ファイルの末尾まで選択 |
Control+Space, Control+@ | テキスト選択マークを設定。 |
Alt+# | テキスト矩形選択マークを設定。 |
Alt+a | すべてのテキストを選択 |
Alt+c | 一度押すと現在の単語、2度目は現在の行、3度目は すべてのテキストを選択する |
Backspace, Control+h | 前の文字を削除 |
Delete, Control+d | カーソル位置の文字を削除 |
Control+backspace, Alt+h | 前の単語を削除 |
Control+Delete, Alt+d | カーソル位置の単語を削除 |
Control+k | 行末まで削除 |
Alt+k | 行全体を削除 |
Control+v | クリップボードからペースト |
Control+x | カット |
Control+c | コピー |
Alt+v | クリップボード履歴からペースト |
Control+z | 最後の編集を取り消す |
Control+y | 最後のUndoを取り消す |
Control+s | テキスト検索 |
Alt+s | テキスト置換 |
F2 | 前を検索 |
F3 | 次を検索 |
F6 | マクロ記録開始・終了 |
F5 | マクロ実行 |
Alt+. | 直前の編集コマンドを再実行 |
Tab | 選択行をインデント |
Shift+Tab | 選択行をインデント解除 |
Control+o | 単語補完 |
Control+u Alt+! | シェルコマンドを実行し、結果を入力 |
置換ダイアログで regex ボタンをチェックしている場合、Search と Replace に指定した文字列は正規表現文字列となります。この場合、\t や \n などの特殊文字はそれぞれタブ文字と改行文字に変換されます。
同様に、バックリファレンスも検索条件に一致した文字列で置換されます。例えば、検索文字列が '(a+)(b+)' で置換文字列が '\2\1' の場合、文字列 'aabb' は 'bbaa' に置換されます。
Grepダイアログの Search には検索文字列を、Directory には検索を開始するディレクトリを、Filename には検索対象となるファイル名のパターンをシェル形式のワイルドカードで指定します。ファイル名は、スペースで区切って複数指定できます(例: *.txt *.py *.doc)。各項目では、カーソル上キーでこれまでの入力履歴が選択可能となります。
検索結果ウィンドウでは、エンターキーで現在行のファイルにジャンプします。その後 f9 キーと f10 キーで前後の検索結果に移動できます。
対話的にPythonスクリプトを評価・実行します。スクリプトを実行するときには、入力したスクリプトの末尾にカーソルを移動してEnterを入力します。スクリプトの途中でEnterを入力した場合には、改行文字が挿入されます。
Kaa は、Pythonのデバッガモジュール(bdb
) のフロントエンドとして、他のプロセスで実行する Python スクリプトをデバッグできます。Kaa自身はPython3.3以降でのみ動作しますが、デバッグ対象のプロセスではPython2.6以降のPythonインタープリタをサポートしています。
Pythonデバッガは、以下のいずれかの方法で起動します。
kaadbg
パッケージをPythonインタプリタで起動し、デバック対象のプログラムをkaaに接続します。 kaadbg
パッケージは kaa の一部としてインストールされますが、Python 2.6/2.7でのデバッグを行う場合は、別のパッケージとして個別にインストールできます。
$ sudo pip install -U kaadbg
kaadbg
は、Python2.6 〜 3.x のデバッグをサポートしています。
デバッガを起動するとき、まずkaa のメニューで [Tools]|Python debugger server
を選択し、表示されるフォームにデバッガで使用するポート番号(デフォルトでは 28110
) を指定します。
次に、kaa を実行しているターミナルとは別のターミナルを開き、以下のコマンドを実行します。
$ python -m kaadbg.run my_test_stript.py arg1 args
kaaデバッガのポートとして 28110 以外を指定した場合は、コマンドライン引数 -p
でポート番号を指定してください。
$ python -m kaadbg.run -p 29000 my_test_stript.py arg1 args
kaadbg
パッケージをデバック対象のプログラムにインポートし、Python標準の pdb
モジュールのように set_trace()
でデバッガに接続できます。
デバッグの開始は、kaa のメニューで [Tools]|Python debugger server
を選択し、表示されるフォームにデバッガで使用するポート番号を指定します。
デバック対象プログラムの、デバッガを起動する位置に以下の処理を追加します。
import kaadbg.debug
kaadbg.debug.set_trace()
kaaデバッガのポートとして 28110 以外を指定した場合は、set_trace()
の引数として指定します。
import kaadbg.debug
kaadbg.debug.set_trace(29000)
テスト対象プログラムを起動し、set_trace()
が実行されるとkaaデバッガに表示されます。
テスト対象プログラムを kaa の子プロセスとして起動し、デバッグします。
まず、kaa のメニューで [Tools]|Python debugger
を選択し、テストコマンドを指定します。テストコマンドは、
python3.3 -m kaadbg.run myscript.py arg1 arg2
のように、python3.3 -m kaadbg.run
の引数として、テスト対象のスクリプトとパラメータを指定して実行します。
この方法でデバッグを実行すると、対象プログラムの標準入力はすぐにクローズされます。また、標準出力・エラー出力も表示されません。
ブレークポイントのオン・オフは、Pythonモードでメニューの [Code]|Toggle Breakpoint
を選択して行います。デフォルトのキー設定では、f8
キーに割り当てられています。
デバッガウィンドウが表示されている時は、エスケープキーで一旦デバッガウィンドウを閉じ、エディタウィンドウでブレークポイントを設定します。設定終了後、もう一度メニューで [Tools]|Python debugger
を選択すると、デバッグを再開できます。
ブレークポイントの一覧は、デバッガウィンドウの Breakpoint
で表示します。
停止位置での変数の表示は、デバッガウィンドウの Expr
を指定し、self.field1
のように、表示する式を入力してエンターキーを押します。
[Tools]|Make
で make
コマンドを実行し、ファイルをコンパイルします。実行時にはコマンドやオプションを指定し、過去のコマンド履歴を参照する場合はカーソル上キーを押します。
make
の実行結果はウインドウに表示され、エンターキーでエラーが発生しているソースファイルを表示します。前後のエラーに移動するときは、f9/f10 キーを押します。
kaa は、起動時に ファイル ~/.kaa/__kaa__.py をPythonスクリプトファイルとして実行します。このファイルには、kaa をカスタマイズするためのスクリプトを記述できます。
色パレットを、light
に設定します。
import kaa
kaa.app.DEFAULT_PALETTE = 'light' # `light' テーマを指定。デフォルトは`dark'
from kaa.filetype.default import defaultmode
defaultmode.DefaultMode.SHOW_LINENO = True
defaultmode.DefaultMode は全てのテキストファイル用編集モードの基底クラスで、 Defaultmode.SHOW_LINENO が True なら全てのファイルで行番号を表示します。
個々のファイルタイプで行番号の表示・非表示を設定する場合は、そのファイル編集モードクラスの SHOW_LINENO を設定します。
# Show line number in HTML mode
from kaa.filetype.html import htmlmode
htmlmode.HTMLMode.SHOW_LINENO = True
キーのコマンドを割り当ては、関数 kaa.addon.keybind() を利用します。
keybind(filemode='kaa.filetype.default.defaultmode.DefaultMode',
editmode='input', keymap={})
filemode にはキーバインドを登録するモードクラスの名前を指定します。editmode には編集モードとして insert, command, visual, visualline のいずれかの値を指定します。 keys には、キーバインドとコマンド名の辞書を指定します。
次のサンプルでは、ウィンドウ分割を Emacs と同じ Control+x 2 キーに割り当てます。
# sample to register custom keybind.
from kaa.addon import *
keybind(keymap={
((ctrl, 'x'), '2'):
'editor.splithorz' # Assign C-x 2 to split window.
})
Pythonの関数にデコレータ @kaa.addon.command を指定して、kaa のコマンドとして登録できます。
command(commandid,
filemode='kaa.filetype.default.defaultmode.DefaultMode'):
commandid はコマンドIDを文字列で指定します。 filemode は、コマンドを登録するモードクラスを文字列で指定します。
# sample command to insert text at the top of file.
@command('test.command')
def testcommand(wnd):
wnd.cursor.setpos(0)
wnd.document.mode.put_string(wnd, 'sample text\n')
テキストの表示色は、 kaa.addon.theme_def() で指定します。
theme_def(filemode='kaa.filetype.default.defaultmode.DefaultMode',
theme=None)
filemode には色を指定するモードクラスの名前を指定します。theme には、テーマ名とスタイルオブジェクトのリストを辞書形式で指定します。現在のところ、テーマ名は basic のみが指定可能です。
# update default foreground color to red.
theme_def(theme={
'basic': [
Style('default', 'red', None),
]
})
Copyright (c) 2013-2016 Atsuo Ishimoto
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.