:PROPERTIES:
:ID:       518e8969-8181-48d7-96da-ce86da64dd61
:END:
#+title: Vim
#+date: "2021-06-06 05:12:20 +08:00"
#+date_modified: "2021-07-20 23:31:58 +08:00"
#+language: en


Every sysadmin's favorite default text editor.
Is being familiar to Vim a path to productivity?
No.
But being good at it can make for a difference in the day-to-day life of a sysadmin for there are advanced capabilities of this editor.







* The keybindings of Vim

One of the things that make Vim popular is the keybindings.

| Keybinding | Description                                |
|------------+--------------------------------------------|
| =[m=       | Go to the previous method.                 |
| =g~w=      | Toggle letter casing.                      |
| =2guW=     | Convert two words into lowercase.          |
| =10d)=     | Delete 10 sentences.                       |
| =39zz=     | Place the cursor in the middle in line 39. |
| =3d10w=    | Delete 10 words and repeat 3 times.        |

Most of the time, Vim keybindings is made of mainly two things:

- *The operators denoting an action.*
- *The motions describing the scope of the action.*

There's a certain pattern to it when you use it, too.

#+begin_src
[count][operator][motion]
#+end_src




* Tips and tricks

- =:h= is the help system of Vim.
  It contains all of the documentation of the editor and the installed plugins.
  I recommend to start with the default help page (e.g., =:h=).

  + You can get the meaning of the keybinding with the help section — e.g., ~:h gg~, ~:h G~.

- Vim has fine-grained control motions.
  + =(= and =)= for sentences.
  + ={= and =}= for paragraphs.
  + =[= and =]= for sections.

- There are many advanced navigation features in Vim.
  + =gf= will go to the file at point.
  + =K= goes to the definition of the keyword at point.
  + =Ctrl+O= will jump back at a previous jump point.
  + =gd= go the local definition of the keyword at point.
  + =H=, =M=, and =L= places the cursor in higher, middle, and lower part in the current screen, respectively.
  + =zt=, =zz=, and =zb= displays the current line in the top, middle, and bottom part of the screen, respectively.
