Http://coolshell.cn/articles/5426.html
Vim's learning curve is quite large (see the learning curve of various text editors). Therefore, if you see a lot of VIM command classification at the beginning, you will lose interest in this editor. The following article is translated from "Learn Vim Progressively". I think this is the best VIM Upgrade tutorial for beginners. I did not list all the commands, but just listed the most useful commands. Very good.
---------- The text starts ----------
Do you want to learn VIM, the best text editor in history, as quickly as possible? You must first learn how to survive VIM and then learn various tricks.
Vim the Six Billion Dollar editor
Better, Stronger, Faster.
Learn vim and it will become your last text editor. There is no better text editor than this one, which is very difficult to learn, but incredibly easy to use.
I suggest the following four steps:
- Alive
- Feeling good
- Better, stronger, and faster
- Use VIM's super power
After you finish this article, you will become a vim superstar.
Before getting started, I need to give you some warning:
- Learning vim is painful at the beginning.
- Time required
- You need to practice constantly, just like learning an instrument.
- Don't expect you to practice vim more efficiently than other editors in three days.
- In fact, you need two weeks of hard work instead of three days.
Level 1-survival
- Install vim
- Start vim
- Do nothing!Read
After installing an editor, you will definitely want to enter something in it and then see what the editor looks like. But vim is not like this. Follow the command below:
- After Vim is enabled, vimNormalMode.
- Let's enterInsertMode. Press I. (Chen Hao Note: you will see the "-insert-" in the lower-left corner of vim, indicating that you can insert it)
- Now you can enter the text, just like using notepad.
- If you want to returnNormalMode. Press
ESC
Key.
Now, you know howInsertAndNormalSwitched. Below are some commands for youNormalMode:
i
→InsertMode, pressESC
BackNormalMode.
x
→ Delete a character of the current cursor.
:wq
→ Save disk + exit (:w
Storage,:q
Exit) (Chen Hao note: the file name can be followed after w)
dd
→ Delete the current row and save the row to the clipboard.
p
→ Paste clipboard
Recommendation:
hjkl
(For strong examples, we recommend that you move the cursor, but it is not required.) → you can also use the cursor key. Note:j
Just like the down arrow.
:help <command>
→ Display the help of related commands. You can also enter:help
Instead of commands. (Chen Hao Note: To exit the help, enter q)
You only need the Five Commands mentioned above to survive vim, And you can edit the text. You must train these commands into a subconscious state. So you can start to level 2.
When you enter Level 2NormalMode. In a general editor, you need to useCtrl
Key, for example:Ctrl-C
. That is to say, the Ctrl key is like a function key. After you press the Ctrl key, C is no longer a C, and it is a command or a shortcut key,In Normal mode of VIM, all keys are function keys.. You need to know this.
MARK:
- In the following text
Ctrl-λ
I will write<C-λ>
.
- To
:
You need to enter<enter>
Press enter, for example,-if I write:q
That is, you need to enter:q<enter>
.
Level 2-good feeling
The above commands can only survive you. Now it is time to learn more commands. The following is my suggestion: (Chen Hao note: all commands must be used in Normal mode. If you do not know the current mode, press the ESC key several times)
- Various insert Modes
a
→ Insert after the cursor
o
→ Insert a new row after the current row
O
→ Insert a new row before the current row
cw
→ Replace the character from the cursor position to the end of a word
- Simple move cursor
0
→ Zero number, to the row Header
^
→ The first line of the line is not the position of the blank character (the so-called blank character is space, tab, line feed, carriage return, etc)
$
→ To the end of the row
g_
→ The last line is not the position of the blank character.
/pattern
→ Searchpattern
(Chen Hao Note: if multiple matches are found, press n to the next one)
- Copy/paste(Chen Hao Note: Both p and P can be used. p indicates that after the current position, P indicates that before the current position)
P
→ Paste
yy
→ Copy the current rowddP
- Undo/Redo
- Open/Save/exit/change the file(Buffer)
:e <path/to/file>
→ Open a file
:w
→ Inventory
:saveas <path/to/file>
→ Save<path/to/file>
:x
,ZZ
Or:wq
→ Save and exit (:x
Save only when needed. ZZ does not need to enter a colon and press Enter)
:q!
→ Exit and do not save:qa!
Forcibly exit all the files being edited, even if other files are changed.
:bn
And:bp
→ You can open many files at the same time and use these two commands to switch to the next or previous file. (Chen Hao Note: I like to use: n to the next file)
Take a moment to get familiar with the above commands. Once you have mastered them, you can almost do what other editors can do. So far, you still think that using vim is a little clumsy, but it doesn't matter. You can go to Level 3.
Level 3-better, stronger, and faster
Congratulations! You did a good job. We can start something more interesting. In Level 3, we only talk about commands that are compatible with vi.
Better
Next, let's take a look at how vim repeats itself:
.
→ (Decimal point) The last command can be repeated
- N <command> → repeat a command N times
The following is an example. To open a file, try the following command:
2dd
→ Delete 2 rows
3p
→ Paste the text three times
100idesu [ESC]
→ "Desu" is written
Desu
Desu
Desu
Desu
Desu
Desu
Desu"
.
→ Repeat the previous command -- 100 "desu".
3.
→ Repeat "desu" three times (Note: It's not 300. You see, how clever VIM is ).
Stronger
To make your cursor move more efficiently, you must understand the following commands,Never skip.
- N
G
→ To line N (Chen Hao Note: note that G in the command is capitalized, And I generally use: N to line N, for example, lines 137 to 137th)
gg
→ To the first line. (Chen Hao Note: equivalent to 1G, or: 1)
G
→ To the last line.
- Move by word:
w
→ Start with the next word.
e
→ To the end of the next word.
> If you think the word is in the default format, use the lower case e and w. By default, a word consists of letters, numbers, and underscores (Chen Hao Note: program variables)
> If you think words are separated by blank characters, you need to use uppercase E and W. (Chen Hao Note: program statements)
Next, let me talk about the strongest cursor movement:
%
: The matching brackets are moved, including(
,{
,[
. (Chen Hao Note: you need to move the cursor first to brackets)
*
And#
: Match the current word of the cursor, move the cursor to the next (or the previous) match the word (* is the next, # Is the previous)
Believe me, the above three commands are quite powerful for programmers.
Faster
You must remember the movement of the cursor, because many commands can be linked with the commands that move the cursor. Many commands can be used as follows:
<start position><command><end position>
For example0y$
Command means:
0
→ First come to the line Header
y
→ Copy from here
$
→ Copy to the last character of the row
You can enterye
From the current position to the last character of the word.
You can also entery2/foo
To copy the strings between two "foo.
There is still a lot of time and you may have to press y to copy the file. The following command will also be copied:
d
(Delete)
v
(Visualized selection)
gU
(Change to uppercase)
gu
(Small write)
- And so on.
(Chen Hao Note: Visual selection is a very interesting command. You can press v first and move the cursor to see the selected text. Then, you may d, y or uppercase) Level 4-Vim super power
You only need to master the previous commands, and you can use VIM comfortably. But now we will introduce you to the VIM killer feature. The following are the reasons why I only use vim.
Move the cursor over the current row:
0
^
$
f
F
t
T
,
;
0
→ To the line Header
^
→ The first non-blank character to the line
$
→ End of line
g_
→ The last line is not the position of the blank character.
fa
→ To the next character with a, you can also use fs to the next character with s.
t,
→ The first character before the comma. A comma can be another character.
3fa
→ Search for the third a in the current row.
F
AndT
→ Andf
Andt
Same, but in the opposite direction.
Another useful command is:dt"
→ Delete all content until double quotation marks --"。
Region selection
<action>a<object>
Or
<action>i<object>
In visual mode, these commands are powerful in the format
<action>a<object>
And<action>i<object>
- Action can be any command, such
d
(Delete ),y
(Copy ),v
(You can select the mode as needed ).
- The object may be:
w
One word,W
A word separated by spaces,s
One sentence,p
A paragraph. It can also be a special character:"、
'、
)、
}、
]。
Suppose you have a string(map (+) ("foo"))
. The cursor key is in the firsto
.
vi"
→ Selectfoo
.
va"
→ Select"foo"
.
vi)
→ Select"foo"
.
va)
→ Select("foo")
.
v2i)
→ Selectmap (+) ("foo")
v2a)
→ Select(map (+) ("foo"))
Block operation:
<C-v>
Block operations, typical operations:0 <C-v> <C-d> I-- [ESC]
^
→ To the line Header
<C-v>
→ Start block Operation
<C-d>
→ Move down (you can also use hjkl to move the cursor, use %, or something else)
I-- [ESC]
→ I is insert, insert"--
", Press ESC to take effect for each row.
For vim in Windows, you need to use<C-q>
Instead<C-v>
,<C-v>
Is to copy the clipboard.
Automatic prompt:
<C-n>
And
<C-p>
In Insert mode, you can enter the beginning of a word, and then press<C-p> or <C-n> ......
Macro recording:
qa
Operation Sequence
q
,
@a
,
@@
qa
Record your operations in the registera。
- Therefore
@a
Macro that will replay the recording.
@@
Is a shortcut key used to replay the macro of the latest recording.
Example
In the text with only one line and only one line, type the following command:
qaYp<C-a>q
→
qa
Start recording
Yp
Copy rows.
<C-a>
Add 1.
q
Stop recording.
@a
→ Write down 2 below 1
@@
→ Write 3 in front of 2
- Now do
100@@
A new 100 row is created and the data is increased to 103.
Visual selection:
v
,
V
,
<C-v>
We can see that<C-v>
(In Windows, it should be <C-q>). We can usev
AndV
. Once selected, you can do the following:
J
→ Connect all rows (into one row)
<
Or>
→ Left and right indent
=
→ Auto indent (Chen Hao note: this function is quite powerful and I like it too much)
Add something after all selected rows:
<C-v>
- Select related rows (you can use
j
Or<C-d>
Or/pattern
Or%
......)
$
To the end of the line
A
, Input string, pressESC。
Split screen:
:split
And
vsplit
.
The following are the main Commands. You can use VIM's help.:help split
. You can refer to the previous article VIM split screen on this site.
:split
→ Create a split screen (:vsplit
Create a Vertical Split screen)
<C-w><dir>
: Dir is the direction, which can behjkl
Or one of them, which is used to switch the split screen.
<C-w>_
(Or<C-w>|
): Maximize the size (<C-w> | Vertical Split screen)
<C-w>+
(Or<C-w>-
): Increase the size.
Conclusion
- The above is the author's most commonly used 90% command.
- I suggest you learn one or two new commands every day.
- In two to three weeks, you will feel the power of vim.
- Sometimes learning VIM is like memorizing something.
- Fortunately, vim has many good tools and excellent documents.
- Run vimtutor until you are familiar with the basic commands.
- Which of the following must be carefully read in the online help documentation?
:help usr_02.txt
.
- You will learn
!,
Directory, register, plug-in, and many other functions.
Learning vim is just like learning to play the piano.
---------- Text ended ----------
For vi/vim, let's just comment: this is an editor that you don't need to use a mouse or a keypad. You only need to use a keyboard to edit many complex functions. Otherwise, Visual Studio won't have the vim plug-in.