Chinaunix首页 | 论坛 | 博客
  • 博客访问: 438731
  • 博文数量: 132
  • 博客积分: 2511
  • 博客等级: 大尉
  • 技术积分: 1385
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-11 15:10
文章分类

全部博文(132)

文章存档

2012年(18)

2011年(35)

2010年(60)

2009年(19)

分类: LINUX

2011-02-16 11:46:34

原文地址

寄存器操作

Vim可以将不同字段剪切或复制到不同寄存器中,您可以从不同寄存器中取出内容后粘贴

"<寄存器名称>   按下“"”键和另一个字符键,便可以定义一个寄存器。例如:

"a "1

定义寄存器后直接进行操作

"ayy    将当前行复制到寄存器 a 中
"ap 将寄存器 a 中的内容粘贴到光标之后
  • 通常情况下,寄存器 + ( " + Shift+= )对应X下的剪贴板。您在其它程序中复制的内容,可以使用 "+p 粘贴到Vim中;
    您在Vim中,可以使用 "+y 将内容复制到剪贴板,再粘贴到其它程序中
  • 没有指定寄存器时,Vim使用“无名寄存器”存储内容
使用撤销分支功能

可以使用 :undolist 命令查看缓冲区存在的撤销分支列表。而通过 :undo <> 命令则能够移到撤销的某个分支。



强烈建议大家先看看 doc/change.txt 里关于寄存器部分的内容, 我只是简单提及一下,英文不太好的朋友请找 vim 的中文文档。 我要介绍的超强武器是 ctrl-r,在 insert mode 和 command mode 均可使用,功能就是插入寄存器相关内容。 大家可以试试先 copy 或 delete 一些文本,然后在 normal mode 或 command mode 输入 ctrl-r ",看到了吗, 你粘贴了寄存器"的内容。
寄存器的主要有以下几种:

a. The unnamed register ""

"d", "c", "s", "x" 和 "y" 等涉及删除或拷贝的命令都会将内容存放于此(有例外)。

b. 10 numbered registers "0 to "9

0 为最近拷贝的内容,1-9 为最近删除的内容。

指定 named register 时不会存放于此。

c. The small delete register "-

删除不多于一行的内容会存在于此。

d. 26 named registers "a to "z or "A to "Z

小写与大写的区别是,小写是覆盖方式,大写是添加方式。

e. four read-only registers ":, "., "% and "#

". 存放上次插入的文本

有什么用?呵,例如,你输入了一段文本,在另一个地方也要有相同的内容,你输完后,一般要选择并复制一下吧?

而用这个,直接移到需要插入的地方,i. 即可。

"% 是当前编辑文件全名

呵,vim 中,% 就是代表当前编辑文件名的变量,好记吧?

不过,一般直接用 % 就行,例如":!cat %",vim 会自动扩展。

"# 是alternate file 名称 (这个我不知道)

": 上次执行的命令

记起来比较容易,冒号就是命令行提示符嘛。这个有些什么用呢?

在测试配置文件时十分有用,先在命令行输入命令,调试好后,

在 insert mode 里按Ctrl-R : 就可将该命令插到文件中。

f. the expression register "=

呵,表达式寄存器,可以输入一个表达式,并插入结果。

g. The selection and drop registers "*, "+ and "~

跟 gui 即 X/Windows 剪贴板有关的变量。

在 X 中,鼠标中键与系统剪贴板不一样,至于区别,大家自己试验一下,这里给个提示,在命令行下输入 reg 可以列出所有

寄存器的内容。

h. The black hole register "_

黑洞

i. Last search pattern register "/

上次搜索的内容。例如,我要搜索一个单词 linuxforum,但我比较懒,先输入 /linux,发现出现很多个 linux,多次按 n 无果,

难道要重新输入 /linuxforum ? 不用,只需要 //forum 即可。呵,聪明的你一定想到了,用命令行历史也可以调来,按 ctrl-p 或 ctrl-n

即可上下翻阅。这样也可以嘛,也比较快捷,但要查找 forumlinux 呢?

用 ctrl-r 的话只需 /forum/ 。

7)在使用X Window系统时,有两个特殊的寄存器是需要注意一下的:”"*”访问的寄存器是X的主选择区域(primary selection),”"+”访问的寄存器是X的剪贴板(clipboard)。

=====================================

存入寄存器:

1)在visual模式下,输入:”寄存器y”

2)录制的时候:输入:“q{regsiter}”,使用:在normal模式下,按“@{regsiter}”
================================

调用寄存器:

在插入模式里,按ctrl+r,再按寄存器名,如调用寄存器a:

ctrl+r,a就可以了。

======================================

vim常用的寄存器:

‘”‘     无名寄存器,包含最近删除或抽出的文本
‘%’     当前文件名
‘#’     轮换文件名
‘*’     剪贴板内容 (X11: 主选择)
‘+’     剪贴板内容
‘/’     最近的搜索模式
‘:’     最近的命令行
‘.’     最近插入的文本
‘-’     最近的行内 (少于一行) 删除
‘=’     表达式寄存器;你会被提示输入一个表达式 (见

==============================================

请问如何用vi 复制第5行到第10行并粘贴到第12行之后?

命令行模式下输入
:5,10 co 12

---------------------

延伸一下, 有时候不想费劲看多少行或复制大量行时,可以使用标签来替代

光标移到起始行,输入ma
光标移到结束行,输入mb
光标移到粘贴行,输入mc

然后 :'a,'b co 'c

把 co 改成 m 就成剪切了

-------------------------

Vi 提供了文本移动和复制命令,用户利用这些指令可以方便的复制字符、文字、行还有文本块。
有关的命令如下:
yy                                        将当前行复制到缓冲区
yw                                        将当前单词复制到缓冲区
y1                                        将光标处的一个字符复制到缓冲区
p                                        将缓冲区的信息粘贴到光标的后面
:行号1 ,行号2 copy 行号3                                        将行号1到行号2的内容复制到行号3所在行的后面。
:行号1 ,行号2 move 行号3                                       将行号1到行号2的文本内容移动到行号3所在行的后面。

阅读(1424) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~