articles/vi.md: update
This commit is contained in:
parent
f01881984d
commit
a9c119a2fd
1 changed files with 32 additions and 5 deletions
|
@ -1,11 +1,21 @@
|
|||
# vi
|
||||
vi is a family of **vi**sual text editors originated in [BSD](bsd.md) [Unix](unix.md).
|
||||
|
||||
vi was created by Bill Joy as a visual form of the line-based ex editor
|
||||
(an extension to the classic [ed](ed.md), also line-based).
|
||||
|
||||
In contrast to most editors, vi is a modal editor, in which its behavior depends on the current
|
||||
mode that is in. For example, the starting mode is the *normal* mode in which vi accept
|
||||
commands; the *insert* mode, where vi accepts keys and writes them to the current buffer; the
|
||||
*replacement* mode, similar to insert mode but replaces the characters under the cursor instead of
|
||||
adding them to the buffer; the *visual* mode which allows for selection of text.
|
||||
mode that is in. For example, the starting mode is the *normal* mode; the *command* mode entered
|
||||
by typing `:` in normal mode; the *insert* mode, where vi accepts keys and writes them to the
|
||||
current buffer; the *replacement* mode, similar to insert mode but replaces the characters under
|
||||
the cursor instead of adding them to the buffer; the *visual* mode which allows for selection of text.
|
||||
|
||||
## vi keybinds or: why HJKL for navigation and Escape
|
||||
vi was developed in a ADM-3A video terminal. This terminal had of course a different keyboard layout
|
||||
from the modern standard IBM PC layout. On that keyboard, the Escape key was actually where is now the
|
||||
Tab key. It also lacked dedicated arrow keys, instead using the keys H, J, K, L as the arrow keys.
|
||||
|
||||
[Emacs](emacs.md) is also a victim of the IBM PC keyboard (Control was where now the Alt key is located).
|
||||
|
||||
## Tutorial
|
||||
Vim provides a tutorial, accesible through the `vimtutor` *shell* command; Neovim provides the same
|
||||
|
@ -14,6 +24,9 @@ tutorial with the `:Tutor` *editor* command.
|
|||
TODO
|
||||
|
||||
## Cheatsheet
|
||||
This is a basic quick cheatsheet of some Vim commands/keybinds. Always refer to the documentation
|
||||
in doubt of something by using the `:help <topic>` command or `<F1>` to access the help index.
|
||||
|
||||
Some of these can be prefixed with a register name and a count number (in that order).
|
||||
Commands that work with registers use by default an anonymous registers if none is explicitly specified.
|
||||
|
||||
|
@ -73,6 +86,7 @@ a command or normal mode binding was executed.
|
|||
- (n) `c`: change, roughly equivalent to a combined delete and insert
|
||||
|
||||
### Mode changing
|
||||
- (n) `:`: Enter command mode
|
||||
- (n) `i`: Enter insert mode after the cursor
|
||||
- (n) `I`: Enter insert mode, at the start of the line
|
||||
- (n) `a`: Enter insert mode before the cursor
|
||||
|
@ -109,8 +123,18 @@ It has to be noted that `Home`, `End`, `PageUp/Down` and cursor keys also work.
|
|||
- (v) `U`: uppercase the current selection
|
||||
- (n) `q:`: open command-line history window, here you can edit the commands and execute them with enter.
|
||||
- (n) `q/`: search pattern history
|
||||
- (n) `K`: look for the identifier under the cursor in the man pages, really useful when you're doing C programming.
|
||||
- (n) `.`: repeat last action
|
||||
- `:help`, `:h`: Vim help pages
|
||||
|
||||
### Macros
|
||||
- (n) `q`: start recording macro to register
|
||||
- `qq`: record macro using register `@q`
|
||||
- (n) `@`: replay macro in register
|
||||
- `@q`: replay macro from `@q` register
|
||||
- `4@q`: ditto, but repeat it four times
|
||||
- (n) `Q`: replay last recorded macro
|
||||
|
||||
### Windows (splits)
|
||||
- `:vs`: create vertical split
|
||||
- `:sp`: horizontal split
|
||||
|
@ -134,7 +158,7 @@ It has to be noted that `Home`, `End`, `PageUp/Down` and cursor keys also work.
|
|||
- `:bd!`: same but doesn't nag if the buffer wasn't been saved
|
||||
- `:bp`: go to previous buffer
|
||||
- `:bn`: go to next buffer
|
||||
- `:b#`: go to last buffer (`#` holds the last buffer ID)
|
||||
- `:b#`: go to last used buffer (`#` holds the ID of that buffer)
|
||||
|
||||
### "Go to" binds
|
||||
- `gg`: go to..
|
||||
|
@ -163,3 +187,6 @@ VimScript for extending the editor.
|
|||
## Resources
|
||||
- [Vim Kōans](https://blog.sanctum.geek.nz/vim-koans/)
|
||||
- [The Dharma of Vi](https://blog.samwhited.com/2015/04/the-dharma-of-vi/)
|
||||
|
||||
## See also
|
||||
- [ed](ed.md)
|
||||
|
|
Loading…
Add table
Reference in a new issue