1 5. 复制并移动文本                   *copy-move*
2
3 *quote*
4 "{a-zA-Z0-9.%#:-"} 指定下次的删除、抽出和放置命令使用的寄存器
5 {a-zA-Z0-9.%#:-"} (大写字符使得删除和抽出命令附加到该
6 寄存器) ({.%#:} 只能用于放置命令)。
7
8 *:reg* *:registers*
9 :reg[isters] 显示所有编号和命名寄存器的内容。但不列出用于 |:redir|
10 目的地的寄存器。
11 {Vi 无此功能}
12
13 :reg[isters] {arg} 显示 {arg} 里提到的编号和命名寄存器的内容。例如: >
14 :dis 1a
15 < 显示寄存器 '1' 和 'a'。{arg} 里可以用空格。
16 {Vi 无此功能}
17
18 *:di* *:display*
19 :di[splay] [arg] 和 :registers 相同。{Vi 无此功能}
20
21 *y* *yank*
22 ["x]y{motion} 抽出 {motion} 跨越的文本 [到寄存器 x]。如果没有字符被
23 抽出 (例如,在第一列执行 "y0") 并且 'cpoptions' 里包括
24 'E' 标志位,这是一个错误。
25
26 *yy*
27 ["x]yy 抽出 [count] 行 [到寄存器 x] |linewise| 行动作。
28
29 *Y*
30 ["x]Y 抽出 [count] 行 [到寄存器 x] (等同于 yy,|linewise| 行
31 动作)。如果你想要 "Y" 执行从光标到行尾的操作 (更合乎逻
32 辑,但是与 Vi 不兼容),用 ":map Y y$"。
33
34 *v_y*
35 {Visual}["x]y 抽出高亮文本 [到寄存器 x] (关于 {Visual} 见
36 |Visual-mode|)。{Vi 无此功能}
37
38 *v_Y*
39 {Visual}["x]Y 抽出高亮行 [到寄存器 x] (关于 {Visual} 见
40 |Visual-mode|)。{Vi 无此功能}
41
42 *:y* *:yank* *E850*
43 :[range]y[ank] [x] 抽出 [range] 所指定的行 [到寄存器 x]。仅当包含
44 |+clipboard| 特性时才可以抽出到 "* 或 "+ 寄存器。
45
46 :[range]y[ank] [x] {count}
47 从 [range] 的最后一行开始 (缺省: 当前行
48 |cmdline-ranges|) 抽出 {count} 行 [到寄存器 x]。
49
50 *p* *put* *E353*
51 ["x]p 放置文本 [从寄存器 x] 在光标之后 [count] 次。{Vi: 没有
52 计数}
53
54 *P*
55 ["x]P 放置文本 [从寄存器 x] 在光标之前 [count] 次。{Vi: 没有
56 计数}
57
58 *<MiddleMouse>*
59 ["x]<MiddleMouse> 从一个寄存器放置文本在光标之前 [count] 次。除非另外指
60 定,否则用 "* 寄存器。
61 光标停留在新文本的尾部。
62 只有在 'mouse' 包含 'n' 或者 'a' 时鼠标才会工作。
63 {Vi 无此功能}
64 如果你有滚轮鼠标而且经常不小心粘贴了文本,你可以使用以
65 下映射来关闭鼠标中键粘贴的功能: >
66 :map <MiddleMouse> <Nop>
67 :imap <MiddleMouse> <Nop>
68 < 你也许还想要关闭多键击的功能。参见 |double-click|。
69
70 *gp*
71 ["x]gp 如同 "p",但光标停留在新文本之后。{Vi 无此功能}
72
73 *gP*
74 ["x]gP 如同 "P",但光标停留在新文本之后。{Vi 无此功能}
75
76 *:pu* *:put*
77 :[line]pu[t] [x] 放置文本 [从寄存器 x] 在行号 [line] (缺省为当前行) 之
78 后。它总是 |linewise| 行动作,因而这个命令可以用来把抽
79 出的块放置在新行上。
80 如果未指定寄存器,则取决于 'cb' 选项: 如果 'cb' 包含
81 "unnamedplus",则从 + 寄存器 |quoteplus| 取出,否则如
82 果 'cb' 包含 "unnamed",则从 * 寄存器 |quotestar| 取
83 出,否则,从无名寄存器 |quote_quote| 取出。
84 寄存器也可以是 '=',跟随一个可选的表达式。表达式继续到
85 该命令结束为止。你需要在 '|' 和 '"' 字符前加上反斜杠不
86 让它们终止你的命令行。例如: >
87 :put ='path' . \",/test\"
88 < 如果 '=' 之后没有表达式,Vim 使用前一个表达式。用
89 ":dis =" 你可以看到它。
90
91 :[line]pu[t]! [x] 放置文本 [从寄存器 x] 在行号 [line] (缺省为当前行) 之
92 前。
93
94 ["x]]p 或 *]p* *]<MiddleMouse>*
95 ["x]]<MiddleMouse> 类似 "p",但调整当前行的缩进。只有在 'mouse' 包含 'n'
96 或者 'a' 时鼠标才会工作。{Vi 无此功能}
97
98 ["x][P 或 *[P*
99 ["x]]P 或 *]P*
100 ["x][p 或 *[p* *[<MiddleMouse>*
101 ["x][<MiddleMouse> 类似 "P",但调整当前行的缩进。只有在 'mouse' 包含 'n'
102 或者 'a' 时鼠标才会工作。{Vi 无此功能}
103
104 你可以用这些命令把文本从一个地方复制到另一个地方。首先,把文本用抽出、删除或者
105 修改命令取到一个寄存器里,然后用放置命令把寄存器的内容插入。你可以用这些命令把
106 文本从一个文件移动到另一个文件,因为 Vim 在切换缓冲区时保留所有的寄存器
107 (CTRL-^ 命令可用来快捷地切换文件)。
108
109 *linewise-register* *characterwise-register*
110 除了 :put 以外,你可以用 "." 重复放置命令,你也可以撤销它们。如果保存到寄存器
111 文本的命令是 |linewise| 行动作,Vim 把文本插入在光标所在的行之下 ("p") 或之上
112 ("P")。不然,Vim 把文本插入在光标的之后 ("p") 或之前 ("P")。":put" 命令使得
113 Vim 总是把文本放在下一行。你可以用命令序列 "xp" 来交换两个字母。你可以用 "ddp"
114 命令序列来交换两行。你还可以用 "deep" 命令交换两个单词 (光标在第一个单词之前的
115 空白上)。你更可以在放置命令之后用 "']" 或者 "`]" 命令把光标移动到插入文本之
116 后,或者用 "'[" 或 "`[" 把光标移动到文本的开始处。
117
118 *put-Visual-mode* *v_p* *v_P*
119 在可视模式下使用如 |p| 或者 |P| 之类的放置命令时,Vim 试图把选择的文本替换成寄
120 存器的内容。是否工作如你所愿决定于选择的类型和寄存器里文本的类型。对于列块选择
121 而言,它也决定于列块的大小,和头尾是否在已存在的字符上。(实现细节: 实际上,它
122 先把寄存器的内容放到选择区之后,再删除选择区的内容。)
123 前次选择的文本被放在无名寄存器中。如果希望把相同的文本重复放入可视选择区多次,
124 请选用其它寄存器。例如,先抽出要复制的文本,再可视化选择要替换的文本,然后使用
125 "0p。重复任意多次均可,而每次无名寄存器都会被改变。
126
127 *blockwise-register*
128 如果你使用面向列块的可视模式命令把文本存到寄存器里,文本列块会被插入在当前和其
129 后的行的当前列之前 ("P") 或之后 ("p")。Vim 使得整个文本列块从同一列开始。这
130 样,插入的文本看上去和抽出或删除时看起来一样。为了使之可能,Vim 可能需要把一些
131 <Tab> 字符替换成空格。不过,如果列块的宽度不是 <Tab> 宽度的整数倍并且插入列块
132 之后文本里包含 <Tab> 的时候,那些文本可能就不会那么整齐。
133
134 注意 在一个面向字符的抽出命令之后,Vim 把光标停留在最接近缓冲区开头的第一个被
135 抽出的字符之上。这意味着 "yl" 不会移动光标,但是 "yh" 把光标向左移一格。
136 逻辑: 在 Vi 里 "y" 命令跟一个反向的动作有时不会把光标移动到第一个被
137 抽出的字符之上,因为屏幕没有刷新。Vim 符合 Posix 的规范,总是
138 把光标移动到第一个字符之上。
139 在一个面向行的抽出命令之后,光标放在第一行上,但是列保持不变,所以不必然在第一
140 个抽出的字符上。
141
142 共有九种类型的寄存器: *registers* *E354*
143 1. 无名寄存器 ""
144 2. 10 个编号寄存器 "0 到 "9
145 3. 行内删除寄存器 "-
146 4. 26 个命名的寄存器 "a 到 "z 或者 "A 到 "Z
147 5. 四个只读寄存器 ":、".、"% 和 "#
148 6. 表达式寄存器 "=
149 7. 选择和拖放寄存器 "*、"+ 和 "~
150 8. 黑洞寄存器寄存器 "_
151 9. 最近搜索模式寄存器 "/
152
153 1. 无名寄存器 "" *quote_quote* *quotequote*
154 用 "d"、"c"、"s"、"x" 等命令删除或者用 "y" 等抽出命令复制的文本都被 Vim 用来填
155 充该寄存器,不管是否用到别的专门寄存器 (例如 "xdd)。这就好像无名寄存器是指向最
156 近使用的那个寄存器的指针一样。使用大写寄存器进行添加时,无名寄存器包含和命名寄
157 存器相同的文本。'_' 寄存器是一个特例。"_dd 不把删除的文本存在任何寄存器里。
158 不指定寄存器的放置命令 (p 或 P) 使用无名寄存器的内容。你也可以用 '"' 作为名字
159 来访问该寄存器。这意味着要输入两个连续的双引号。写入 "" 寄存器将实际写到寄存器
160 "0 上。{Vi: 寄存器内容在更换文件时丢失,没有 '"'}
161
162 2. 编号寄存器 "0 到 "9 *quote_number* *quote0* *quote1*
163 *quote2* *quote3* *quote4* *quote9*
164 Vim 把抽出和删除命令的文本保存在这些寄存器里。
165 编号寄存器 0 包含最近抽出的文本,除非该命令用 ["x] 指定了别的寄存器。
166 编号寄存器 1 包含了最近删除或者修改的文本,除非该命令用 ["x] 指定了别的寄存
167 器或者该文本小于一行 (该情况下使用行内删除寄存器)。以下移动命令在应用删除操作
168 符时例外: |%|、|(|、 |)|、|`|、|/|、|?|、|n|、|N|、|{| 和 |}|。这时,总是使用
169 寄存器 "1 (为了和 Vi 兼容)。如果文本小于一行,同时使用 "- 寄存器。
170 每来一次新的删除和修改,Vim 把前一次的寄存器 1 的内容复制到寄存器 2,2 到
171 3,依此类推。而寄存器 9 的内容就丢失了。
172 {Vi: 编号寄存器的内容在更换文件时丢失;寄存器 0 不存在}
173
174 3. 行内删除寄存器 "- *quote_-* *quote-*
175 该寄存器保存删除不到一行内容的命令的文本,除非该命令用 ["x] 指定了寄存器。
176 {Vi 无此功能}
177
178 4. 命名寄存器 "a 到 "z 或者 "A 到 "Z *quote_alpha* *quotea*
179 Vim 只有在你指定的时候才使用这些寄存器。指定为小写字母时替换原来的内容,指定为
180 大写字母时附加到原来的内容。如果 'cpoptions' 里有 '>' 标志位,在附加文本前插入
181 一个换行符。
182
183
184 5. 只读寄存器 ":、".、"% 和 "#
185 它们是 '%'、'#'、':' 和 '.'。你只能在 "p"、"P"、":put" 命令和 CTRL-R 的时候使
186 用它们。{Vi 无此功能}
187 *quote_.* *quote.* *E29*
188 ". 包含最近插入的文本 (和插入模式命令 CTRL-A 和 CTRL-@ 插入的一
189 样)。注意: 它不适用于 CTRL-R 在命令行上的操作。它的工作方式稍
190 有不同,例如,文本是被插入而不是放置的 ('textwidth' 和其它选项
191 影响插入的内容)。
192 *quote_%* *quote%*
193 "% 包含当前文件名。
194 *quote_#* *quote#*
195 "# 包含轮换文件名。
196 *quote_:* *quote:* *E30*
197 ": 包含最近执行过的命令行。例如: 用 "@:" 重复上次执行过的命令行命
198 令。只有当一个命令行中至少一个字符是键入的,该寄存器才会保存命
199 令行的内容。所以,如果命令行完全来自映射,该寄存器保持不变。
200 {仅当编译时加入 |+cmdline_hist| 特性才有效}
201
202 6. 表达式寄存器 "= *quote_=* *quote=* *@=*
203 其实并没有这么一个寄存器可以储存文本,但是这是用来在使用寄存器的命令中使用表达
204 式的一个方式。表达式寄存器是只读的,你不能把文本放置其中。在 '=' 之后,光标移
205 到命令行上,这时你可以输入任何的表达式 (见 |expression|)。所有普通的命令行编辑
206 命令都可以使用,还有一个表达式专门的历史表。当你按回车结束命令行时,Vim 计算表
207 达式的结果。如果你用 <Esc> 结束,Vim 终止表达式。如果你不输入表达式,Vim 使用
208 最近的表达式 (和 "/" 命令的处理相似)。
209
210 表达式的计算结果必须是一个字符串。数值结果会自动转化为字符串。对 "p" 和 ":put"
211 命令而言,浮点数结果也会被转化为字符串。如果结果为列表,每个成员被转成字符串,
212 然后被单独放在一行上。字典、函数引用类型的结果则产生错误信息 (通过 string() 转
213 化)。
214
215 如果 "= 寄存器被 "p" 命令使用,该字符串会在 <NL> 字符处断开。如果该字符串以
216 <NL> 结尾,则它被视为一个面向行的寄存器。{Vi 无此功能}
217
218 7. 选择和拖放寄存器 "*、"+ 和 "~
219 用这些寄存器来保存和取得 GUI 界面选择的文本。参见 |quotestar| 和 |quoteplus|。
220 如果剪贴板不存在或者不工作,使用无名寄存器。Unix 上,仅当 |+xterm_clipboard|
221 特性存在时剪贴板才可用。{Vi 无此功能}
222
223 注意 "* 和 "+ 在 X11 系统上有分别。关于该差别的解释,参见 |x11-selection|。在
224 MS-Windows 上,"* 和 "+ 的使用实际上是等价的,可见 |gui-clipboard|。
225
226 *quote_~* *quote~* *<Drop>*
227 只读的 "~ 寄存器保存最近一次拖放操作放下的文本。如果有什么东西被放到 Vim 上,
228 "~ 寄存器被填充,<Drop> 虚拟键被激活。如果你需要,你可以重定义该键的映射;缺省
229 的动作 (适用于所有模式) 是把 "~ 寄存器的内容插入到当前光标位置。{Vi 无此功能}
230 {仅当编译时加入 |+dnd| 特性才有效,当前只适用于 GTK GUI 版本}
231
232 注意: "~ 寄存器仅用于在 Vim 上拖放普通文本。拖放 URI 列表在内部处理。
233
234 8. 黑洞寄存器 "_ *quote_*
235 当写到这个寄存器时,什么都不会发生。这可以用来删除文本,而不影响任何正常的寄存
236 器。从该寄存器读时,什么都不会返回。{Vi 无此功能}
237
238 9. 最近搜索模式寄存器 "/ *quote_/* *quote/*
239 含有最近搜索的模式。它被 "n" 和 'hlsearch' 使用。可以用 `:let` 来修改。你可以
240 改变它使得 'hlsearch' 不经过实际的搜索直接高亮某些匹配。你不能把抽出或者删除命
241 令的内容放到该寄存器上。搜索方向则可从 |v:searchforward| 得到。
242 注意 从函数返回时该值被复原 |function-search-undo|。
243 {Vi 无此功能}
244
245 *@/*
246 你可以用 `:let` 命令写到一个寄存器 |:let-@|。例如: >
247 :let @/ = "the"
248
249 如果你用放置命令而不指定寄存器,Vim 使用上次填充的寄存器 (这也是无名寄存器的内
250 容)。如果你弄糊涂了,用 `:dis` 命令看看 Vim 会放置什么内容 (该命令显示所有的有
251 名和无名的寄存器;无名寄存器被标为 '"')。
252
253 下面三个命令总是针对整行工作。
254
255 :[range]co[py] {address} *:co* *:copy*
256 把 [range] 指定的行复制到 {address} 给出的行之下。
257
258 *:t*
259 :t 和 :copy 等价。
260
261 :[range]m[ove] {address} *:m* *:mo* *:move* *E134*
262 把 [range] 指定的行移动到 {address} 给出的行之下。
263

VIM使用系列: 复制并移动文本的更多相关文章

  1. Vim 下的复制/粘贴/剪切/撤销

    一 了解 vim 有 12 个粘贴板,分别是 0.1.2.....9.a.“.+:用 :reg 命令可以查看各个粘贴板里的内容.在 vim 中简单用 y 命令只是复制到 "(双引号)粘贴板里 ...

  2. iOS系列 基础篇 08 文本与键盘

    iOS系列 基础篇 08 文本与键盘 目录: 1. 扯扯犊子 2. TextField 3. TextView 4. 键盘的打开和关闭 5. 打开/关闭键盘的通知 6. 键盘的种类 7. 最后再扯两句 ...

  3. 【分享】JS如何为复制的Web文本添加其他信息

    看到了两篇关于这题的讨论,简单的记录一下!o(* ̄▽ ̄*)ブ 1.  stackoverflow , How to add extra info to copied web text 2.  黑客派, ...

  4. 学习excel的使用技巧复制一列文本成新列去重

    学习excel的使用技巧复制一列文本成新列去重 其实比较简单的技巧  知道了就会  不知道就比较麻烦 直接复制到一列 找到 数据选项 删除重复项

  5. vim 介绍安装 复制 剪切 粘贴

    1. vim 产生:对于linux 文件的编辑,最初是vi,然后对于其功能的扩展,就产生了vim vim 的安装 yum install vim 2.光标的移动 用得最多的就是方向键上的 上下左右,和 ...

  6. vim选中字符复制/剪切/粘贴

    转载自:http://www.cnblogs.com/luosongchao/p/3193153.html 问题描述: vim 中选中指定字符,进行复制/剪切/粘贴 选择:1.普通模式下--v+hjk ...

  7. vim寄存器与复制粘贴的实现

    对于大多数在Ubuntu下使用vim作为常用编辑器的同学来讲,他们遇到的第一个比较大的麻烦来自于vim与外部应用的复制粘贴. 当然,愿意选择ubuntu以及vim的同学肯定是google好手.不幸的是 ...

  8. 07.LoT.UI 前后台通用框架分解系列之——轻巧的文本编辑器

    LoT.UI汇总:http://www.cnblogs.com/dunitian/p/4822808.html#lotui 上次说的是强大的百度编辑器 http://www.cnblogs.com/d ...

  9. 【 D3.js 高级系列 — 1.0 】 文本的换行

    在 SVG 中添加文本是使用 text 元素.但是,这个元素不能够自动换行,超出的部分就显示不出来了,怎么办呢? 高级系列开篇前言 从今天开始写高级系列教程.还是那句话,由于本人实力有限,不一定保证入 ...

随机推荐

  1. TouTiao开源项目 分析笔记20 问答详情

    1.效果预览 1.1.效果预览,从问答列表开始 前面实现了从列表到内容. 这里主要讲解从内容到详情. 点击每一个回答内容,进入回答详情页面. 1.2.触发的点击事件 在WendaContentView ...

  2. IAR配置ICF到项目的实现方法

    以STM8为例: 将项目使用的MCU型号的icf文件拷贝到项目里面,icf一般放在 C:\Program Files\IAR Systems\Embedded Workbench 6.5\stm8\c ...

  3. HDU 4405 Aeroplane chess(期望dp)

    Aeroplane chess Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  4. P2344 奶牛抗议

    P2344 奶牛抗议 题目背景 Generic Cow Protests, 2011 Feb 题目描述 约翰家的N 头奶牛正在排队游行抗议.一些奶牛情绪激动,约翰测算下来,排在第i 位的奶牛的理智度为 ...

  5. 跨域携带cookie

    $.ajax({ type: "GET", url: "https://upload.cnblogs.com/imageuploader/upload?host=www. ...

  6. Start with PJSIP on windows

    To overcome the project of HD video conferencing systerm,I should learn to use the PJSIP. I should m ...

  7. ASP NET Core 部署 IIS 和发布

    1. 微软官网原文链接: https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/iis/index?view=aspnetcore- ...

  8. php session访问限制

    登录 <?php // 启动会话 session_start(); // 注册登陆成功的 admin 变量,并赋值 true $_SESSION["admin"] = tru ...

  9. 软工实践Alpha冲刺(4/10)

    队名:起床一起肝活队 组长博客:博客链接 作业博客:班级博客本次作业的链接 组员情况 组员1(队长):白晨曦 过去两天完成了哪些任务 描述: 很胖,刚学,照猫画虎做了登录与注册界面. 展示GitHub ...

  10. 微信公众号开发java框架:wx4j(入门篇)

    导航 入门 http://www.cnblogs.com/2333/p/6617819.html WxServlet介绍 MaterialUtils 素材工具类使用说明 http://www.cnbl ...