Skip to main content

kaa - console text editor.

Project description

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

Overview

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

  • Macro recording.

  • Undo/Redo.

  • Multiple windows/frames.

  • Syntax highlighting.

  • Grep.

  • Open source software(MIT).

  • More to come!

http://kaaedit.github.io/screenshots/kaa_multiwindow.png

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

Kaa is easy!

Kaa is very easy to learn in spite of its rich functions. Only thing you need to remember is “To display menu, hit F1 key or alt+’/’ key”. Most of basic feartures 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.

Customizable

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

Supported environment

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.

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

Requirements

  • Python 3.3 or later

  • Headers and libraries for Python and ncurses with wide character support. Consult documentation of your platform for details. For Debian/Ubuntu, you can install ncurses library by

    $ sudo apt-get install python3-dev libncursesw5-dev
  • UTF-8 locales

  • (optional) Cython

Installation

Use easy_install3 or pip3 to install kaa from PyPI

$ easy_install3 kaaedit

Command line options

To start kaa, type

$ kaa [-h] [--version] [FILE [FILE ...]]

optional arguments:
  -h, --help  show this help message and exit
  --version show version info and exit

Terminal setting

For Mac OS X

Kaa uses alt key for keyboard shortcut like alt+W for copy to clipboard. On most of recent Windows or Linux terminal, alt key works just fine. But on Mac OS X, Terminal app should be configured:

  1. Select Preferences menu.

  2. Open the Settings tab.

  3. Open the keyboard tab.

  4. Check Use option as meta key.

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

  1. Select Preferences menu.

  2. Open the Profiles tab.

  3. Open the Keys tab.

  4. Check Left option Key acts as: +Esc. button.

For Gnome Terminal(Ubuntu, etc.,)

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

  1. Select Edit | Keyboard shortcuts menu.

  2. Scroll to the Help/Contents shortcut and change key from F1 to some another key.

Usage

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+/ (type slash key with alt key). Each items in the menu has one underlined character. The menu item is execused by typing the underlined 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 editor settings of tab/indentation.

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 memu
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.

Undo

Undo last modification.

Redo

Redo last undo.

Search

Search text.

Replace

Replace text.

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 memu

Comment

Insert line comment character at top of lines in selected regin.

Uncomment

Delete line comment character at top of lines in selected regin.

Macro menu

Start record

Start macro recording.

End record

End macro recording.

Run macro

Run last macro.

Tools menu

Python console

Execute Python script.

Grep

Search text from disk.

Paste lines

Insert lines of text without auto indentation.

Shell command

Execute external shell command and insert the output.

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.

Join window

Join splitted window.

Switch file

Switch content of active window.

Key bindings

Input mode

F1, alt+/

Show menu.

Arrow keys(up, down, left, right)

Move cursor.

Shift+arrow keys

Select text.

Control+left/right arrow keys

Move cursor to next/prev word boundary.

Control+b, Control+f

Move cursor to left/right.

Control+p, Control+n

Move cursor to previous/next physical line.

Alt+b, Alt+f

Move cursor to next/prev word boundary.

Alt+n, Alt+p

Page down/up

Home, Shift+Home

Move cursor to top of line. Shift+Home selects text to top of line.

End, Shift+End

Move cursor to end of line. Shift+Home selects text to end of line.

Control+Home, Control+Shift+Home

Move cursor to top of file. Control+Shift+Home selects text to top of file.

Control+End, Control+Shift+End

Move cursor to end of file. Control+Shift+End selects text to end of file.

Control+g

Go to line number.

Alt+a

Select all text.

Alt+c

Select current word for first press, current line for second time and entire text for third time.

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.

Control+Space, Control+@

Set mark to select text region. Hit control+Space, control+@ or ESC to unset mark.

Alt+#

Set mark to select text rectangularly.

Control+v

Paste

Control+x

Cut selection

Control+c

Copy selection

Control+z

Undo last change.

Control+y

Redo last undo.

F6

Toggle macro recording on/off.

F5

Run macro.

Alt+.

Run last execused edit command again.

Control+s

Search text.

Alt+s

Replace text.

F2

Search prev

F3

Search next

Tab, Shift+Tab

Indent/dedent selection

Alt-M v

Show text conversion menu.

Control+u Alt+!

Execute command and insert the output.

Replace dialog

When regex button is checked, Replace string is also regular expression string. In this case, special characters like \t or \n are converted to tab character and newline character. Also, backreference character will be replaced to substring matched group in the search string. For example, when search string is ‘(a+)(b+)’ and replace string is 21, 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 separeted list of file spec in shell-style wildcards (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

Unlike Python’s interactive console, Python console in kaa does not execute Python script until you hit alt+Enter key. Until then you can edit Python script as if you are with editors without worrying about newlines and indentations.

When alt+Enter key was hit, all text in the window is executed as Python script and the value of the expression is printed out to console window. If the script contains print expression, the text will also be printed out to console window. If a part of text in the console window is selected, only text in the selected region will be execused.

Customization

Kaa executes a Python script file at ~/.kaa/__kaa__.py on startup. You can write Python script to customize kaa as you like.

Sample - Show line numbers

from kaa.filetype.default import defaultmode
defaultmode.DefaultMode.SHOW_LINENO = True

defaultmode.DefaultMode is base class of all text file types. Line number is diplayed if Defaultmode.SHOW_LINENO is True. If you want to show line number of paticular file types, you can update SHOW_LINENO attribute of each file type classes.

# Show line number in HTML mode
from kaa.filetype.html import htmlmode
htmlmode.HTMLMode.SHOW_LINENO = True

Sample - Customize key binding

Assign same keyboard shortcut of splitting windows command as Emacs.

from kaa.keyboard import *
from kaa.filetype.default.defaultmode import DefaultMode

DefaultMode.KEY_BINDS.append({
   ((ctrl, 'x'), '2'): 'editor.splithorz'    # Assign C-x 2
})

In this example, key sequence C-x 2 (control+x followed by 2) is assigned to ‘editor.splithorz’ command.

Version history

0.4 - 2013.10.27

  • Rectangular selection can be started by Alt+’#’ key.

  • Window|Join menu caused error.

  • File|Save all caused error.

0.3.1 - 2013.10.25

  • Python console window now works with Gnome terminal.

  • Window|Switch file menu caused error.

  • ^G (Goto line number) dialog shouldn’t accept ‘0’ if field is empty.

0.3.0 - 2013.10.24

  • Python console window.

  • Emacs style region selection. Now you can select region by ctrl+SPACE or ctrl+’@’key.

  • Changed some default keyboard binding.

  • A lot of bugs fixed.

0.2.0 - 2013.10.20

  • Comment/Uncomment region.

  • In replace dialog, replace-to text is now treated as regular expression text.

  • A lot of bugs fixed.

0.1.0 - 2013.10.14

  • Grep

  • Various improvements.

0.0.4 - 2013.10.11

  • New command: Close all.

  • New command: Recently used file/directory.

  • Search/Replace history.

  • Line number display setting at menu|File|File Info.

0.0.3 - 2013.10.9

  • Incremental search.

  • Accept directory name as command line argument.

  • New command: Go to line(^g).

  • New command: Select current word(^c).

  • New command: Save all files(menu|file|Save All).

  • Improve file open dialog.

0.0.2 - 2013.10.5

  • Misc commands.

  • Highlight parenthesis at cursor.

  • Support text encodnig other than utf-8.

  • Other a lot of changes.

0.0.1 - 2013.6.16

  • Initial release.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kaaedit-0.4.0.tar.gz (174.0 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page