Kaa is a small and easy CUI text editor for console/terminal emulator environments.

Cygwin environment on Windows platform is not supported at this time, but will be tested after they provide Python 3.3 package.

Kaa is a CUI editor that runs on most of modern UN*X flavor operating systems like Linux or Mac OS X. Kaa requires Unicode friendly environment both platform running kaa and terminal emulator/console to interact with kaa.

Kaa is written in Python . So, you can easily customize many aspects of kaa through simple Python scripts.

Kaa is very easy to learn in spite of its rich functionality. Only thing you need to remember is “To display menu, hit F1 key or alt+’m’ key” . Most of basic features could be accessed from fancy menus by hitting underlined character in the menu items. You can use kaa as easy as you are with Notepad on MS-Windows.

See http://kaaedit.github.io for more screen shots.

Kaa is an easy yet powerful text editor for console user interface, providing numerous features like

Use easy_install3 or pip3 to install kaa from PyPI

Kaa can use system clipboard. To use clipboard on Unix platform, xclip command should be installed. For Ubuntu Linux, following command installs xclip command.

After theses packages are installed, rebuild Python installation to take effect.

If your Python installation is not system-supplied package but built by yourself, please ensure you have installed ncurses library with wide character support before you built Python. Consult documentation of your platform for details. For recent Debian/Ubuntu, you can install required libraries by

Development files for Python 3.3. For recent Debian/Ubuntu, you can install required libraries by

To run kaa, you need following component:

For detail, see http://www.pixelbeat.org/docs/terminal_colours/#256 to enable 256 color on your terminal.

Otherwise, you should manually update terminal setting. e.g., If you use bash, add following line to ~/.bashrc file:

For iTerm2, you can set 256 color mode with following procedure:

Kaa looks better with 256 color mode of terminal emulator. For Terminal.app on Mac OS X, you can set 256 color mode with following procedure:

If you use Gnome terminal and wishes to access menu by F1 key, you should configure:

Or, if you use iTerm2 on Mac, you should configure:

Kaa uses alt key for keyboard shortcut like alt+k . On most of recent Windows or Linux terminal, alt key works out of box. But on Mac OS X, Terminal app should be configured:

Using kaa is intuitive. Typing alphabet keys will update file as you expected. Functional keys like arrow or delete keys also works.

Using menu To display menu, type F1 key or alt+m (type ‘m’ key with alt key). Each items in the menu has one underlined character. The menu item is executed by typing the underlined key with or without pressing alt key. Typing escape key hides menu. File menu New Create new file. Open Open existing file. File info Show file information. Also update per file settings of tab or indentation. View Diff Show difference between original file and current buffer. Save Save current file. Save As Save current file as new file. Close Close current frame. Save all Save all current files. Close all Close all frames. [Recently] Show recently used files menu. Quit Terminate kaa. Recently used files menu Recently used files Show list of recently used files. Recently used dirs Show list of recently used directories. Edit menu Cut Cut selected text. Copy Copy selected text. Paste Paste from clipboard. Paste History Paste from clipboard history. Undo Undo last modification. Redo Redo last undo. Search Search text. Replace Replace text. Complete Word completion. [Convert] Show text convert menu. Text convert menu Upper Convert selected text to upper case. Lower Convert selected text to lower case. Normalization Convert selected text to Unicode Normalization Forms(NFKC). Full-width Convert alphabet and numbers in the selected text to full-width character. Code menu Code menu differs among file types. Following items are typical in programming languages. Comment Insert line comment character at top of lines in selected region. Uncomment Delete line comment character at top of lines in selected region. Table of contents Show table of contents to move cursor. Macro menu Start record Start macro recording. End record End macro recording. Run macro Run last macro. Window menu Frame list Show list of frame windows. Use left/right arrow key to change active frame. Split vert Split current window vertically. Split horz Split current window horizontally. Move separator Move window separator. Use left/right arrow key to move separator. Next window Activate next window. Prev window Activate previous window. Join window Join split window. [Switch file] Show switch window menu. Switch file menu Switch file Switch content of active window. New file here Create new file to active window. open file here Open existing file to active window. Recently used files Show list of recently used files. Recently used dirs Show list of recently used directories.

Key bindings Menu keys F1, alt+m Show menu. Alt-w Show switch file menu. Cursor keys left, Control+b Cursor left. right, Control+f Cursor right. up Cursor up. down Cursor down. Control+p Move cursor to previous physical line. Control+n Move cursor to next physical line. Control+left, Alt+b Move cursor to previous word boundary. Control+right, Alt+f Move cursor to next word boundary. Alt+p, Page up Previous page. Alt+n, Page down Next page. Control+a, Home Move cursor to top of line. Control+^ Move cursor to first letter of line. Control+e, End Move cursor to end of line. Alt+<, Control+Home Move cursor to top of file. Alt+>, Control+End Move cursor to end of file. Control+g Go to line number. Control+t Table of contents. Text selection Shift+left Select to previous character. Shift+right Select to next character. Shift+up Select to previous line. Shift+down Select to next line. Shift+Home Select text to top of line. Shift+End Select text to end of line. Control+Shift+Home Selects text to top of file. Control+Shift+End Select text to end of file. Control+Space, Control+@ Set mark to select text region. Alt+# Set mark to select text rectangularly. Alt+a Select all text. Alt+c Select current word at first press. Subsequent press selects entire current line, and the third press selects entire text Text deletion Backspace, Control+h Delete the character to the left. Delete, Control+d Delete the character at the cursor. Control+backspace, Alt+h Delete the word to the left. Control+Delete, Alt+d Delete the word to the right. Control+k Delete the line to the right. Alt+k Delete the current line. Clipboard Control+v Paste from clipboard. Control+x Cut selection. Control+c Copy selection. Alt+v Paste from clipboard history. Undo/Redo Control+z Undo last change. Control+y Redo last undo. Search/Replace Control+s Search text. Alt+s Replace text. F2 Search prev. F3 Search next. Other F6 Toggle macro recording on/off. F5 Run macro. Alt+. Run last executed edit command again. Tab Indent selected lines. Shift+Tab Dedent selected lines. Control+o Word completion. Control+u Alt+! Execute command and insert the output. Alt+z Suspend kaa and back to shell.

Replace dialog When regex button is checked, Replace string is also regular expression string. In this case, special characters like \t or

are converted to tab character and newline character. Also, back-reference character will be replaced to sub-string matched group in the search string. For example, when search string is ‘(a+)(b+)’ and replace string is ‘\2\1’ , matched string ‘aabb’ will be replaced to ‘bbaa’ .

Grep dialog Grep dialog has three input field. Search is a plain text or regular expression string to search. Directory is a directory to start searching. If Tree button was checked, files are searched recursively. Filenames is space separated list of file spec in shell-style wild-cards (e.g., *.txt *.py *.doc ). Up arrow key displays history of each input field. In the grep result window, use F9 and F10 key to traverse matches forward/backward.

Python console You can type Python script as normal Python interpreter. To execute script, you should hit enter key at very last of the script. Otherwise, newline character is inserted as text editor. You can move cursor upper or below to edit multiline script. To show script history window, hit alt+Enter key on the console.

Spell checker To use spell checker, PyEnchant module should be installed. On MAC OS-X install enchant with homebrew before installing PyEnchant. $ brew install enchant $ pip-3.3 install PyEnchant

Make [Tools]|Make executes make command to build your files. You can alter command and options to build. To retrieve previous command and options, hit up cursor key to display history window. Output of make displayed on the window. You can traverse source files cause of the error forth and back with f9 and f10 key.

Python debugger Warning Python debugger is experimental at this point. Kaa can be used as front-end of Python debugger module( bdb ) running in another process. Although kaa itself requires Python 3.3 or later, you can use Python 2.6 or later in the target process. Starting debugger There are three ways to start debugger. kaadbg.run module Kaadbg package executes your Python script with Python debugger connected to debugger window of kaa. Usually, kaadbg is Python package installed as a part of kaa. To use another Python interpreter than kaa installed, you can install kaadbg separately. $ sudo pip install -U kaadbg Currently, kaadbg supports from Python 2.6 to Python 3.x. To activate kaa remote debugger, select [Tools]|Python debugger server and enter port number to connect debugger(default 28110). Next, open new terminal window and run following command in the terminal window. $ python -m kaadbg.run my_test_stript.py arg1 args If you need use other port than 28110 , you should provide port number with -p option. $ python -m kaadbg.run -p 29000 my_test_stript.py arg1 args set_trace Like Python’s standard pdb module, you can import kaadbg package and call set_trace() to start debug session. You should start activate kaa remote debugger by menu [Tools]|Python debugger server and enter port number to connect debugger(default 28110). To connect kaa remote debugger, open your target script and insert following lines of code. import kaadbg.debug kaadbg . debug . set_trace () If you need use other port than 28110 , you should provide port number to set_trace() . import kaadbg.debug kaadbg . debug . set_trace ( 29000 ) Now you can start your target script. Kaa remote debugger will be opened when kaadbg.debug.set_trace() is hit. Run child process You can run your target script as child process of kaa to debug. To start child process, select [Tools]|Python debugger in kaa menu and specify command line as follow. python2.7 -m kaadbg.run myscript.py arg1 arg2 Command line should starts with Python interpreter you use and -m kaadbg.run . Name of target script and arguments follows. Note that kaa doesn’t capture standard output and standard error of target process, so you cannot see outputs of the target script. Also, standard input of the target process is closed just after command started. Breakpoints To set/unset breakpoints, select [Code]|Toggle Breakpoint in menu in editor. By default, f8 key is bounded to this menu item. While debugger window is opened, you can suspend the debugger window by escape key. After you finish to update breakpoints in editor window, select [Tools]|Python debugger menu again to resume debugger. To view list of current breakpoints, select breakpoints button with alt+E key. Inspect variables To see value of variables, select Expr on the debugger window by pressing alt+E key and enter Python expression you want to inspect like self.spam .