Vim Tips Wiki
Register
No edit summary
(Change <tt> to <code>, perhaps also minor tweak.)
 
(9 intermediate revisions by 5 users not shown)
Line 1: Line 1:
  +
{{TipNew
This tip was tested under Debian testing with Vim 7.1 (console version)
 
  +
|id=1562
  +
|previous=1561
  +
|next=1563
  +
|created=2008
  +
|complexity=basic
  +
|author=[[User:Benshi|Benshi]]
  +
|version=7.0
  +
|subpage=/200804
  +
|category1=Registers
  +
|category2=
  +
}}
  +
This tip explains how to cycle between several registers, while accessing their content through the standard "unnamed" register (<code>@"</code>).
   
To easily swap between different registers in Vim it is convenient to map a sequence to move all in a "circled list". See the following mapping to understand it:
+
To easily swap between different registers it is convenient to map a key to move the registers in a "circular list". The following mapping illustrates the idea:
  +
<pre>
<pre>map s :let @x=@" \| let @"=@a \| let @a=@b \| let @b=@x <Return></pre>
+
:nnoremap <Leader>s :let @x=@" \| let @"=@a \| let @a=@b \| let @b=@x<CR>
  +
</pre>
   
  +
Now you can cycle between the registers <code>""</code>, <code>"a</code>, <code>"b</code> by pressing <code>\s</code> (assuming the default backslash for the leader key).
  +
*<code>:let @a=@b</code> copies register <code>"b</code> to register <code>"a</code>.
  +
*<code>|</code> separates Ex commands; <code>\</code> escapes the pipe for the map command.
   
Now you can circle between the registers "", "a, "b with s.
+
This is also useful if you want to copy between the xclipboard and the unnamed standard register of Vim:
  +
<pre>
 
:nnoremap <Leader>s :let @a=@" \| let @"=@+ \| let @+=@a<CR>
  +
</pre>
   
  +
Another usage can be found in cycling through the cut/copy history, i.e. cycling through the numbered registers.
('':let @a=@b'' copies register "b to register "a; | concaternates ex commands - \ is used to escape the pipe in your vimrc)
 
   
 
To see what it's changing, you could modify the command like this:
  +
<pre>
 
:nnoremap <Leader>s :let @x=@" \| let @"=@a \| let @a=@b \| let @b=@x \| reg "ab<CR>
  +
</pre>
   
  +
==References==
This is also usefull if you want to copy between xclipboard and the unnamed standard register of Vim:
 
  +
*{{help|:let}}
<pre>map s :let @a=@" \| let @"=@+ \| let @+=@a <Return></pre>
 
  +
*{{help|:reg}}
 
*{{help|registers}}
  +
*{{help|map_bar}}
   
  +
==Comments==
 
To see, what ist changing, you could modify the command above like this:
 
<pre>map s :let @x=@" \| let @"=@a \| let @a=@b \| let @b=@x \| reg "ab <Return></pre>
 
 
 
For further Information see:
 
<pre>:help let
 
:help reg
 
:help registers</pre>
 
 
 
--[[User:Benshi|Benshi]] 11:18, 29 April 2008 (UTC)
 

Latest revision as of 06:33, 13 July 2012

Tip 1562 Printable Monobook Previous Next

created 2008 · complexity basic · author Benshi · version 7.0


This tip explains how to cycle between several registers, while accessing their content through the standard "unnamed" register (@").

To easily swap between different registers it is convenient to map a key to move the registers in a "circular list". The following mapping illustrates the idea:

:nnoremap <Leader>s :let @x=@" \| let @"=@a \| let @a=@b \| let @b=@x<CR>

Now you can cycle between the registers "", "a, "b by pressing \s (assuming the default backslash for the leader key).

  • :let @a=@b copies register "b to register "a.
  • | separates Ex commands; \ escapes the pipe for the map command.

This is also useful if you want to copy between the xclipboard and the unnamed standard register of Vim:

:nnoremap <Leader>s :let @a=@" \| let @"=@+ \| let @+=@a<CR>

Another usage can be found in cycling through the cut/copy history, i.e. cycling through the numbered registers.

To see what it's changing, you could modify the command like this:

:nnoremap <Leader>s :let @x=@" \| let @"=@a \| let @a=@b \| let @b=@x \| reg "ab<CR>

References[]

Comments[]