The only right text editor for BIG files.
OS supported
MacOs
Linux
Features
Low memory footprint
Text and Hex mode
Cursor jumps shortcuts
Regex search
Deep undo/redo stack
Handy cheat sheet
UTF-8 support
Lightweight save
Breakpoints
Multi color regex text highlight
Interactive mode
Hex search
Design
Feather design is simple, it has 3 sections:
File name section
Always displays the currently opened file.
Main section
Displays currently edited content
Hint section
Dynamic section that displays what the user can do next or which options are available.
Usage
Open any file with providing file name as argument: `feather <file_name> options`.
options:
--mode
Defines if the file will be interpreted as UTF-8 text or hex bytes. Hex mode comes with HEX search. Available options: text/hex
--force
Sometimes when using the --sessionId option it can turn out that file content has changed over the time and displayed file can have different content than expected, this gauge is used to force stashed changes injection. If the file was modified it is not guaranteed that changes will display properly.
--relax
Internal feather buffers size. By default this value is 1M and cannot be less than 1Kb.
--storage
Folder where the user would like to keep stashed changes. By default: /tmp
--tab
How many spaces represent tabulator
--sessionId
Id of stashed session.
File open modes
When opening a file you can specify how to view that file with the --mode option.
Text mode
Default mode or explicitly specified wth '--mode=text' option. In text mode Feather tries to read each character as UTF-8 encoded. If for some reason the character cannot be interpreted correctly gray UTF-8 hex value is displayed instead.
Hex mode
Open file in hex mode with '--mode=hex' option. This mode comes with two windows and treats files as sequences of bytes. You can view bytes HEX values in the left window and ASCI values on the right window. Hex mode comes with hex search where you can search for bytes sequences.
Opened file modes
READ mode
The default mode that allows user to enter "write/search/action" modes. If you don't know what to do use
<control> + k to display all available shortcuts.
Main shortcuts.
/ - enter search mode
\ - enter hex search mode, this option is only available in Hex file open mode
: - enter action mode
i - enter write mode
u - undo last change
<control> + r - redo last change
<control> + k - show all shortcuts. This window also reveals sessionId which can be used as a parameter for --sessionId argument.
<control> + x - exit feather
Start edit shortcuts
O - enter edit mode with new line above
o - enter edit mode with new line below
A - enter edit mode at line end
Cursor move shortcuts
g - goto file first character
G - goto file last character
0 - goto line beginning
$ - goto line end
w - goto next word
b - goto previous word
<control> + u - goto half page up
<control> + d - goto half page down
Remove shortcuts
x - character under cursor
dw - new word or empty characters
<control> + x - previous word or empty characters
dd - current line
d + <number 1-9> - lines between 1 to 9
D - everything from current cursor position until line end
dg - everything from current cursor position until file beginning
dG - everything from current cursor position until file end
d + <"[" + or "{" + or "(" or "<"> - everything between selected brackets
ds - everything between white characters
Other
<control> + b - add breakpoint at current cursor position
<control> + n - jump to next breakpoint
<control> + p - jump to previous breakpoint
8 - go to previous window
9 - go to next window
p - paste
v - start selecting text
hh - color current line with random color
h + <"[" + or "{" + or "(" or "<" - color everything between selected brackets with random color
zz - put the cursor in the middle of the screen
. - repeat last command
"["/"]" or "{"/"}" or "("/")" or "<"/">" - jump to opening/closing bracket
WRITE mode
Enter Write mode from Read mode by pressing i key.
In write mode user can edit the text. User can still jump between breakpoints the same way as in read mode.
Exit read mode by pressing ESC key.
ACTION mode
Enter Action mode when in Read mode by pressing : key.
Action mode allows text manipulation by performing additional actions. Below is the list of available actions with description:
:color
Description
User can set specific text in the form of regular expression to be coloured. User can specify as many colors as he wants and if colors overlap the last one will be on the top.
Usage:
:color red error - will color each word error on red
:color red '[Ee]rror' - will color each word starting from upper E letter or smaller e letter on red
User can combine colors with | token for example:
:color red|yellow|white '(Matt|Diana)' - will color words Matt and Diana with mixed color
:uncolor
Description
Uncolour previously specified text.
Usage:
:uncolor error - will remove all colors from error text
:uncolor 'error when sending' - will uncolor consecutive words
:<number>
Description
Goto to specific line number.
Usage:
:100 - will move cursor to line number 100
:jump <number>
Description:
Jump to the specific Byte number. If the specified byte number is in the middle of valid UTF-8 character and in text mode, the cursor will be aligned to proper byte number.
Usage:
:jump 1024 - will jump to Byte number 1024.
:w <file_name>
Description:
Save current changes. If no file_name will be specified, the file will be overridden.
Usage:
:w ~/my_file - will save changes to users home directory
:stash
Description:
Stash current changes on the side. Feather will use current sessionId to create folder with sessionId name in storage folder and save only diff on the side without modifying original file.
The changes can be restored with the --sessionId argument when opening the same file: feather my_file --sessionId=851c2a30b12a6d202c6b55a5bc4d0692. Sometimes changes are stashed in different directory, in this case storage argument also has to be specified: feather my_file --sessionId=851c2a30b12a6d202c6b55a5bc4d0692 --storage=~/my_storage
:drop
Description:
Remove all set breakpoints. This action cannot be undone.
:e <file_name>
Description:
Open another file in the same window. All current changes will remain if the same file will be opened with :e option again.
Usage:
:e ~/some_file - will open some_file from users home directory
:copyuntil
Description:
Copy all characters from current cursor position until specified character.
Usage:
:copyuntil % - will copy everything from current cursor position until '%' character, not including '%' character.
The condition can be reversed
:copyuntil !% - will copy everything from current cursor position until first character that is not '%', not including '%' character
:removeuntil
Description:
Removes all characters from current cursor position until specified character.
Usage:
:removeuntil % - will remove everything from the current cursor position until '%' character, not including '%' character.
The condition can be reversed
:removeuntil !% - will remove everything from current cursor position until first character that is not '%', not including '%' character
:reload
Description:
Forces reload of file content. Some files change its content and feather tries to catch up but user can also force this action.
<ESC>
Back to read mode.
SEARCH mode
/
Description
Regex search for string pattern.
Usage:
/(error|timestamp) - will search for error or timestamp substrings
\
Description:
If the file is opened in HEX mode, user can also search for hex patterns. Patterns can be specified with or without 0x prefix
Usage:
\0xDEADBEEF - will match all bytes in that order
\DEADBEEF- will match all bytes in that order
<ESC>
Back to read mode.
Opening Feather for the first time on MacOs
Apple by default doesn't allow third party software:
-
Open 'System Preferences'
-
Go to 'Security & Privacy' and tap on 'General' tab
-
Click on the 'Lock' icon which you can find on the bottom left screen and type your administrator password.
-
Choose 'Anywhere' under 'Allow apps downloaded from:' and then again click on the 'Lock' icon. On newer MacOs versions click Open Anyway next to application name.