positions where there isn't any text. This is
called "virtual space". Editing a table is a lot easier this way.
Move the cursor by searching for the header of the last column: >
/test 3
Now press "j" and you are right where you can enter the value for "input A".
Typing "0.693" results in:
nice table test 1 test 2 test 3 ~
input A 0.534 0.693 ~
input B 0.913 ~
Vim has automatically filled the gap in front of the new text for you. Now,
to enter the next field in this column use "Bj". "B" moves back to the start
of a white space separated word. Then "j" moves to the place where the next
field can be entered.
Note:
You can move the cursor anywhere in the display, also beyond the end
of a line. But Vim will not insert spaces there, until you insert a
character in that position.
COPYING A COLUMN
You want to add a column, which should be a copy of the third column and
placed before the "test 1" column. Do this in seven steps:
1. Move the cursor to the left upper corner of this column, e.g., with
"/test 3".
2. Press CTRL-V to start blockwise Visual mode.
3. Move the cursor down two lines with "2j". You are now in "virtual space":
the "input B" line of the "test 3" column.
4. Move the cursor right, to include the whole column in the selection, plus
the space that you want between the columns. "9l" should do it.
5. Yank the selected rectangle with "y".
6. Move the cursor to "test 1", where the new column must be placed.
7. Press "P".
The result should be:
nice table test 3 test 1 test 2 test 3 ~
input A 0.693 0.534 0.693 ~
input B 0.913 ~
Notice that the whole "test 1" column was shifted right, also the line where
the "test 3" column didn't have text.
Go back to non-virtual cursor movements with: >
:set virtualedit=
VIRTUAL REPLACE MODE
The disadvantage of using 'virtualedit' is that it "feels" different. You
can't recognize tabs or spaces beyond the end of line when moving the cursor
around. Another method can be used: Virtual Replace mode.
Suppose you have a line in a table that contains both tabs and other
characters. Use "rx" on the first tab:
inp 0.693 0.534 0.693 ~
|
rx |
V
inpx0.693 0.534 0.693 ~
The layout is messed up. To avoid that, use the "gr" command:
inp 0.693 0.534 0.693 ~
|
grx |
V
inpx 0.693 0.534 0.693 ~
What happens is that the "gr" command makes sure the new character takes the
right amount of screen space. Extra spaces or tabs are inserted to fill the
gap. Thus what actually happens is that a tab is replaced by "x" and then
blanks added to make the text after it keep its place. In this case a
tab is inserted.
When you need to replace more than one character, you use the "R" command
to go to Replace mode (see |04.9|). This messes up the layout and replaces
the wrong characters:
inp 0 0.534 0.693 ~
|
R0.786 |
V
inp 0.78634 0.693 ~
The "gR" command uses Virtual Replace mode. This preserves the layout:
inp 0 0.534 0.693 ~
|
gR0.786 |
V
inp 0.786 0.534 0.693 ~
==============================================================================
Next chapter: |usr_26.txt| Repeating
Copyright: see |manual-copyright| vim:tw=78:ts=8:noet:ft=help:norl: