Vim 笔记 chapter2:复制粘贴、寄存器

复制与粘贴

Vim 的剪切、复制、粘贴有别于其他编辑器。

命令 Others Vim
复制 copy yank
剪切 cut delete
粘贴 paste put

Vim 的 put 命令与粘贴命令完全相同。
Vim 的 yank 命令等同于复制操作。至于为什么用 yank 而不是 copy ,这就是历史遗留原因了。 当时的 c 命令被用于 修改(change)操作了,所以被迫换成了 yank 这个名字。
Vim 的 delete 也与标准的剪切操作一致。该命令会把指定文本复制到寄存器后再从文档中删掉。

用无名寄存器实现删除、复制与粘贴操作

通常情况下,复制、粘贴和操作指的是操纵系统的剪贴板。在 Vim 中,操作的是寄存器。

调换字符

手速太快有时候会习惯性的输错某个单词,常见的比如两个字母的顺序输错了。

 Practica lvim

上面把 “l” 和空格的顺序输入反了,现在我的光标在最后一个字母 "m" 上, 按下 F<space> 在本行文本中找到光标之前的空格,按下 x 把光标下的字符剪切下来放到无名寄存器。最后按下 p 命令将无名寄存器的内容粘贴到光标后面。
最后把两个命令组合到一起,即 xp ,可以 “调换光标后的两个字符”,现在我的光标在最后一个字母 "m" 上, 按下 F<space> 在前文中找到空格,按下 x 把光标下的字符剪切下来放到无名寄存器。最后按下 p 命令将无名寄存器的内容粘贴到光标后面。

 Practical vim

调换文本行

类似的,也可以方便的调换两行文本的顺序。这次,用 dd 命令剪切当前行,将内容放到无名寄存器中,再按下 p 会把内容粘贴到当前行的下一行。
把命令连接起来即 ddp ,可以用来“调换当前行和它的下一行”。

// before
 我是第二行
 我是第一行
 我是第三行
// after
 我是第一行
 我是第二行
 我是第三行

创建文本行的副本

类似调换文本行,创建文本行的副本只需要将剪切行的命令 dd 换成复制一行文本的命令 yy 即可,连起来是 yyp,可以用来“复制当前行并在下一行粘贴文本”。

// before
 我是第一行
 我是第二行
// after
 我是第一行
 我是第一行
 我是第二行

深入理解 Vim 寄存器

引用一个寄存器

Vim 的删除、复制和粘贴都会用到众多寄存器中的一个 。 可以通过给命令加 "{register} 前缀的方式指定要用的寄存器。若不指明,Vim 将使用无名寄存器。

  • 举例
    如果想把当前单词复制到寄存器 a 中, 可以执行 "ayiw
    把当前整行文本剪切到寄存器 b 中, 可以执行 "bdd

"ap 可以粘贴来及寄存器 a 的单词, "bp 可以粘贴来及寄存器 b 的一行文本,两者互不干扰。

无名寄存器("")

倘若我们没有指定使用寄存器, Vim 将缺省使用无名寄存器,它可以双引号表示。

  • 举例
    例如 ""p 这个命令,他完全等同于 p 命令。

复制专用寄存器 ("0)

当使用 y{motion} 命令时,要复制的文本不仅会拷贝到无名寄存器中,同时也拷贝到了复制专用寄存器中。后者可以用数字 “0” 加以引用。

  • 举例
    例如有以下代码
 var myCat1 = new cat();
 var myCat2 = new dog();

现在想要把 "dog" 换为 "cat"。若是之前不知道寄存器这个概念的话,场景会是这样:

  1. 光标到 “cat” 上面,按下 yiw 复制这个单词
  2. 把光标移动到 “dog” 上面,按下 diw 删除这个单词
  3. 按下 p 粘贴
  4. 变成傻逼:本来想粘贴 “cat” 的,结果粘贴的内容却是 “dog” ,第一步复制的 “cat” 不见了

发生这个问题原因是一直使用的是无名寄存器,当删除单词时,删除操作会把单词放到无名寄存器中,把之前复制的内容给“挤”走了。

现在有了复制专用寄存器就不虚了。在最后粘贴的时候按下 "0p 而不是 p 就完美的解决了这个问题。

 var myCat1 = new cat();
 var myCat2 = new cat();

有名寄存器("a - "z)

Vim 提供了一组以 26 个英文字母命名的寄存器,这意味着我们可以复制、剪切或者粘贴多达 26 段文本。
上面改名字的问题使用有名寄存器也能很轻松地解决,这里就不再赘述了。

  • 用小写字母引用有名寄存器,会覆盖该寄存器的原有内容。
  • 用大写字母引用有名寄存器,会将新内容添加到原有内容之后。

黑洞寄存器 ("_)

想要删除一段文本而不想保留副本时,黑洞寄存器就很管用了。
使用 "_diw 删除一个单词时, 不会将之前无名寄存器的内容覆盖。

系统剪切板("+)与选择专用寄存器("*)

到目前为止,讨论的寄存器都是 Vim 内部的,如果想从 Vim 复制内容到外部,则必须使用系统剪切板。

Vim 的加号寄存器与系统剪切板等效,可用 +号引用。
比如现在从别的程序中复制了一段文本,在 Vim 中,就可以通过 "+p 命令将其粘贴到 Vim 内部。
如果在 Vim 的复制、粘贴和剪切命令之前加上 "+ ,相应的文本会捕捉至系统剪切板。

在 Windows 和 Mac OS 中, "+ 寄存器 和 "* 寄存器 可以混用。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容

  • 最近集中读了几本关于Vim的书,�以《Practical Vim》最为详尽,特重新温习并总结成篇,一来作为复习和练...
    南瓜不胡闹阅读 5,737评论 1 28
  • 命令历史 以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令。 启动vim 在命令...
    im蚂蚁阅读 30,720评论 3 48
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,118评论 9 467
  • 在耳朵旁边听见有朋友吹嘘着,我在这个学校有多少朋友,在那个学校有多少兄弟,具体是否浮夸,我无从得知。 但是我觉得奇...
    沈诺阅读 1,091评论 0 2
  • 前提:目前在遥远的非洲,公司有食堂,发放生活用品,办公室有网络,女生是国宝 近似于被软禁是什么感觉?不允许出门闲...
    KatherineMeng阅读 257评论 -1 2