10 KiB
10 KiB
TextEditor Feature Checklist
Normal Mode Motions
Basic Movement
h- Move leftj- Move downk- Move upl- Move right
Word Movement
w- Forward to start of worde- Forward to end of wordb- Backward to start of wordW- Forward to start of WORD (whitespace-delimited)E- Forward to end of WORDB- Backward to start of WORDge- Backward to end of word
Line Movement
0- Move to start of line$- Move to end of line_- Move to first non-whitespace^- Move to first non-whitespace (alias for_)|- Move to column N
File Movement
G- Move to bottom of file (or line N with count)gg- Move to top of file (or line N with count)H- Move to top of screenM- Move to middle of screenL- Move to bottom of screen
Scroll
ctrl+u- Scroll up half pagectrl+d- Scroll down half pagectrl+b- Scroll up full pagectrl+f- Scroll down full pagectrl+y- Scroll up one linectrl+e- Scroll down one linezz- Center cursor on screenzt- Scroll cursor to topzb- Scroll cursor to bottom
Search Movement
f{char}- Find char forward on lineF{char}- Find char backward on linet{char}- Till char forward on lineT{char}- Till char backward on line;- Repeat last f/F/t/T,- Repeat last f/F/t/T reversed/- Search forward?- Search backwardn- Next search resultN- Previous search result*- Search word under cursor forward#- Search word under cursor backward
Other Movement
%- Jump to matching bracket{- Jump to previous paragraph}- Jump to next paragraph(- Jump to previous sentence)- Jump to next sentence
Operators
Implemented
d- Delete operatory- Yank operatordd- Delete line (double press)yy- Yank line (double press)
Not Implemented
c- Change operatorcc- Change line>- Indent right<- Indent left=- Auto-indentgq- Format textgu- LowercasegU- Uppercaseg~- Swap case!- Filter through external command
Actions
Insert Mode Entry
i- Insert before cursora- Insert after cursorI- Insert at start of lineA- Insert at end of lineo- Open line belowO- Open line aboves- Substitute character (delete + insert)S- Substitute line (delete line + insert)C- Change to end of linegi- Insert at last insert position
Delete Actions
x- Delete character under cursorD- Delete to end of lineX- Delete character before cursorJ- Join linesgJ- Join lines without space
Yank/Paste
p- Paste after cursorP- Paste before cursorgp- Paste after and move cursor to endgP- Paste before and move cursor to end
Registers
- Unnamed register (
") - Numbered registers (
0-9) - Register types (charwise, linewise, blockwise)
"- Register prefix (select register for next operation)- Named registers (
a-z) - Append to named registers (
A-Z) - Black hole register (
_) - System clipboard (
+,*) - Expression register (
=) - Last search register (
/)
Undo/Redo
u- Undoctrl+r- Redo.- Repeat last changeU- Undo all changes on line
Other Normal Mode
r{char}- Replace characterR- Replace mode~- Swap case of characterctrl+a- Increment numberctrl+x- Decrement numberq{reg}- Record macro@{reg}- Play macro@@- Repeat last macroctrl+c- Quit (custom)
Visual Mode
Mode Entry
v- Character-wise visual modeV- Line-wise visual modectrl+v- Block-wise visual modegv- Reselect last visual selection
Visual Mode Operations
- Motions work in visual mode
d/x- Delete selectiony- Yank selectionc- Change selection>- Indent selection<- Unindent selection=- Auto-indent selection~- Swap case of selectionu- Lowercase selectionU- Uppercase selectionJ- Join selected lineso- Go to other end of selectionO- Go to other corner (block mode)
Insert Mode
Text Input
- Character insertion
Enter- Insert newlineTab- Insert tab/spacesBackspace- Delete character before cursorDelete- Delete character under cursorctrl+w- Delete word before cursor
Movement in Insert Mode
- Arrow keys (up/down/left/right)
ctrl+h- Backspace (alias)ctrl+j- Insert newline (alias)ctrl+t- Indent linectrl+d- Unindent line
Exit Insert Mode
Esc- Exit to normal modectrl+c- Exit to normal modectrl+[- Exit to normal mode
Command Mode
Entry/Exit
:- Enter command modeEsc- Exit command modeEnter- Execute command
Editing
- Character input
Backspace- Delete characterDelete- Delete characterctrl+w- Delete wordLeft/Right- Move cursor
Commands Implemented
:set number/:set nonumber- Toggle line numbers:set number!- Toggle line numbers:set tabstop=N- Set tab width:register {name}- Show register contents:w- Write file:q- Quit:wq- Write and quit:q!- Force quit:e {file}- Edit file:bn/:bp- Next/previous buffer:{range}- Go to line:%s/old/new/g- Search and replace:!{cmd}- Run shell command:help- Show help
Text Objects
Implemented
iw/aw- Inner/around wordiW/aW- Inner/around WORDis/as- Inner/around sentenceip/ap- Inner/around paragraphi"/a"- Inner/around double quotesi'/a'- Inner/around single quotesi`/a`- Inner/around backticksi(/a(- Inner/around parenthesesi[/a[- Inner/around bracketsi{/a{- Inner/around bracesi</a<- Inner/around angle brackets
Not Implemented
it/at- Inner/around tag
Marks & Jumps
Not Implemented
m{a-z}- Set local markm{A-Z}- Set global mark`{mark}- Jump to mark (exact position)'{mark}- Jump to mark (line start)``- Jump to previous position''- Jump to previous line`.- Jump to last changectrl+o- Jump back in jump listctrl+i- Jump forward in jump list
Buffers
Buffers are in-memory representations of files. A buffer exists for each open file.
Buffer Model
- Buffer struct (id, filename, lines, modified flag, cursor position)
- Buffer list/manager
- Current buffer tracking
- Buffer-local settings (tabstop, filetype, etc.)
- Modified/dirty state tracking
- Read-only buffer support
Buffer Navigation
:e {file}- Edit file (open in new buffer or switch to existing):bn/:bnext- Next buffer:bp/:bprev- Previous buffer:b {name}- Switch to buffer by name (partial match):b {number}- Switch to buffer by number:bf/:bfirst- First buffer:bl/:blast- Last buffer:buffers/:ls- List all buffersctrl+^/ctrl+6- Switch to alternate (previous) buffer
Buffer Operations
:bd/:bdelete- Delete buffer (close file):bd!- Force delete buffer (discard changes):bw/:bwipeout- Wipe buffer (remove completely):w- Write current buffer to file:w {file}- Write buffer to specific file:wa- Write all modified buffers:sav {file}- Save as (write to new file, switch to it)
Buffer State
- Track cursor position per buffer
- Track undo history per buffer
- Track marks per buffer
- Remember scroll position when switching
- Alternate buffer (
#) tracking
Buffer Indicators
%- Current buffer (in buffer list)#- Alternate buffera- Active (loaded and visible)h- Hidden (loaded but not visible)l- Loaded (active and hidden do not exist yet)+- Modified-- Read-only=- Readonly (cannot be modified) (?)
Hidden Buffers
:set hidden- Allow switching with unsaved changes- Prompt to save when closing modified buffer
:qbehavior with modified buffers
Argument List (Advanced)
:args- Show argument list:next/:prev- Navigate argument list:argadd/:argdelete- Modify argument list
Plugins / Extensions
Harpoon (File Navigation)
- Quick file marks (1-4 files)
- Add file to list
- Navigate to marked file
- Show file list
Telescope / Fuzzy Finder
- File picker
- Buffer picker
- Grep/search
- Command palette
File Explorer
- Tree view
- File operations (create, delete, rename)
- Navigation
LSP Support
- Go to definition
- Find references
- Hover information
- Diagnostics
- Code actions
- Completion
Git Integration
- Git status
- Git diff
- Git blame
- Hunk navigation
Other
- Multiple cursors
- Snippets
- Auto-pairs (brackets, quotes)
- Surround (change surrounding chars)
- Comment toggle
- Indentation guides
- Syntax highlighting
- Statusline customization
- Themes
Editor Features
Display
- Line numbers
- Cursor position tracking
- Viewport/scrolling (Y)
- Viewport/scrolling (X)
- ScrollOff setting
- Relative line numbers
- Cursor line highlight
- Column highlight
- Wrap/nowrap
- Word wrap at window edge
- Show whitespace characters
- Color column (ruler)
Files
- File reading
- File writing
- Auto-save
- Backup files
- Swap files
- File encoding
- Line endings (LF/CRLF)
Search & Replace
- Incremental search
- Search highlighting
- Case sensitivity options
- Regex support
- Search and replace
Misc
- Split windows
- Tabs
- Sessions
- Persistent undo
- Spell check