mirror of
https://github.com/Hizenberg469/Vim-tutorials.git
synced 2026-04-19 22:02:24 +03:00
Text object, macro and Visual mode done
This commit is contained in:
Binary file not shown.
796
\
Normal file
796
\
Normal file
@@ -0,0 +1,796 @@
|
|||||||
|
Normal mode commands:
|
||||||
|
|
||||||
|
-> for navigating the file opened in vim:
|
||||||
|
|
||||||
|
h: to go left.
|
||||||
|
l: to go right.
|
||||||
|
j: to go down.
|
||||||
|
k: to go up.
|
||||||
|
|
||||||
|
ctrl + f: To do page down. Similar to page down button.
|
||||||
|
ctrl + b: To do page up. Similar to page up button.
|
||||||
|
z + <enter>: To bring the focus of vision to the top
|
||||||
|
where the cursor is currently present.
|
||||||
|
z + z: To bring the focus of vision to the center
|
||||||
|
where the cursor is currently present.
|
||||||
|
w: To move the cursor by one word on the file. It include the
|
||||||
|
punctuation as a word.(move one word forward)
|
||||||
|
W: To move the cursor by one word on file. It don't include the
|
||||||
|
punctuation as a word.(move one word forward)
|
||||||
|
b: To move the cursor by one word on file. It include the
|
||||||
|
punctuation as a word.(move on word backward)
|
||||||
|
B: To move the cursor by one word on file. It don't include the
|
||||||
|
punctuation as a word.(move on word backward)
|
||||||
|
|
||||||
|
0: To move the first column of the current line the cursor
|
||||||
|
is present.
|
||||||
|
^: To move the first letter of the first word of the current
|
||||||
|
line the cursor is present.
|
||||||
|
$: To move the last letter of the last word of the current
|
||||||
|
line the cursor is present.
|
||||||
|
gg: To move the first column of the first line of the file.
|
||||||
|
G: To move to the last line of the file.
|
||||||
|
<line-number>gg or <line-number>G: To move the particular
|
||||||
|
<line-number> as mentioned.
|
||||||
|
ctrl + g: To know the current line we are on, the file name,
|
||||||
|
the percentage of we have covered according to
|
||||||
|
current cursor position.
|
||||||
|
|
||||||
|
g + (ctrl+g): To get more detailed information of whatever
|
||||||
|
the previous was showing.
|
||||||
|
|
||||||
|
-> Deleting text from file in normal mode:
|
||||||
|
|
||||||
|
x: To delete the right side byte of the current cursor position.
|
||||||
|
X: To delete the left side byte of the current cursor position.
|
||||||
|
|
||||||
|
Using d to delete words with motion operation:
|
||||||
|
|
||||||
|
<operation>{motion}
|
||||||
|
for ex:
|
||||||
|
dw (this delete the what the w command would move
|
||||||
|
the cursor by)
|
||||||
|
|
||||||
|
dw: To delete a word in front of the current cursor position.
|
||||||
|
|
||||||
|
dl: To delete next byte towards right from current cursor position on
|
||||||
|
current line.
|
||||||
|
dh: To delete next byte towards left from current cursor position on
|
||||||
|
current line.
|
||||||
|
dj: To delete whole current line and the line below.
|
||||||
|
dk: To delete whole current line and the line above.
|
||||||
|
d$: To delete from current position of cursor to the end of
|
||||||
|
the line.
|
||||||
|
d0: To delete from current position to the first letter of the
|
||||||
|
current line the cursor is present.
|
||||||
|
D: Equivalent of of what d$
|
||||||
|
dd: To delete the current line entirely no matter where the cursor
|
||||||
|
is present currently on that same line.
|
||||||
|
|
||||||
|
<number>dd: To delete the 3 lines below from current line where
|
||||||
|
the cursor is present.
|
||||||
|
|
||||||
|
|
||||||
|
Note: <number><delete-command> is telling in short hand on how many
|
||||||
|
times the delete-command given should be executed. Same as the
|
||||||
|
command shown above (<number>dd).
|
||||||
|
|
||||||
|
<number>dw: delete-word command to be executed <number> numbers of times.
|
||||||
|
|
||||||
|
For ex:
|
||||||
|
3w = Repeat word motion 3 times.
|
||||||
|
|
||||||
|
d3w = Delete the 3w motion.
|
||||||
|
|
||||||
|
2d3w = Delete the 3w motion 2 times.
|
||||||
|
|
||||||
|
Line mode:
|
||||||
|
|
||||||
|
-> for navigating using line mode:
|
||||||
|
|
||||||
|
:<line-number><enter> : To go to the particular <line-number>.
|
||||||
|
:$<enter> : To move to the last line in the file.
|
||||||
|
|
||||||
|
!(exclamation mark): This Operator can be used to force the commands
|
||||||
|
|
||||||
|
for ex:
|
||||||
|
|
||||||
|
:q! is used to force quit the vim even if the changes on files
|
||||||
|
are not saved.
|
||||||
|
|
||||||
|
-> help command (for vim documentation):
|
||||||
|
|
||||||
|
:help <enter> : It will open vim documentation.
|
||||||
|
|
||||||
|
:help [command] : It will open documentation to a specific location where
|
||||||
|
the specification for that specific command is present.
|
||||||
|
|
||||||
|
:help {subject} : It will open documentation to a specific location where
|
||||||
|
the specification for the given subject.
|
||||||
|
|
||||||
|
:h : It is a short cut for :help in line mode.
|
||||||
|
|
||||||
|
(CTRL+w) + (CTRL+w): It is used to switch b/w windows currently open in vim
|
||||||
|
for editing.
|
||||||
|
|
||||||
|
(CTRL+o): Take you to the location where the previous search is done in the
|
||||||
|
document.
|
||||||
|
|
||||||
|
(CTRL+i): Take you to the location where the next search is done in the
|
||||||
|
document.
|
||||||
|
|
||||||
|
(CTRL+]): Place the cursor on the "subject" you want to search (for ex. linewise)
|
||||||
|
and press this command.
|
||||||
|
|
||||||
|
Note: Anything between [] in help documentation means it is optional in vim.
|
||||||
|
|
||||||
|
|
||||||
|
For autocompleting a command which is to be searched in help documentation
|
||||||
|
click CTRL+D, which shows suggestation. To iterate through all the suggestion
|
||||||
|
without writing it explicity use <TAB> key. To iterate in reverse order use
|
||||||
|
<SHIFT>+<TAB>.
|
||||||
|
|
||||||
|
|
||||||
|
-> Cut, Copy and Paste:
|
||||||
|
|
||||||
|
* d and x cut text, not just delete it.
|
||||||
|
* cut = delete and save into a register.
|
||||||
|
* Register is a clipboard-like storage location.
|
||||||
|
* This register is also known as default register or unnamed register.
|
||||||
|
|
||||||
|
> for pasting the text present in the default register use p command.
|
||||||
|
> if the line is cut using dd command then using 'p' will paste it below the current line where
|
||||||
|
the cursor is present.
|
||||||
|
> if 'P' command is used then it will paste above the current line where the cursor is
|
||||||
|
present.
|
||||||
|
> if a character is cut using 'x' or 'X' command using 'p' will paste the character
|
||||||
|
just after the current postion of the cursor.
|
||||||
|
> similarly, if 'P' command is used it will paste the character just before the current
|
||||||
|
position of the cursor.
|
||||||
|
|
||||||
|
Note:
|
||||||
|
> The data cutted is linewise then it will paste below/above current line.
|
||||||
|
> The data cutted is characterwise then it will paste before or after the current line.
|
||||||
|
|
||||||
|
> Standard - Vim terminology:
|
||||||
|
|
||||||
|
Cut = Delete
|
||||||
|
Copy = yank
|
||||||
|
paste = put
|
||||||
|
|
||||||
|
> for yanking(copying) use 'y' command.
|
||||||
|
> Just like 'd' command behavior with 'p' command is same.
|
||||||
|
|
||||||
|
* Undo command:
|
||||||
|
|
||||||
|
> To undo the action of previous command, use 'u' command to
|
||||||
|
undo the action.
|
||||||
|
> To redo the same command undone by undo 'u' command use 'CTRL+r'
|
||||||
|
command.
|
||||||
|
|
||||||
|
* Type of registers:
|
||||||
|
|
||||||
|
> Named registers : "a to "z
|
||||||
|
> Number register : "0 to "9
|
||||||
|
> unnamed register : ""
|
||||||
|
|
||||||
|
> unnamed register contains the data with acquired from one of the
|
||||||
|
commmands d, x, c, y and s.
|
||||||
|
c -> , s -> substitute.
|
||||||
|
|
||||||
|
> "0 : Most recently yanked data
|
||||||
|
> "1 : The data which is deleted recently.
|
||||||
|
> "2 : The data which was deleted second last time.
|
||||||
|
> "3 : and so on till "9....
|
||||||
|
|
||||||
|
> use :reg to see the content of each register.
|
||||||
|
> use :reg <arg>
|
||||||
|
wherer arg -> register name to show the content
|
||||||
|
+ arg can be string containing all the
|
||||||
|
registers named concatenated into a
|
||||||
|
single string.
|
||||||
|
|
||||||
|
-> Transforming and Substituting:
|
||||||
|
|
||||||
|
|
||||||
|
* Inserting:
|
||||||
|
|
||||||
|
@ Command :- Shift + i or CAPS + i (Capital i)
|
||||||
|
|
||||||
|
What does it do?
|
||||||
|
|
||||||
|
It put the mode in insert mode and put the cursor in
|
||||||
|
the first character of the first word of the current
|
||||||
|
line where the cursor is present.
|
||||||
|
|
||||||
|
@ Command :- Shift + a or CAPS + a (Capital a)
|
||||||
|
|
||||||
|
What does it do?
|
||||||
|
|
||||||
|
It put the mode in insert mode and put the cursor after
|
||||||
|
the last character of the last word of the current
|
||||||
|
line where the cursor is present.
|
||||||
|
|
||||||
|
@ Command :- o
|
||||||
|
|
||||||
|
What does it do?
|
||||||
|
|
||||||
|
It puts the mode in insert mode and put the cursor below
|
||||||
|
the line where the current cursor is present.
|
||||||
|
|
||||||
|
@ Command :- Shift + o
|
||||||
|
|
||||||
|
What does it do?
|
||||||
|
|
||||||
|
It puts the mode in insert mode and put the cursor above
|
||||||
|
the line where the current cursor is present.
|
||||||
|
|
||||||
|
* Replacing (Replace Mode):
|
||||||
|
|
||||||
|
@ Command :- Shift + r or CAPS + r (Capital r)
|
||||||
|
|
||||||
|
What does it do?
|
||||||
|
|
||||||
|
It pust the mode in replace mode. In replace mode, wherever
|
||||||
|
the cursor is present, it will start to replace each character
|
||||||
|
as we type and the previous character will be over-written by the
|
||||||
|
new character.
|
||||||
|
|
||||||
|
* Changing (Changing Mode):
|
||||||
|
|
||||||
|
@ Command :- <optional-register> + c + <word-motion>
|
||||||
|
|
||||||
|
What does it do?
|
||||||
|
|
||||||
|
It delete the series of bytes, based on the word-motion given,
|
||||||
|
and put the mode in INSERT mode. <word-motion> can be any
|
||||||
|
type of word motion that we have learnt. Here, <optional-register>
|
||||||
|
can be used to put the deleted or "replaced" word into the register
|
||||||
|
which we use to store as intended.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
"a + c + w
|
||||||
|
|
||||||
|
It will store the word into register "a which is replaced by using
|
||||||
|
command c + w.
|
||||||
|
|
||||||
|
@ Command :- Shift + c or CAPS + c (capital + c)
|
||||||
|
|
||||||
|
What does it do?
|
||||||
|
|
||||||
|
Replace the sequence of characters from current cursor position is present at till end
|
||||||
|
of the line.
|
||||||
|
|
||||||
|
@ Command :- cc
|
||||||
|
|
||||||
|
Replace the entire current line where the cursor is present.
|
||||||
|
|
||||||
|
@ Command :- ~
|
||||||
|
|
||||||
|
What does it do?
|
||||||
|
|
||||||
|
Switch over the case of the character where the current is present.
|
||||||
|
|
||||||
|
@ Command :- g + ~ + <motion-command>
|
||||||
|
|
||||||
|
What does it do?
|
||||||
|
|
||||||
|
Switch over the cases of the each character based on the motion command
|
||||||
|
range.
|
||||||
|
|
||||||
|
@ Command :- g + U + <motion-command>
|
||||||
|
|
||||||
|
What does it do?
|
||||||
|
|
||||||
|
Changes the entire case of each character to upper-case based on the motion command
|
||||||
|
range.
|
||||||
|
|
||||||
|
@ Command :- g + u + <motion-command>
|
||||||
|
|
||||||
|
What does it do?
|
||||||
|
|
||||||
|
Changes the entire case of each character to lower-case based on the
|
||||||
|
motion comand range.
|
||||||
|
|
||||||
|
-> Joining:
|
||||||
|
|
||||||
|
@ Command :- Shift + j or CAPS + j (Capital + j)
|
||||||
|
|
||||||
|
What does it do?
|
||||||
|
|
||||||
|
Joins the line below the current line where the cursor is present
|
||||||
|
to single line and add a space to it or add a double space if there
|
||||||
|
is a period at the end of the current line.
|
||||||
|
|
||||||
|
@ Command :- g + J + <motion-command>
|
||||||
|
|
||||||
|
What does it do?
|
||||||
|
|
||||||
|
Do the same thing as "J" command. Only difference is that it doesn't
|
||||||
|
add any space between joining lines.
|
||||||
|
|
||||||
|
|
||||||
|
-> Searching commands:
|
||||||
|
|
||||||
|
|
||||||
|
@ Command :- f + <character>
|
||||||
|
|
||||||
|
What does it do?
|
||||||
|
|
||||||
|
Searches for the next occurence of the character passed as an argument
|
||||||
|
from current cursor position on the same line.
|
||||||
|
NOTE THE WORD, SAME LINE.
|
||||||
|
|
||||||
|
@ Command :- F + <character>
|
||||||
|
|
||||||
|
What does it do?
|
||||||
|
|
||||||
|
Do the same thing as previous command, but in opposite direction.
|
||||||
|
|
||||||
|
@ Command :- ;
|
||||||
|
|
||||||
|
What does it do?
|
||||||
|
|
||||||
|
It repeat the command from the above two, whichever was executed
|
||||||
|
first. For example, if F + <character> is executed, it will repeat
|
||||||
|
the same command.
|
||||||
|
|
||||||
|
@ Command :- ,
|
||||||
|
|
||||||
|
What does it do?
|
||||||
|
|
||||||
|
It do the opposite of what ";" command does. For example, if
|
||||||
|
F + <character> is executed, it will execute f + <character>
|
||||||
|
action, repeatedly. It will do the opposite of whichever
|
||||||
|
above mentioned command was executed first.
|
||||||
|
|
||||||
|
@ Command :- t + <character>
|
||||||
|
|
||||||
|
|
||||||
|
What does it do?
|
||||||
|
|
||||||
|
It search for the <character> and place the cursor just one
|
||||||
|
position before the current cursor. Note that, using the same
|
||||||
|
command again will not move the cursor to next position w.r.t
|
||||||
|
same <character> that was mentioned earlier.
|
||||||
|
|
||||||
|
We can use ";" and "," command to repeat the mentioned command
|
||||||
|
even if the cursor is present just before the searched <character>,
|
||||||
|
it pass through the current <character> position.
|
||||||
|
|
||||||
|
Note that the searching is done from left to right.
|
||||||
|
|
||||||
|
@ Command :- T + <character>
|
||||||
|
|
||||||
|
What does it do?
|
||||||
|
|
||||||
|
It perform operation and behave in similar manner as done by t +
|
||||||
|
<character> command. But, the searching is done in reverse order.
|
||||||
|
|
||||||
|
**Note**
|
||||||
|
|
||||||
|
All these are motion-commands. That means, we can use it with Editing
|
||||||
|
commands like d (delete), c (changing), y (yanking), etc.
|
||||||
|
|
||||||
|
|
||||||
|
@ Command :- /<string>
|
||||||
|
|
||||||
|
What does it do?
|
||||||
|
|
||||||
|
It searches for the <string>.
|
||||||
|
|
||||||
|
Using "n" command will search for next <string> occurance in current
|
||||||
|
opened file.
|
||||||
|
|
||||||
|
Using "N" command does the same thing. But, in opposite direction.
|
||||||
|
|
||||||
|
**Note**
|
||||||
|
|
||||||
|
For "/" command for searching the incsearch option should be set.
|
||||||
|
|
||||||
|
If it is not, we can use following line command:
|
||||||
|
|
||||||
|
:set is
|
||||||
|
|
||||||
|
To check if the configuration is set use command:
|
||||||
|
|
||||||
|
:set is?
|
||||||
|
|
||||||
|
For highlighting the searches, check for:
|
||||||
|
|
||||||
|
Check :set hls?
|
||||||
|
|
||||||
|
Output: nohlsearch
|
||||||
|
|
||||||
|
Do: :set hls
|
||||||
|
|
||||||
|
Note that hlsearch is enabled will highlight the <string>s' until
|
||||||
|
new search is done which in turn highlight the new <string>.
|
||||||
|
To turn off the highlight, use:
|
||||||
|
|
||||||
|
:nohls.
|
||||||
|
|
||||||
|
It will turn-off the highlights not disable it permanently.
|
||||||
|
|
||||||
|
|
||||||
|
%% Trick %%
|
||||||
|
|
||||||
|
> Using "/" command to find a string or string containing the pattern specified
|
||||||
|
and pressing enter will take to the first such matching string.
|
||||||
|
|
||||||
|
> If we now use "c + w" command the cursor which is present at the first letter
|
||||||
|
of the word will delete that word and we type certain word.
|
||||||
|
|
||||||
|
> After getting out of the insert mode, pressing "n" command will move the cursor
|
||||||
|
the cursor to the next string and pressing the command "." will repeat the changes
|
||||||
|
that we did for first string i.e. repeat the process that we performed above.
|
||||||
|
|
||||||
|
|
||||||
|
@ Command: "?<string-pattern>
|
||||||
|
|
||||||
|
|
||||||
|
What does it do?
|
||||||
|
|
||||||
|
It search for the string matching the pattern in reverse direction of the current
|
||||||
|
cursor postion.
|
||||||
|
|
||||||
|
Here, "n" search for next pattern match in reverse direction. "N" does the reverse
|
||||||
|
of what "n" command does.
|
||||||
|
|
||||||
|
|
||||||
|
@ Command: "*"
|
||||||
|
|
||||||
|
What does it do?
|
||||||
|
|
||||||
|
It search for the next occurances of the exact string(not string-pattern) which is near or where
|
||||||
|
the current cursor is positioned.
|
||||||
|
|
||||||
|
|
||||||
|
@ Commmand: "#"
|
||||||
|
|
||||||
|
What does it do?
|
||||||
|
|
||||||
|
It seah for the next occurances of the exact string(not string-pattern) which is near or where
|
||||||
|
the current cursor is positioned.
|
||||||
|
|
||||||
|
%% TIPS %%
|
||||||
|
|
||||||
|
We can use editing commands like deleting(d), yanking(y), etc. with these searching command.
|
||||||
|
|
||||||
|
For ex:
|
||||||
|
|
||||||
|
Pressing "d" command and then using "/<string-pattern>" will leads to deleting of characters
|
||||||
|
from the current cursor position to the next occurance of the <string-pattern>.
|
||||||
|
|
||||||
|
Pressing "<register-name> with "y" command and then using "/<string-pattern>" will leads to
|
||||||
|
yanking(copying) from the current cursor position to the next occurance of the <string-pattern>.
|
||||||
|
|
||||||
|
|
||||||
|
@ Command : [range]s/<old>/<new>/[flag] (Its a line command)
|
||||||
|
^ ^
|
||||||
|
| |
|
||||||
|
optional optional
|
||||||
|
|
||||||
|
|
||||||
|
What does it do?
|
||||||
|
|
||||||
|
It replace the occurance of old string to new string over the range
|
||||||
|
in the file.
|
||||||
|
|
||||||
|
[flag]
|
||||||
|
|
||||||
|
* g : It represent to replace all the occurance of <old> to <new> in
|
||||||
|
current line where the cursor is present.
|
||||||
|
|
||||||
|
|
||||||
|
[range]
|
||||||
|
|
||||||
|
Define the range of this command. Could be single line, multiple line
|
||||||
|
and even all the lines in the file, etc.
|
||||||
|
|
||||||
|
* <line-number> : On which line number this command to be executed.
|
||||||
|
To execute the command on same line as cursor,
|
||||||
|
don't mention <line-number>.
|
||||||
|
|
||||||
|
* <start-line-number>,<end-line-number> : From the starting line number
|
||||||
|
to the ending line number to
|
||||||
|
to execute the command.
|
||||||
|
|
||||||
|
For ex:
|
||||||
|
:1s/<old>/<new>/g
|
||||||
|
|
||||||
|
It will replace <old> with <new> in the entire line of line number 1.
|
||||||
|
|
||||||
|
:1,5s/<old>/<new>/g
|
||||||
|
|
||||||
|
It will do the same form line number 1 to 5.
|
||||||
|
|
||||||
|
:/<Pattern-1>/,/<Pattern-2>/s/<old>/<new>/g
|
||||||
|
|
||||||
|
It will do the same from line which has pattern matching with
|
||||||
|
with <Pattern-1> and ending with line which has pattern
|
||||||
|
matching with pattern <Pattern-2>.
|
||||||
|
|
||||||
|
|
||||||
|
------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
$ = last line; . = current line
|
||||||
|
|
||||||
|
:.,$s/<old>/<new>/g
|
||||||
|
|
||||||
|
% = All the line (entire file)
|
||||||
|
|
||||||
|
:%s/<old>/<new>/g
|
||||||
|
|
||||||
|
-----------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
For including character such as "/" for <old> and <new>
|
||||||
|
we can use "\" which is a escape character.
|
||||||
|
|
||||||
|
For ex:
|
||||||
|
|
||||||
|
:s/\/<old>\//\/<new>\//
|
||||||
|
|
||||||
|
OR
|
||||||
|
|
||||||
|
we can use other non-alphanumeric character as a separator.
|
||||||
|
|
||||||
|
For ex:
|
||||||
|
|
||||||
|
:s#/<old>/#/<new>/
|
||||||
|
|
||||||
|
%% TIPS %%
|
||||||
|
|
||||||
|
To set options in VIM, we can use :set <option> command.
|
||||||
|
|
||||||
|
* To set a option to show the line number of the current opened file in the vim
|
||||||
|
we use:
|
||||||
|
:set nu
|
||||||
|
|
||||||
|
* To undo this:
|
||||||
|
|
||||||
|
:set nonu
|
||||||
|
* To toggle the current configuration.
|
||||||
|
|
||||||
|
:set nu!
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-> Text Objects and Macros:
|
||||||
|
|
||||||
|
**** Text Objects ****
|
||||||
|
@ Command: {operator}{a}{object}
|
||||||
|
|
||||||
|
What does it do?
|
||||||
|
|
||||||
|
It perform operation on a word, from the starting character of the word, eventhough the
|
||||||
|
cursor maybe present in the middle of the same word.
|
||||||
|
It will also perform perform operation on the space after that word until a new or a character is
|
||||||
|
encountered.
|
||||||
|
|
||||||
|
For ex:
|
||||||
|
|
||||||
|
daw = Delete A Word
|
||||||
|
|
||||||
|
@ Command: {operator}{i}{object}
|
||||||
|
|
||||||
|
What does it do?
|
||||||
|
|
||||||
|
It perform operation on a word, from the starting charcter of the word, eventhough the cursor
|
||||||
|
maybe present in the middle of the same word.
|
||||||
|
However, unlike {a} operator, it will not perform operation on the space after the word to
|
||||||
|
be deleted.
|
||||||
|
|
||||||
|
For ex:
|
||||||
|
|
||||||
|
ciw = Change Inner Word.
|
||||||
|
|
||||||
|
@ Command: {operator}{as}
|
||||||
|
|
||||||
|
For ex:
|
||||||
|
|
||||||
|
das = Delete a Sentence
|
||||||
|
|
||||||
|
What does it do?
|
||||||
|
|
||||||
|
It will delete a sentence until the period, including the space after the period
|
||||||
|
until the next character is encountered.
|
||||||
|
|
||||||
|
@ Command: {operator}{is}
|
||||||
|
|
||||||
|
For ex:
|
||||||
|
|
||||||
|
dis: Delete inner Sentence
|
||||||
|
|
||||||
|
What does it do?
|
||||||
|
|
||||||
|
It wil delete a sentence until the period, but the space after the period.
|
||||||
|
|
||||||
|
Note:
|
||||||
|
|
||||||
|
Vim consider line-break as part of the sentence.
|
||||||
|
|
||||||
|
%% TIPS %%
|
||||||
|
|
||||||
|
To repeate these command we can use "." command.
|
||||||
|
|
||||||
|
|
||||||
|
@ Command: {operator}{ap}
|
||||||
|
|
||||||
|
For ex:
|
||||||
|
|
||||||
|
dap = Delete a paragraph
|
||||||
|
|
||||||
|
What does it do?
|
||||||
|
|
||||||
|
It will delete a paragraph until the boundary of the paragraph object,
|
||||||
|
including the blank line.
|
||||||
|
|
||||||
|
@ Command: {operator}{ip}
|
||||||
|
|
||||||
|
For ex:
|
||||||
|
|
||||||
|
dip = Delete a paragraph
|
||||||
|
|
||||||
|
What does it do?
|
||||||
|
|
||||||
|
It will delete a paragraph until the boundary of the paragraph object,
|
||||||
|
i.e. the blank line. However, it does not include the blank line.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ Command: {operator}{a<symbol>} and {operator}{i<symbol>}
|
||||||
|
|
||||||
|
<symbol>
|
||||||
|
|
||||||
|
{ } or B, ( ) or b, < >, ' ', " ", [ ],` `
|
||||||
|
For ex:
|
||||||
|
|
||||||
|
di{ or di}
|
||||||
|
|
||||||
|
What does it do?
|
||||||
|
|
||||||
|
It will delete anything between { }. With "a" operator
|
||||||
|
will also delete the { }.
|
||||||
|
|
||||||
|
dab or da( or da)
|
||||||
|
|
||||||
|
What does it do?
|
||||||
|
|
||||||
|
It will delete anything between ( ) including the brackets.
|
||||||
|
|
||||||
|
|
||||||
|
%% TIPS %%
|
||||||
|
|
||||||
|
This command is benificial for programming languages.
|
||||||
|
|
||||||
|
|
||||||
|
at and it
|
||||||
|
|
||||||
|
t here means tags.
|
||||||
|
|
||||||
|
It will helpful for programming languages with opening
|
||||||
|
and closing tags like html and xml.
|
||||||
|
|
||||||
|
Even custom made tags are applicable in this case.
|
||||||
|
|
||||||
|
|
||||||
|
**** Macros ****
|
||||||
|
|
||||||
|
Macros are recorded to a register of vim. (named register)
|
||||||
|
|
||||||
|
%% To recored a macro %%
|
||||||
|
|
||||||
|
Use command: q<register-name>
|
||||||
|
|
||||||
|
It will start the recording.
|
||||||
|
|
||||||
|
Recording ends by using only the command "q".
|
||||||
|
|
||||||
|
%% To use the recorded macro %%
|
||||||
|
|
||||||
|
Use Command: @<register-name>
|
||||||
|
|
||||||
|
%% To use last recorded macro %%
|
||||||
|
|
||||||
|
Use command: @@
|
||||||
|
|
||||||
|
|
||||||
|
Macro Best Practices
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
* Normalize the cursor position
|
||||||
|
-> 0
|
||||||
|
|
||||||
|
* Perform edits and operations.
|
||||||
|
|
||||||
|
* Position you cursor to enable easy replays.
|
||||||
|
-> j
|
||||||
|
|
||||||
|
%% TIPS %%
|
||||||
|
|
||||||
|
After recording macros to certain register, we can again append to
|
||||||
|
more macros to the register by using q+<Capital-register>.
|
||||||
|
For ex:
|
||||||
|
|
||||||
|
q+A instead of q+a.
|
||||||
|
|
||||||
|
|
||||||
|
This is true for appending anything to the register.
|
||||||
|
|
||||||
|
|
||||||
|
Applying Macros of particular register on the range of line:
|
||||||
|
------------------------------------------------------------
|
||||||
|
|
||||||
|
Use command:
|
||||||
|
|
||||||
|
:<start-line-number>,<end-line-number>normal @<register-name>
|
||||||
|
|
||||||
|
From all the line the file.
|
||||||
|
|
||||||
|
|
||||||
|
Use command:
|
||||||
|
|
||||||
|
:.,$normal @<register-name>
|
||||||
|
|
||||||
|
Saving Macros
|
||||||
|
---------------
|
||||||
|
|
||||||
|
* viminfo file
|
||||||
|
|
||||||
|
+ .viminfo ( for unix like system like LINUX or MAC )
|
||||||
|
+ _viminfo ( for windows like system )
|
||||||
|
* Stores history and non-empty registers.
|
||||||
|
* Read when vim starts.
|
||||||
|
* Can easily overwrite registers.
|
||||||
|
|
||||||
|
* vimrc files
|
||||||
|
|
||||||
|
+ .vimrc
|
||||||
|
+ _vimrc
|
||||||
|
|
||||||
|
We can define macros in register inside vimrc file.
|
||||||
|
|
||||||
|
let @<register-name> = '<Marcro>'
|
||||||
|
|
||||||
|
%% TIPS %%
|
||||||
|
|
||||||
|
To know the character of certain key-stroke, like Esc character.
|
||||||
|
|
||||||
|
We can know this by being in insert mode then type CTRL+v and the
|
||||||
|
Key for which we want to know the character.
|
||||||
|
|
||||||
|
|
||||||
|
-> Visual mode:
|
||||||
|
|
||||||
|
|
||||||
|
Use v to start characterwise visual mode.
|
||||||
|
Use V to start linewise visual mode.
|
||||||
|
Use Ctrl-v to start blockwise visual mode.
|
||||||
|
|
||||||
|
You can use motions to expand the visual area.
|
||||||
|
You can also use text objects to expand the visual area.
|
||||||
|
|
||||||
|
Just some of commands you can use in visual mode include:
|
||||||
|
~ - Switch case
|
||||||
|
c - Change
|
||||||
|
d - Delete
|
||||||
|
y - Yank
|
||||||
|
r - Replace
|
||||||
|
x - Delete
|
||||||
|
I - Insert
|
||||||
|
A - Append
|
||||||
|
J - Join
|
||||||
|
u - Make lowercase
|
||||||
|
U - Make uppercase
|
||||||
|
> - Shift right
|
||||||
|
< - Shift left
|
||||||
|
o - To move to the end of the highlighted part in the visual mode.
|
||||||
|
O - To move the opposite corner of the highlighted block diagonally.
|
||||||
|
gv - Will highlight everything which it got highlighted last time
|
||||||
|
and it will position the cursor in the last location where
|
||||||
|
it was present in visual mode and the mode will also the
|
||||||
|
same visual mode which was used last time.
|
||||||
62
macros.txt
62
macros.txt
@@ -1,12 +1,12 @@
|
|||||||
To record a macro, use the q command followed by a regsiter. To stop, type q.
|
NOTE: To record a macro, use the q command followed by a regsiter. To stop, type q.
|
||||||
There are no special macro registers. There is only one a register, for example.
|
NOTE: There are no special macro registers. There is only one a register, for example.
|
||||||
To replay the macro use @ followed by the register.
|
NOTE: To replay the macro use @ followed by the register.
|
||||||
To repeat the most recently executed marco, use @@.
|
NOTE: To repeat the most recently executed marco, use @@.
|
||||||
|
|
||||||
Position the cursor at the beginning of the line with 0.
|
TIP: Position the cursor at the beginning of the line with 0.
|
||||||
Perform your edits and/or commands.
|
TIP: Perform your edits and/or commands.
|
||||||
Move the cursor to the next line with j.
|
TIP: Move the cursor to the next line with j.
|
||||||
Stop the recording with q.
|
TIP: Stop the recording with q.
|
||||||
|
|
||||||
Think big.
|
Think big.
|
||||||
Feed and strengthen your mind.
|
Feed and strengthen your mind.
|
||||||
@@ -14,37 +14,33 @@ Better to have written a lousy ballet than to have composed no ballet at all.
|
|||||||
If you don’t prioritize your life, someone else will.
|
If you don’t prioritize your life, someone else will.
|
||||||
Without great solitude no serious work is possible.
|
Without great solitude no serious work is possible.
|
||||||
|
|
||||||
FIRST NAME: Joseph LAST NAME: Andrews
|
Joseph Andrews
|
||||||
FIRST NAME: Scott LAST NAME: Young
|
Scott Young
|
||||||
FIRST NAME: Jessica LAST NAME: Smith
|
Jessica Smith
|
||||||
FIRST NAME: Shirley LAST NAME: Landers
|
Shirley Landers
|
||||||
FIRST NAME: Pamela LAST NAME: Lewis
|
FIRST NAME: Pamela LAST NAME: Lewis
|
||||||
|
|
||||||
BEFORE: "Montgomery", "(Alabama)" => "usa"
|
BEFORE: "Montgomery", "(Alabama)" => "usa"
|
||||||
AFTER: 'Montgomery', 'Alabama', 'USA'
|
AFTER: 'Montgomery', 'Alabama', 'USA'
|
||||||
|
|
||||||
"Montgomery", "(Alabama)" => "usa"
|
'Montgomery', 'Alabama' => 'USA'
|
||||||
"Juneau", "(Alaska)" => "usa"
|
'Juneau', 'Alaska' => 'USA'
|
||||||
"Phoenix", "(Arizona)" => "usa"
|
'Phoenix', 'Arizona' => 'USA'
|
||||||
"Little", "(Arkansas)" => "usa"
|
'Little', 'Arkansas' => 'USA'
|
||||||
"Sacramento", "(California)" => "usa"
|
'Sacramento', 'California' => 'USA'
|
||||||
"Denver", "(Colorado)" => "usa"
|
'Denver', 'Colorado' => 'USA'
|
||||||
"Hartford", "(Connecticut)" => "usa"
|
'Hartford', 'Connecticut' => 'USA'
|
||||||
"Dover", "(Delaware)" => "usa"
|
'Dover', 'Delaware' => 'USA'
|
||||||
"Tallahassee", "(Florida)" => "usa"
|
'Tallahassee', 'Florida' => 'USA'
|
||||||
"Atlanta", "(Georgia)" => "usa"
|
'Atlanta', 'Georgia' => 'USA'
|
||||||
|
|
||||||
amazon.com has address:
|
54.239.17.7 amazon.com
|
||||||
54.239.17.7
|
216.58.192.78 google.com
|
||||||
|
208.80.154.224 wikipedia.org
|
||||||
|
|
||||||
google.com has address:
|
IANOTE: €ýa
|
||||||
216.58.192.78
|
ANOTE: Remember, macros just replay what's stored in a register.
|
||||||
|
|
||||||
wikipedia.org has address:
|
|
||||||
208.80.154.224
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Remember, macros just replay what's stored in a register.
|
|
||||||
|
|
||||||
|
let @d = '0jDkPa €ýa/ has
|
||||||
|
Djdj'
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ Zeke zeroed in on zoo keeping.
|
|||||||
|
|
||||||
DOMAIN=example.net # The example.net domain.
|
DOMAIN=example.net # The example.net domain.
|
||||||
MAIL_SERVER=mail.example.net
|
MAIL_SERVER=mail.example.net
|
||||||
MAIL_PATH=/var/spool/mail
|
MAIL_PATH=/usr/local/mail
|
||||||
|
|
||||||
# Local configuration
|
# Local configuration
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
This is a sentence comprised of many words. This is another sentence. A
|
This is a sentence made of many words. This is another sentence. A
|
||||||
paragraph is made up of multiple sentences. Just like this one!
|
paragraph is made up of multiple sentences. Just like this one!
|
||||||
|
|
||||||
This is also paragraph.
|
This is also paragraph.
|
||||||
No only is it made up of multiple sentences, it's made up of multiple lines.
|
No only is it made up of multiple sentences, it's made up of multiple lines.
|
||||||
This is the last line in this paragraph.
|
This is the last line in this paragraph.
|
||||||
|
|
||||||
colors = ['red', 'green', 'blue']
|
colors =
|
||||||
print(colors)
|
print()
|
||||||
<html>
|
<html>
|
||||||
<p>This is <strong>so, so, very</strong> cool!</p>
|
<p>This is <strong>so, so, very</strong> cool!</p>
|
||||||
<i_made_this_up>There is text here.</i_made_this_up>
|
<i_made_this_up>There is text here.</i_made_this_up>
|
||||||
|
|||||||
292
vim-commands
292
vim-commands
@@ -557,4 +557,296 @@ Line mode:
|
|||||||
|
|
||||||
:set nu!
|
:set nu!
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-> Text Objects and Macros:
|
||||||
|
|
||||||
|
**** Text Objects ****
|
||||||
|
@ Command: {operator}{a}{object}
|
||||||
|
|
||||||
|
What does it do?
|
||||||
|
|
||||||
|
It perform operation on a word, from the starting character of the word, eventhough the
|
||||||
|
cursor maybe present in the middle of the same word.
|
||||||
|
It will also perform perform operation on the space after that word until a new or a character is
|
||||||
|
encountered.
|
||||||
|
|
||||||
|
For ex:
|
||||||
|
|
||||||
|
daw = Delete A Word
|
||||||
|
|
||||||
|
@ Command: {operator}{i}{object}
|
||||||
|
|
||||||
|
What does it do?
|
||||||
|
|
||||||
|
It perform operation on a word, from the starting charcter of the word, eventhough the cursor
|
||||||
|
maybe present in the middle of the same word.
|
||||||
|
However, unlike {a} operator, it will not perform operation on the space after the word to
|
||||||
|
be deleted.
|
||||||
|
|
||||||
|
For ex:
|
||||||
|
|
||||||
|
ciw = Change Inner Word.
|
||||||
|
|
||||||
|
@ Command: {operator}{as}
|
||||||
|
|
||||||
|
For ex:
|
||||||
|
|
||||||
|
das = Delete a Sentence
|
||||||
|
|
||||||
|
What does it do?
|
||||||
|
|
||||||
|
It will delete a sentence until the period, including the space after the period
|
||||||
|
until the next character is encountered.
|
||||||
|
|
||||||
|
@ Command: {operator}{is}
|
||||||
|
|
||||||
|
For ex:
|
||||||
|
|
||||||
|
dis: Delete inner Sentence
|
||||||
|
|
||||||
|
What does it do?
|
||||||
|
|
||||||
|
It wil delete a sentence until the period, but the space after the period.
|
||||||
|
|
||||||
|
Note:
|
||||||
|
|
||||||
|
Vim consider line-break as part of the sentence.
|
||||||
|
|
||||||
|
%% TIPS %%
|
||||||
|
|
||||||
|
To repeate these command we can use "." command.
|
||||||
|
|
||||||
|
|
||||||
|
@ Command: {operator}{ap}
|
||||||
|
|
||||||
|
For ex:
|
||||||
|
|
||||||
|
dap = Delete a paragraph
|
||||||
|
|
||||||
|
What does it do?
|
||||||
|
|
||||||
|
It will delete a paragraph until the boundary of the paragraph object,
|
||||||
|
including the blank line.
|
||||||
|
|
||||||
|
@ Command: {operator}{ip}
|
||||||
|
|
||||||
|
For ex:
|
||||||
|
|
||||||
|
dip = Delete a paragraph
|
||||||
|
|
||||||
|
What does it do?
|
||||||
|
|
||||||
|
It will delete a paragraph until the boundary of the paragraph object,
|
||||||
|
i.e. the blank line. However, it does not include the blank line.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ Command: {operator}{a<symbol>} and {operator}{i<symbol>}
|
||||||
|
|
||||||
|
<symbol>
|
||||||
|
|
||||||
|
{ } or B, ( ) or b, < >, ' ', " ", [ ],` `
|
||||||
|
For ex:
|
||||||
|
|
||||||
|
di{ or di}
|
||||||
|
|
||||||
|
What does it do?
|
||||||
|
|
||||||
|
It will delete anything between { }. With "a" operator
|
||||||
|
will also delete the { }.
|
||||||
|
|
||||||
|
dab or da( or da)
|
||||||
|
|
||||||
|
What does it do?
|
||||||
|
|
||||||
|
It will delete anything between ( ) including the brackets.
|
||||||
|
|
||||||
|
|
||||||
|
%% TIPS %%
|
||||||
|
|
||||||
|
This command is benificial for programming languages.
|
||||||
|
|
||||||
|
|
||||||
|
at and it
|
||||||
|
|
||||||
|
t here means tags.
|
||||||
|
|
||||||
|
It will helpful for programming languages with opening
|
||||||
|
and closing tags like html and xml.
|
||||||
|
|
||||||
|
Even custom made tags are applicable in this case.
|
||||||
|
|
||||||
|
|
||||||
|
**** Macros ****
|
||||||
|
|
||||||
|
Macros are recorded to a register of vim. (named register)
|
||||||
|
|
||||||
|
%% To recored a macro %%
|
||||||
|
|
||||||
|
Use command: q<register-name>
|
||||||
|
|
||||||
|
It will start the recording.
|
||||||
|
|
||||||
|
Recording ends by using only the command "q".
|
||||||
|
|
||||||
|
%% To use the recorded macro %%
|
||||||
|
|
||||||
|
Use Command: @<register-name>
|
||||||
|
|
||||||
|
%% To use last recorded macro %%
|
||||||
|
|
||||||
|
Use command: @@
|
||||||
|
|
||||||
|
|
||||||
|
Macro Best Practices
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
* Normalize the cursor position
|
||||||
|
-> 0
|
||||||
|
|
||||||
|
* Perform edits and operations.
|
||||||
|
|
||||||
|
* Position you cursor to enable easy replays.
|
||||||
|
-> j
|
||||||
|
|
||||||
|
%% TIPS %%
|
||||||
|
|
||||||
|
After recording macros to certain register, we can again append to
|
||||||
|
more macros to the register by using q+<Capital-register>.
|
||||||
|
For ex:
|
||||||
|
|
||||||
|
q+A instead of q+a.
|
||||||
|
|
||||||
|
|
||||||
|
This is true for appending anything to the register.
|
||||||
|
|
||||||
|
|
||||||
|
Applying Macros of particular register on the range of line:
|
||||||
|
------------------------------------------------------------
|
||||||
|
|
||||||
|
Use command:
|
||||||
|
|
||||||
|
:<start-line-number>,<end-line-number>normal @<register-name>
|
||||||
|
|
||||||
|
From all the line the file.
|
||||||
|
|
||||||
|
|
||||||
|
Use command:
|
||||||
|
|
||||||
|
:.,$normal @<register-name>
|
||||||
|
|
||||||
|
Saving Macros
|
||||||
|
---------------
|
||||||
|
|
||||||
|
* viminfo file
|
||||||
|
|
||||||
|
+ .viminfo ( for unix like system like LINUX or MAC )
|
||||||
|
+ _viminfo ( for windows like system )
|
||||||
|
* Stores history and non-empty registers.
|
||||||
|
* Read when vim starts.
|
||||||
|
* Can easily overwrite registers.
|
||||||
|
|
||||||
|
* vimrc files
|
||||||
|
|
||||||
|
+ .vimrc
|
||||||
|
+ _vimrc
|
||||||
|
|
||||||
|
We can define macros in register inside vimrc file.
|
||||||
|
|
||||||
|
let @<register-name> = '<Marcro>'
|
||||||
|
|
||||||
|
%% TIPS %%
|
||||||
|
|
||||||
|
To know the character of certain key-stroke, like Esc character.
|
||||||
|
|
||||||
|
We can know this by being in insert mode then type CTRL+v and the
|
||||||
|
Key for which we want to know the character.
|
||||||
|
|
||||||
|
|
||||||
|
-> Visual mode:
|
||||||
|
|
||||||
|
|
||||||
|
Use v to start characterwise visual mode.
|
||||||
|
Use V to start linewise visual mode.
|
||||||
|
Use Ctrl-v to start blockwise visual mode.
|
||||||
|
|
||||||
|
You can use motions to expand the visual area.
|
||||||
|
You can also use text objects to expand the visual area.
|
||||||
|
|
||||||
|
Just some of commands you can use in visual mode include:
|
||||||
|
~ - Switch case
|
||||||
|
c - Change
|
||||||
|
d - Delete
|
||||||
|
y - Yank
|
||||||
|
r - Replace
|
||||||
|
x - Delete
|
||||||
|
I - Insert
|
||||||
|
A - Append
|
||||||
|
J - Join
|
||||||
|
u - Make lowercase
|
||||||
|
U - Make uppercase
|
||||||
|
> - Shift right
|
||||||
|
< - Shift left
|
||||||
|
o - To move to the end of the highlighted part in the visual mode.
|
||||||
|
O - To move the opposite corner of the highlighted block diagonally.
|
||||||
|
gv - Will highlight everything which it got highlighted last time
|
||||||
|
and it will position the cursor in the last location where
|
||||||
|
it was present in visual mode and the mode will also the
|
||||||
|
same visual mode which was used last time.
|
||||||
|
|
||||||
|
%% TIPS %%
|
||||||
|
|
||||||
|
To add same character or set of character to multiple lines, use VISUAL-BLOCK
|
||||||
|
mode.
|
||||||
|
|
||||||
|
Go to VISUAL-BLOCK mode select the block, then use INSERT or APPEND, then
|
||||||
|
add the desired character or set of character and Esc. All the character will
|
||||||
|
appear on desired places.
|
||||||
|
Note: 'i' and 'a' command don't work in VISUAL mode.
|
||||||
|
|
||||||
|
To shift a line without using visual mode, we can use ">>" or "<<" command.
|
||||||
|
|
||||||
|
%% TIPS %%
|
||||||
|
|
||||||
|
To the Shift width and tabs space it applies, we can use:
|
||||||
|
|
||||||
|
Command:
|
||||||
|
|
||||||
|
:set shiftwidth?
|
||||||
|
:set tabstop?
|
||||||
|
|
||||||
|
To identify tab, use ":set list" and the symbol with ^I character represent
|
||||||
|
tab.
|
||||||
|
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
If shiftwidth = 8 and tabstop = 8 and expandtab is set to noexpandtab,
|
||||||
|
then shift operation is equivalent to tab.
|
||||||
|
expandtab expands with appropiate number of spaces instead of actual
|
||||||
|
tab character.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
In visual mode, if we select certain part and use line command to
|
||||||
|
execute line commmand like ":s/<old>/<new>/" substitution command
|
||||||
|
we can get the range of the highlighted text automatically in form
|
||||||
|
":'<,'>" and we can use it with any line command.
|
||||||
|
|
||||||
|
For ex:
|
||||||
|
|
||||||
|
":'<,'>center"
|
||||||
|
|
||||||
|
This will move highlighted text to the center.
|
||||||
|
|
||||||
|
":'<,'>center 40"
|
||||||
|
|
||||||
|
Here, 40 is the space count to move it to the center.
|
||||||
|
|
||||||
|
center -> center aligned. (ce)
|
||||||
|
left -> left aligned. (le)
|
||||||
|
right -> right aligned. (ri)
|
||||||
|
|
||||||
|
We can use short-hand version as well.
|
||||||
|
|||||||
Reference in New Issue
Block a user