Home Explore Blog CI



neovim

16th chunk of `runtime/doc/change.txt`
559648ab01f8908833bc5e55a2ef84ebb273d30d3d93bef90000000100000fa1

With |p| the previously selected text is put in the unnamed register (and
possibly the selection and/or clipboard).  This is useful if you want to put
that text somewhere else.  But you cannot repeat the same change.
With |P| the unnamed register is not changed (and neither the selection or
clipboard), you can repeat the same change. But the deleted text cannot be
used.  If you do need it you can use |p| with another register.  E.g., yank
the text to copy, Visually select the text to replace and use "0p .  You can
repeat this as many times as you like, and the unnamed register will be
changed each time.
							*blockwise-put*
When a register contains text from one line (characterwise), using a
blockwise Visual selection, putting that register will paste that text
repeatedly in each of the selected lines, thus replacing the blockwise
selected region by multiple copies of the register text.  For example:
	- yank the word "TEXT" into a register with `yw`
	- select a visual block, marked with "v" in this text:
	    aaavvaaa
	    bbbvvbbb
	    cccvvccc
	- press `p`, results in:
	    aaaTEXTaaa
	    bbbTEXTbbb
	    cccTEXTccc

							*blockwise-register*
If you use a blockwise Visual mode command to get the text into the register,
the block of text will be inserted before ("P") or after ("p") the cursor
column in the current and next lines.  Vim makes the whole block of text start
in the same column.  Thus the inserted text looks the same as when it was
yanked or deleted.  Vim may replace some <Tab> characters with spaces to make
this happen.  However, if the width of the block is not a multiple of a <Tab>
width and the text after the inserted block contains <Tab>s, that text may be
misaligned.

Use |zP|/|zp| to paste a blockwise yanked register without appending trailing
spaces.

Note that after a charwise yank command, Vim leaves the cursor on the first
yanked character that is closest to the start of the buffer.  This means that
"yl" doesn't move the cursor, but "yh" moves the cursor one character left.
Rationale:	In Vi the "y" command followed by a backwards motion would
		sometimes not move the cursor to the first yanked character,
		because redisplaying was skipped.  In Vim it always moves to
		the first character, as specified by Posix.
With a linewise yank command the cursor is put in the first line, but the
column is unmodified, thus it may not be on the first yanked character.

There are ten types of registers:		*registers* *{register}* *E354*
1. The unnamed register ""
2. 10 numbered registers "0 to "9
3. The small delete register "-
4. 26 named registers "a to "z or "A to "Z
5. Three read-only registers ":, "., "%
6. Alternate buffer register "#
7. The expression register "=
8. The selection registers "* and "+
9. The black hole register "_
10. Last search pattern register "/

1. Unnamed register ""				*quote_quote* *quotequote*
Vim fills this register with text deleted with the "d", "c", "s", "x" commands
or copied with the yank "y" command, regardless of whether or not a specific
register was used (e.g.  "xdd).  This is like the unnamed register is pointing
to the last used register.  Thus when appending using an uppercase register
name, the unnamed register contains the same text as the named register.
An exception is the '_' register: "_dd does not store the deleted text in any
register.
Vim uses the contents of the unnamed register for any put command (p or P)
which does not specify a register.  Additionally you can access it with the
name '"'.  This means you have to type two double quotes.  Writing to the ""
register writes to register "0.

2. Numbered registers "0 to "9		*quote_number* *quote0* *quote1*
					*quote2* *quote3* *quote4* *quote9*
Vim fills these registers with text from yank and delete commands.
   Numbered register 0 contains the text from the most recent yank command,
unless the command specified another register with ["x].
   Numbered register 1 contains the text deleted by the most recent delete

Title: Vim Registers: Blockwise Operations and Register Types
Summary
This section continues the discussion of putting text in Visual block mode, demonstrating how text from a characterwise yank is repeated across selected lines. It then explains how blockwise yanked text is inserted, aligning the block and possibly replacing tabs with spaces. The section transitions to outlining the different types of registers in Vim, including the unnamed register, numbered registers, the small delete register, named registers, read-only registers, the alternate buffer register, the expression register, the selection registers, the black hole register, and the last search pattern register. The section details how each register is populated and used, with a focus on the behavior of the unnamed and numbered registers.