/
usr
/
share
/
vim
/
vim80
/
doc
/
/usr/share/vim/vim80/doc
mkdir
upload
Name
Size
Mode
Actions
arabic.txt
11936
0644
edit
dl
rm
autocmd.txt
65402
0644
edit
dl
rm
change.txt
74877
0644
edit
dl
rm
channel.txt
30819
0644
edit
dl
rm
cmdline.txt
47283
0644
edit
dl
rm
debug.txt
7182
0644
edit
dl
rm
debugger.txt
5744
0644
edit
dl
rm
develop.txt
22344
0644
edit
dl
rm
diff.txt
16525
0644
edit
dl
rm
digraph.txt
62123
0644
edit
dl
rm
editing.txt
73176
0644
edit
dl
rm
eval.txt
444462
0644
edit
dl
rm
farsi.txt
9703
0644
edit
dl
rm
filetype.txt
26647
0644
edit
dl
rm
fold.txt
23694
0644
edit
dl
rm
ft_ada.txt
18247
0644
edit
dl
rm
ft_rust.txt
9526
0644
edit
dl
rm
ft_sql.txt
30694
0644
edit
dl
rm
gui.txt
45592
0644
edit
dl
rm
gui_w32.txt
18916
0644
edit
dl
rm
gui_x11.txt
29480
0644
edit
dl
rm
hangulin.txt
3291
0644
edit
dl
rm
hebrew.txt
5714
0644
edit
dl
rm
help.txt
8578
0644
edit
dl
rm
helphelp.txt
14338
0644
edit
dl
rm
howto.txt
2911
0644
edit
dl
rm
if_cscop.txt
19361
0644
edit
dl
rm
if_lua.txt
14642
0644
edit
dl
rm
if_mzsch.txt
11823
0644
edit
dl
rm
if_ole.txt
7405
0644
edit
dl
rm
if_perl.txt
11149
0644
edit
dl
rm
if_pyth.txt
37944
0644
edit
dl
rm
if_ruby.txt
8014
0644
edit
dl
rm
if_sniff.txt
266
0644
edit
dl
rm
if_tcl.txt
23026
0644
edit
dl
rm
indent.txt
39427
0644
edit
dl
rm
index.txt
76443
0644
edit
dl
rm
insert.txt
83156
0644
edit
dl
rm
intro.txt
39226
0644
edit
dl
rm
map.txt
64668
0644
edit
dl
rm
mbyte.txt
59306
0644
edit
dl
rm
message.txt
31230
0644
edit
dl
rm
mlang.txt
7850
0644
edit
dl
rm
motion.txt
51602
0644
edit
dl
rm
netbeans.txt
36998
0644
edit
dl
rm
options.txt
389116
0644
edit
dl
rm
os_390.txt
4753
0644
edit
dl
rm
os_amiga.txt
5461
0644
edit
dl
rm
os_beos.txt
10983
0644
edit
dl
rm
os_dos.txt
12021
0644
edit
dl
rm
os_mac.txt
6851
0644
edit
dl
rm
os_mint.txt
1402
0644
edit
dl
rm
os_msdos.txt
518
0644
edit
dl
rm
os_os2.txt
294
0644
edit
dl
rm
os_qnx.txt
4071
0644
edit
dl
rm
os_risc.txt
323
0644
edit
dl
rm
os_unix.txt
2595
0644
edit
dl
rm
os_vms.txt
32100
0644
edit
dl
rm
os_win32.txt
13348
0644
edit
dl
rm
pattern.txt
59321
0644
edit
dl
rm
pi_getscript.txt
21078
0644
edit
dl
rm
pi_gzip.txt
1321
0644
edit
dl
rm
pi_logipat.txt
4186
0644
edit
dl
rm
pi_netrw.txt
175550
0644
edit
dl
rm
pi_paren.txt
2269
0644
edit
dl
rm
pi_spec.txt
4122
0644
edit
dl
rm
pi_tar.txt
6223
0644
edit
dl
rm
pi_vimball.txt
11853
0644
edit
dl
rm
pi_zip.txt
7229
0644
edit
dl
rm
print.txt
31158
0644
edit
dl
rm
quickfix.txt
69021
0644
edit
dl
rm
quickref.txt
71256
0644
edit
dl
rm
quotes.txt
12743
0644
edit
dl
rm
recover.txt
10694
0644
edit
dl
rm
remote.txt
8420
0644
edit
dl
rm
repeat.txt
39573
0644
edit
dl
rm
rileft.txt
4976
0644
edit
dl
rm
russian.txt
3090
0644
edit
dl
rm
scroll.txt
14071
0644
edit
dl
rm
sign.txt
6891
0644
edit
dl
rm
spell.txt
62781
0644
edit
dl
rm
sponsor.txt
7198
0644
edit
dl
rm
starting.txt
73622
0644
edit
dl
rm
syntax.txt
217471
0644
edit
dl
rm
tabpage.txt
16720
0644
edit
dl
rm
tags
328832
0644
edit
dl
rm
tagsrch.txt
36636
0644
edit
dl
rm
term.txt
45416
0644
edit
dl
rm
terminal.txt
33567
0644
edit
dl
rm
tips.txt
20556
0644
edit
dl
rm
todo.txt
296268
0644
edit
dl
rm
uganda.txt
14024
0644
edit
dl
rm
undo.txt
16539
0644
edit
dl
rm
usr_01.txt
7090
0644
edit
dl
rm
usr_02.txt
24339
0644
edit
dl
rm
usr_03.txt
23605
0644
edit
dl
rm
usr_04.txt
19082
0644
edit
dl
rm
usr_05.txt
23824
0644
edit
dl
rm
usr_06.txt
9587
0644
edit
dl
rm
usr_07.txt
15984
0644
edit
dl
rm
usr_08.txt
19374
0644
edit
dl
rm
usr_09.txt
11450
0644
edit
dl
rm
usr_10.txt
29180
0644
edit
dl
rm
usr_11.txt
12611
0644
edit
dl
rm
usr_12.txt
13424
0644
edit
dl
rm
usr_20.txt
13703
0644
edit
dl
rm
usr_21.txt
18373
0644
edit
dl
rm
usr_22.txt
14297
0644
edit
dl
rm
usr_23.txt
12588
0644
edit
dl
rm
usr_24.txt
20869
0644
edit
dl
rm
usr_25.txt
19114
0644
edit
dl
rm
usr_26.txt
8254
0644
edit
dl
rm
usr_27.txt
17723
0644
edit
dl
rm
usr_28.txt
16015
0644
edit
dl
rm
usr_29.txt
20116
0644
edit
dl
rm
usr_30.txt
22656
0644
edit
dl
rm
usr_31.txt
10394
0644
edit
dl
rm
usr_32.txt
5373
0644
edit
dl
rm
usr_40.txt
23184
0644
edit
dl
rm
usr_41.txt
89301
0644
edit
dl
rm
usr_42.txt
13798
0644
edit
dl
rm
usr_43.txt
7404
0644
edit
dl
rm
usr_44.txt
29211
0644
edit
dl
rm
usr_45.txt
17912
0644
edit
dl
rm
usr_90.txt
17661
0644
edit
dl
rm
usr_toc.txt
9218
0644
edit
dl
rm
various.txt
28852
0644
edit
dl
rm
version4.txt
13906
0644
edit
dl
rm
version5.txt
308543
0644
edit
dl
rm
version6.txt
577052
0644
edit
dl
rm
version7.txt
674766
0644
edit
dl
rm
version8.txt
684252
0644
edit
dl
rm
visual.txt
21843
0644
edit
dl
rm
vi_diff.txt
42812
0644
edit
dl
rm
windows.txt
53030
0644
edit
dl
rm
workshop.txt
4631
0644
edit
dl
rm
Edit:
/usr/share/vim/vim80/doc/usr_04.txt
(19082B)
*usr_04.txt* For Vim version 8.0. Last change: 2014 Aug 29 VIM USER MANUAL - by Bram Moolenaar Making small changes This chapter shows you several ways of making corrections and moving text around. It teaches you the three basic ways to change text: operator-motion, Visual mode and text objects. |04.1| Operators and motions |04.2| Changing text |04.3| Repeating a change |04.4| Visual mode |04.5| Moving text |04.6| Copying text |04.7| Using the clipboard |04.8| Text objects |04.9| Replace mode |04.10| Conclusion Next chapter: |usr_05.txt| Set your settings Previous chapter: |usr_03.txt| Moving around Table of contents: |usr_toc.txt| ============================================================================== *04.1* Operators and motions In chapter 2 you learned the "x" command to delete a single character. And using a count: "4x" deletes four characters. The "dw" command deletes a word. You may recognize the "w" command as the move word command. In fact, the "d" command may be followed by any motion command, and it deletes from the current location to the place where the cursor winds up. The "4w" command, for example, moves the cursor over four words. The d4w command deletes four words. To err is human. To really foul up you need a computer. ~ ------------------> d4w To err is human. you need a computer. ~ Vim only deletes up to the position where the motion takes the cursor. That's because Vim knows that you probably don't want to delete the first character of a word. If you use the "e" command to move to the end of a word, Vim guesses that you do want to include that last character: To err is human. you need a computer. ~ --------> d2e To err is human. a computer. ~ Whether the character under the cursor is included depends on the command you used to move to that character. The reference manual calls this "exclusive" when the character isn't included and "inclusive" when it is. The "$" command moves to the end of a line. The "d$" command deletes from the cursor to the end of the line. This is an inclusive motion, thus the last character of the line is included in the delete operation: To err is human. a computer. ~ ------------> d$ To err is human ~ There is a pattern here: operator-motion. You first type an operator command. For example, "d" is the delete operator. Then you type a motion command like "4l" or "w". This way you can operate on any text you can move over. ============================================================================== *04.2* Changing text Another operator is "c", change. It acts just like the "d" operator, except it leaves you in Insert mode. For example, "cw" changes a word. Or more specifically, it deletes a word and then puts you in Insert mode. To err is human ~ -------> c2wbe<Esc> To be human ~ This "c2wbe<Esc>" contains these bits: c the change operator 2w move two words (they are deleted and Insert mode started) be insert this text <Esc> back to Normal mode If you have paid attention, you will have noticed something strange: The space before "human" isn't deleted. There is a saying that for every problem there is an answer that is simple, clear, and wrong. That is the case with the example used here for the "cw" command. The c operator works just like the d operator, with one exception: "cw". It actually works like "ce", change to end of word. Thus the space after the word isn't included. This is an exception that dates back to the old Vi. Since many people are used to it now, the inconsistency has remained in Vim. MORE CHANGES Like "dd" deletes a whole line, "cc" changes a whole line. It keeps the existing indent (leading white space) though. Just like "d$" deletes until the end of the line, "c$" changes until the end of the line. It's like doing "d$" to delete the text and then "a" to start Insert mode and append new text. SHORTCUTS Some operator-motion commands are used so often that they have been given a single letter command: x stands for dl (delete character under the cursor) X stands for dh (delete character left of the cursor) D stands for d$ (delete to end of the line) C stands for c$ (change to end of the line) s stands for cl (change one character) S stands for cc (change a whole line) WHERE TO PUT THE COUNT The commands "3dw" and "d3w" delete three words. If you want to get really picky about things, the first command, "3dw", deletes one word three times; the command "d3w" deletes three words once. This is a difference without a distinction. You can actually put in two counts, however. For example, "3d2w" deletes two words, repeated three times, for a total of six words. REPLACING WITH ONE CHARACTER The "r" command is not an operator. It waits for you to type a character, and will replace the character under the cursor with it. You could do the same with "cl" or with the "s" command, but with "r" you don't have to press <Esc> there is somerhing grong here ~ rT rt rw There is something wrong here ~ Using a count with "r" causes that many characters to be replaced with the same character. Example: There is something wrong here ~ 5rx There is something xxxxx here ~ To replace a character with a line break use "r<Enter>". This deletes one character and inserts a line break. Using a count here only applies to the number of characters deleted: "4r<Enter>" replaces four characters with one line break. ============================================================================== *04.3* Repeating a change The "." command is one of the most simple yet powerful commands in Vim. It repeats the last change. For instance, suppose you are editing an HTML file and want to delete all the <B> tags. You position the cursor on the first < and delete the <B> with the command "df>". You then go to the < of the next </B> and kill it using the "." command. The "." command executes the last change command (in this case, "df>"). To delete another tag, position the cursor on the < and use the "." command. To <B>generate</B> a table of <B>contents ~ f< find first < ---> df> delete to > --> f< find next < ---------> . repeat df> ---> f< find next < -------------> . repeat df> --> The "." command works for all changes you make, except for the "u" (undo), CTRL-R (redo) and commands that start with a colon (:). Another example: You want to change the word "four" to "five". It appears several times in your text. You can do this quickly with this sequence of commands: /four<Enter> find the first string "four" cwfive<Esc> change the word to "five" n find the next "four" . repeat the change to "five" n find the next "four" . repeat the change etc. ============================================================================== *04.4* Visual mode To delete simple items the operator-motion changes work quite well. But often it's not so easy to decide which command will move over the text you want to change. Then you can use Visual mode. You start Visual mode by pressing "v". You move the cursor over the text you want to work on. While you do this, the text is highlighted. Finally type the operator command. For example, to delete from halfway one word to halfway another word: This is an examination sample of visual mode ~ ----------> velllld This is an example of visual mode ~ When doing this you don't really have to count how many times you have to press "l" to end up in the right position. You can immediately see what text will be deleted when you press "d". If at any time you decide you don't want to do anything with the highlighted text, just press <Esc> and Visual mode will stop without doing anything. SELECTING LINES If you want to work on whole lines, use "V" to start Visual mode. You will see right away that the whole line is highlighted, without moving around. When you move left or right nothing changes. When you move up or down the selection is extended whole lines at a time. For example, select three lines with "Vjj": +------------------------+ | text more text | >> | more text more text | | selected lines >> | text text text | | Vjj >> | text more | V | more text more | +------------------------+ SELECTING BLOCKS If you want to work on a rectangular block of characters, use CTRL-V to start Visual mode. This is very useful when working on tables. name Q1 Q2 Q3 pierre 123 455 234 john 0 90 39 steve 392 63 334 To delete the middle "Q2" column, move the cursor to the "Q" of "Q2". Press CTRL-V to start blockwise Visual mode. Now move the cursor three lines down with "3j" and to the next word with "w". You can see the first character of the last column is included. To exclude it, use "h". Now press "d" and the middle column is gone. GOING TO THE OTHER SIDE If you have selected some text in Visual mode, and discover that you need to change the other end of the selection, use the "o" command (Hint: o for other end). The cursor will go to the other end, and you can move the cursor to change where the selection starts. Pressing "o" again brings you back to the other end. When using blockwise selection, you have four corners. "o" only takes you to one of the other corners, diagonally. Use "O" to move to the other corner in the same line. Note that "o" and "O" in Visual mode work very differently from Normal mode, where they open a new line below or above the cursor. ============================================================================== *04.5* Moving text When you delete something with the "d", "x", or another command, the text is saved. You can paste it back by using the p command. (The Vim name for this is put). Take a look at how this works. First you will delete an entire line, by putting the cursor on the line you want to delete and typing "dd". Now you move the cursor to where you want to put the line and use the "p" (put) command. The line is inserted on the line below the cursor. a line a line a line line 2 dd line 3 p line 3 line 3 line 2 Because you deleted an entire line, the "p" command placed the text line below the cursor. If you delete part of a line (a word, for instance), the "p" command puts it just after the cursor. Some more boring try text to out commands. ~ ----> dw Some more boring text to out commands. ~ -------> welp Some more boring text to try out commands. ~ MORE ON PUTTING The "P" command puts text like "p", but before the cursor. When you deleted a whole line with "dd", "P" will put it back above the cursor. When you deleted a word with "dw", "P" will put it back just before the cursor. You can repeat putting as many times as you like. The same text will be used. You can use a count with "p" and "P". The text will be repeated as many times as specified with the count. Thus "dd" and then "3p" puts three copies of the same deleted line. SWAPPING TWO CHARACTERS Frequently when you are typing, your fingers get ahead of your brain (or the other way around?). The result is a typo such as "teh" for "the". Vim makes it easy to correct such problems. Just put the cursor on the e of "teh" and execute the command "xp". This works as follows: "x" deletes the character e and places it in a register. "p" puts the text after the cursor, which is after the h. teh th the ~ x p ============================================================================== *04.6* Copying text To copy text from one place to another, you could delete it, use "u" to undo the deletion and then "p" to put it somewhere else. There is an easier way: yanking. The "y" operator copies text into a register. Then a "p" command can be used to put it. Yanking is just a Vim name for copying. The "c" letter was already used for the change operator, and "y" was still available. Calling this operator "yank" made it easier to remember to use the "y" key. Since "y" is an operator, you use "yw" to yank a word. A count is possible as usual. To yank two words use "y2w". Example: let sqr = LongVariable * ~ --------------> y2w let sqr = LongVariable * ~ p let sqr = LongVariable * LongVariable ~ Notice that "yw" includes the white space after a word. If you don't want this, use "ye". The "yy" command yanks a whole line, just like "dd" deletes a whole line. Unexpectedly, while "D" deletes from the cursor to the end of the line, "Y" works like "yy", it yanks the whole line. Watch out for this inconsistency! Use "y$" to yank to the end of the line. a text line yy a text line a text line line 2 line 2 p line 2 last line last line a text line last line ============================================================================== *04.7* Using the clipboard If you are using the GUI version of Vim (gvim), you can find the "Copy" item in the "Edit" menu. First select some text with Visual mode, then use the Edit/Copy menu. The selected text is now copied to the clipboard. You can paste the text in other programs. In Vim itself too. If you have copied text to the clipboard in another application, you can paste it in Vim with the Edit/Paste menu. This works in Normal mode and Insert mode. In Visual mode the selected text is replaced with the pasted text. The "Cut" menu item deletes the text before it's put on the clipboard. The "Copy", "Cut" and "Paste" items are also available in the popup menu (only when there is a popup menu, of course). If your Vim has a toolbar, you can also find these items there. If you are not using the GUI, or if you don't like using a menu, you have to use another way. You use the normal "y" (yank) and "p" (put) commands, but prepend "* (double-quote star) before it. To copy a line to the clipboard: > "*yy To put text from the clipboard back into the text: > "*p This only works on versions of Vim that include clipboard support. More about the clipboard in section |09.3| and here: |clipboard|. ============================================================================== *04.8* Text objects If the cursor is in the middle of a word and you want to delete that word, you need to move back to its start before you can do "dw". There is a simpler way to do this: "daw". this is some example text. ~ daw this is some text. ~ The "d" of "daw" is the delete operator. "aw" is a text object. Hint: "aw" stands for "A Word". Thus "daw" is "Delete A Word". To be precise, the white space after the word is also deleted (the white space before the word at the end of the line). Using text objects is the third way to make changes in Vim. We already had operator-motion and Visual mode. Now we add operator-text object. It is very similar to operator-motion, but instead of operating on the text between the cursor position before and after a movement command, the text object is used as a whole. It doesn't matter where in the object the cursor was. To change a whole sentence use "cis". Take this text: Hello there. This ~ is an example. Just ~ some text. ~ Move to the start of the second line, on "is an". Now use "cis": Hello there. Just ~ some text. ~ The cursor is in between the blanks in the first line. Now you type the new sentence "Another line.": Hello there. Another line. Just ~ some text. ~ "cis" consists of the "c" (change) operator and the "is" text object. This stands for "Inner Sentence". There is also the "as" (a sentence) object. The difference is that "as" includes the white space after the sentence and "is" doesn't. If you would delete a sentence, you want to delete the white space at the same time, thus use "das". If you want to type new text the white space can remain, thus you use "cis". You can also use text objects in Visual mode. It will include the text object in the Visual selection. Visual mode continues, thus you can do this several times. For example, start Visual mode with "v" and select a sentence with "as". Now you can repeat "as" to include more sentences. Finally you use an operator to do something with the selected sentences. You can find a long list of text objects here: |text-objects|. ============================================================================== *04.9* Replace mode The "R" command causes Vim to enter replace mode. In this mode, each character you type replaces the one under the cursor. This continues until you type <Esc>. In this example you start Replace mode on the first "t" of "text": This is text. ~ Rinteresting.<Esc> This is interesting. ~ You may have noticed that this command replaced 5 characters in the line with twelve others. The "R" command automatically extends the line if it runs out of characters to replace. It will not continue on the next line. You can switch between Insert mode and Replace mode with the <Insert> key. When you use <BS> (backspace) to make correction, you will notice that the old text is put back. Thus it works like an undo command for the last typed character. ============================================================================== *04.10* Conclusion The operators, movement commands and text objects give you the possibility to make lots of combinations. Now that you know how it works, you can use N operators with M movement commands to make N * M commands! You can find a list of operators here: |operator| For example, there are many other ways to delete pieces of text. Here are a few often used ones: x delete character under the cursor (short for "dl") X delete character before the cursor (short for "dh") D delete from cursor to end of line (short for "d$") dw delete from cursor to next start of word db delete from cursor to previous start of word diw delete word under the cursor (excluding white space) daw delete word under the cursor (including white space) dG delete until the end of the file dgg delete until the start of the file If you use "c" instead of "d" they become change commands. And with "y" you yank the text. And so forth. There are a few often used commands to make changes that didn't fit somewhere else: ~ change case of the character under the cursor, and move the cursor to the next character. This is not an operator (unless 'tildeop' is set), thus you can't use it with a motion command. It does work in Visual mode and changes case for all the selected text then. I Start Insert mode after moving the cursor to the first non-blank in the line. A Start Insert mode after moving the cursor to the end of the line. ============================================================================== Next chapter: |usr_05.txt| Set your settings Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl:
Save
cmd:
run