Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

765 lines (531 sloc) 37.469 kb

Kaa - console text editor

Date: 2013-11-03 23:00
tags: kaa, Python3
slug: kaa-doc-ja

kaa はシンプルで簡単に使える、コンソール用テキストエディタです。

Overview

kaa は簡単かつ高機能なテキストエディタで、次のような機能を備えています。

  • マクロ記録
  • Undo/Redo
  • マルチウィンドウ・マルチフレーム
  • 構文ハイライト
  • Grep
  • Python デバッガ
  • オープンソース・ソフトウェア(MITライセンス).
  • などなど
http://www.gembook.org/static/images/kaa_multiwindow.png

http://kaaedit.github.io にもスクリーンショットが公開されています。

Kaa is easy!

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 のターミナルの場合 :

  1. 「環境設定」メニューを開く
  2. 「設定」タブを開く
  3. 「キーボード」タブを開く
  4. 「メタキーとして option キーを使用」をチェックする

iTermの場合 :

  1. 「Preferences」メニューを開く
  2. 「Profiles」タブを開く
  3. 「Keys」タブを開く
  4. 「Left option Key acts as: +Esc. 」 ボタンと「Right option Key acts as: +Esc. 」 ボタンをチェックする

Gnome terminal では、f1 キーでメニューを表示する場合は次のように設定します。

  1. 「Edit | Keyboard shortcuts」メニューを開く
  2. ショートカットに「Help/Contents」が表示されるまでスクロールし、f1キーを別のキーに変更する。

色設定

kaaは256色モードをサポートしていますが、256色モードを使えるようにするには、ターミナル設定の変更が必要となる場合があります。 Max OS Xのターミナルの場合、

  1. 「環境設定」メニューを開く
  2. 「詳細」タブを開く
  3. 「ターミナルの宣言方法」で、「xterm-256color」を選択する

iTermでは、次のように設定します。

  1. 「Preferences」メニューを開く
  2. 「Profiles」タブを開く
  3. 「Terminal」タブを開く
  4. 「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が日本語入力モードのままでもメニューを選択できます。

メニューを終了するときは、エスケープキーでキャンセルします。

File menu

New 新規作成
Open ファイルを開く
File info ファイル情報を表示する。また、タブ・インデントなど のファイル別設定を変更する。
View Diff 元のファイルと、現在のバッファの差分を表示する
Save ファイル保存
Save As ファイルに名前をつけて保存
Close アクティブなフレームを閉じる
Save all すべてのファイルを保存する
Close all すべてのフレームを閉じる
[Recently] 「最近のファイル」メニューを開く
Quit kaaを終了する
Recently used files memu
Recently used files 最近使ったファイルの一覧を表示する
Recently used dirs 最近使ったディレクトリの一覧を表示する

Edit menu

Cut 選択文字をカット
Copy 選択文字をコピー
Paste クリップボードからペースト
Paste History クリップボード履歴から選択してペースト
Undo 最後の修正を取り消し
Redo 最後の undo を取り消す
Search 文字列検索
Replace 文字列置換
Complete 単語補完
[Convert] 文字列変換メニューを表示
Text convert menu
Upper 選択文字列を大文字に変換する
Lower 選択文字列を小文字に変換する
Normalization 選択文字列を正規化形式KCで正規化し、半角カナ->全角 などの変換を行う
Full-width 選択文字列の数字やアルファベットなどを全角に変換 する

Code memu

Codeメニューは、ファイルの種類によって異なります。プログラミング言語では、以下のような項目が表示されます。

Comment 選択範囲した行をコメントにする
Uncomment 選択した行のコメント解除する
Table of contents 目次を表示し、選択した項目にカーソルを移動する

Macro menu

Start record マクロ記録を開始する
End record マクロ記録を終了する
Run macro 最後に記録したマクロを実行する

Tools menu

Python console Pythonスクリプトを実行する
Grep 指定したディレクトリからファイルを検索する
Paste lines 自動インデントせずにテキストをペースト
Shell command シェルコマンドを実行し、結果を入力
Make make コマンドでソースファイルをコンパイル し、結果を表示します。f9/f10キーで前後のコンパ イルエラーに移動します。

Window menu

Frame list フレーム一覧を表示。カーソル左右でフレームを 選択する。
Split vert ウィンドウを縦に分割する
Split horz ウィンドウを横に分割する
Move separator ウィンドウの分割位置を変更する。カーソル左右で、 分割位置が更新される
Next window 次のウィンドウに移動
Prev window 前のウィンドウに移動
Join window 分割したウィンドウを結合
[Switch file] ウィンドウ変更メニューを表示

Switch file menu

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 クリップボード履歴からペースト

Undo/Redo

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 dialog

Grepダイアログの Search には検索文字列を、Directory には検索を開始するディレクトリを、Filename には検索対象となるファイル名のパターンをシェル形式のワイルドカードで指定します。ファイル名は、スペースで区切って複数指定できます(例: *.txt *.py *.doc)。各項目では、カーソル上キーでこれまでの入力履歴が選択可能となります。

検索結果ウィンドウでは、エンターキーで現在行のファイルにジャンプします。その後 f9 キーと f10 キーで前後の検索結果に移動できます。

Python console

対話的にPythonスクリプトを評価・実行します。スクリプトを実行するときには、入力したスクリプトの末尾にカーソルを移動してEnterを入力します。スクリプトの途中でEnterを入力した場合には、改行文字が挿入されます。

Python デバッガ

Kaa は、Pythonのデバッガモジュール(bdb) のフロントエンドとして、他のプロセスで実行する Python スクリプトをデバッグできます。Kaa自身はPython3.3以降でのみ動作しますが、デバッグ対象のプロセスではPython2.6以降のPythonインタープリタをサポートしています。

起動方法

Pythonデバッガは、以下のいずれかの方法で起動します。

kaadbg.run モジュール

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
set_trace

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 のように、表示する式を入力してエンターキーを押します。

Make

[Tools]|Makemake コマンドを実行し、ファイルをコンパイルします。実行時にはコマンドやオプションを指定し、過去のコマンド履歴を参照する場合はカーソル上キーを押します。

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),
    ]
})

Links

Copyright

Copyright (c) 2013-2015 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.

Jump to Line
Something went wrong with that request. Please try again.