您的位置:首页 > 其它

寄存器操作

2016-02-01 17:29 211 查看
寄存器操作

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<ctrl-r>. 即可。 "% 是当前编辑文件全名 呵,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 ? 不用,只需要 /<ctrl-r>/forum 即可。呵,聪明的你一定想到了,用命令行历史也可以调来,按 ctrl-p 或 ctrl-n 即可上下翻阅。这样也可以嘛,也比较快捷,但要查找 forumlinux 呢? 用 ctrl-r 的话只需 /forum<ctrl-r>/ 。

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所在行的后面。

寄存器操作


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<ctrl-r>. 即可。

"% 是当前编辑文件全名

呵,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 ? 不用,只需要 /<ctrl-r>/forum 即可。呵,聪明的你一定想到了,用命令行历史也可以调来,按 ctrl-p 或 ctrl-n

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

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

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所在行的后面。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: