VIM 中复制和粘帖

本文转自:http://blog.youkuaiyun.com/zhengxinjian_2009/article/details/7846407

在vi编辑器有一个寄存器的概念(concept of register),正是这个概念使我们可以进行多次的剪切和粘贴操作。在一般的编辑器中我们被限制只有一个剪切板可用,而在vi中最多时可以有26个剪切板供使用,这样就会大大的提高工作的效率。

在vi中,我们可以使用d或x来删除文本,但是经过这样操作所删除掉的文本并没有被vi所丢弃,而是被保存起来。我们可以使用p命令来粘贴刚刚所删掉的内容。下面来看看他是如何工作的。首先在vi中随意的输入几行,然后移动到其中的一行,用dd命令来删掉一行。如何叫他再回来?我们可以将光标移到任意的地方,然后用p命令,就会看到刚才被删除掉的内容又回来了。

使用x命令删除的东西也可以粘贴回来。所不同的是,用dd删除一行再用p命令时是在当前光标的下一行粘贴,而删除一个单词再用p命令来粘贴时是在当前光标处粘贴。有了这样的命令,我们就可以来处理输入错误的单词了。例如我们不小心将the输入成了teh,这时可以将光标移到e的位置,用x命令删掉,再用p命令粘贴回来,这时就会发现输入正是我们想要的了。

p命令可以在一个文件中使用几次,每一次都可以将刚删除的内容重新粘贴在所希望的地方。当然这个命令也可以使用数字做前缀,明确的指出所要执行的次数。

当我们插入文本行时,可以使用p命令或是P命令。所不同的是,p命令是在当前行的下一行进行插入,插入后光标移动到新行的开头处。而P命令是在当前的上一行进行插入,插入后光标移到新行的下一行的开头处。我们还可以使用gp或gP命令。不同的是,gp命令是将光标移动到新行的下一行的开头处。而gP是在当前的上一行进行插入,插入后光标移动新行的下一行的开头处。

在vi中y命令也可以进行复制操作。yw命令可以复制一个单词。yy命令可以复制一行,然后我们可以用p命令来粘贴。我们也可以使用Y命令来复制一行,或是用数字做前缀来明确的指明复制几行,然后用p命令粘贴到我们所希望的地方。y$命令可以复制从当前光标到本行结尾的所有字符。

使用标记

在使用vi进行编辑时,我们可以对某一行进行标记。将光标移到某一行,用命令ma来进行标记。在这里m是标记的命令,a是对这一行所做标记的名称,当然也可以使用26个字母中的任意一个做为标记名称。

在做了标记以后,我们可以用'a命令快速移到刚才所做标记的那一行的行首。这里'是单引号。也可以使用`a来移到所做标记时的光标所在位置,这里`是反引号(也就是数字键1左边的那一个)。

我们可以用:marks命令列出所有的标记。这其中也包括一些特别的标记(Special marks)。

'   	跳转前的光标位置
"   	最后编辑的光标位置
[   	上一次修改的开始处
]   	上一次修改的结尾处

如果我们将做了标记的那一行删除,那么所做的标记也就不存了。我们用标记不仅可以快速的移到做了标记的行,而且还可以用标记来删除掉一行,例如在某一行用ma做了标记,然后就可以用d'a来删掉这一行。我们也可用y'a命令就可以来复制这一行了。

复制粘贴命令小结

命令小结
p在当前光标后粘贴
P在当前光标前粘贴
m做标记
'移动到标记的行首
`移动到标记的光标位置
:marks列出所有标记
yy复制一行
Y

 

1. 将光标移动到将要复制的行处,按yy举行复制当前行(按nyy复制n行),再移动到粘贴位置,按p举行粘贴。 

2. 将光标移到复制的首位置,按下v,用hjkl移动,按y复制,按p粘贴。 

3. 光标移到肇始行,输入ma;光标移到结果行,输入mb;光标移到粘贴行,输入mc;然后 :'a,'b co 'c,把 co 改成 m 就成剪切了。 

4. 光标移动到要复制的行,输入yny(n表现要复制该行以下n行);光标移动到粘贴行,按p粘贴。 

5. 直接输入:n1,n2 co n3。(n1为肇始行,n2为结果行,n3为粘贴行) 

6. 差别文件之间的复制:用:sp [filename]打开另一文件,(用^ww在文件之间切换),然后按上述要领复制 

  相关的下令如下: 

  yy 将当前行复制到缓冲区 

  yw 将当前单词复制到缓冲区 

  y1 将光标处的一个字符复制到缓冲区 

  p 将缓冲区的信息粘贴到光标的背面 

  :行号1 ,行号2 copy 行号3 将行号1到行号2的内容复制到行号3地址行的背面。 

  :行号1 ,行号2 move 行号3 将行号1到行号2的文本内容移动到行号3地址行的背面。 

7. 寄存器操纵 

  "?nyy: 将当前行及其下n行的内容存储到寄存器?中,此中?为一个字母,n为一个数字 

  "?nyw: 将当前行及其下n个字存储到寄存器?中,此中?为一个字母,n为一个数字 

  "?nyl: 将当前行及其下n个字符存储到寄存器?中,此中?为一个字母,n为一个数字 

  "?p: 取出寄存器?中的内容并将其放到光标位置处。这里?可以是一个字母 ,也可以是一个数字 

  ndd: 将当前行及其下共n行文本删除,并将所删内容放到1号删除寄存器中 vi 中配置tab为4和自动转换成空格

### 在 Vim 中进行复制粘贴操作的详细教程 在 Vim 中进行复制粘贴操作时,可以利用多种寄存器来完成不同场景下的需求。以下是关于如何在 Vim 中实现复制粘贴功能的详细说明。 #### 1. 启用鼠标支持以简化复制粘贴操作 如果需要通过鼠标直接选择文本并复制到系统剪贴板,可以在 Vim 中启用鼠标支持。执行以下命令: ```vim :set mouse=c ``` 此命令会启用所有模式下的鼠标支持(包括 Normal 模式、Insert 模式 Visual 模式),从而允许用户像在 GUI 环境中一样使用鼠标进行文本选择复制操作[^1]。 #### 2. 使用无名寄存器进行基本复制粘贴 Vim 默认使用无名寄存器 (`""`) 来存储通过 `y`(复制)、`d`(删除)等命令操作的内容。以下是具体操作方法: - **复制内容**:将光标移动到目标行或单词上,然后按下 `yy`(复制整行)或 `yw`(复制单词)。 - **粘贴内容**:将光标移动到目标位置,然后按下 `p`(在光标后粘贴)或 `P`(在光标前粘贴)。 例如,复制当前行并粘贴到下一行: ```vim yy p ``` 这里,`y` 命令会将内容存储到无名寄存器中,而 `p` 命令则从该寄存器读取内容[^4]。 #### 3. 使用系统剪贴板进行跨应用复制粘贴 如果需要将 Vim 中的内容复制到其他应用程序中,或者从其他应用程序粘贴内容到 Vim 中,可以使用系统剪贴板寄存器 (`"+`)。以下是具体操作方法: - **复制到系统剪贴板**:将光标移动到目标行或单词上,然后按下 `"+yy`(复制整行)或 `"+yw`(复制单词)。 - **从系统剪贴板粘贴**:将光标移动到目标位置,然后按下 `"+p`(在光标后粘贴)或 `"+P`(在光标前粘贴)。 例如,复制当前行到系统剪贴板并粘贴Vim 中: ```vim "+yy "+p ``` 需要注意的是,若 Vim 编译时未包含 `+clipboard` 支持,则无法直接使用系统剪贴板寄存器。此时,可以通过安装支持图形界面的 Vim 版本来解决问题: ```bash sudo apt install vim-gtk ``` 安装完成后,重新启动 Vim 并验证是否支持 `+clipboard` 功能[^2]。 #### 4. 使用命名寄存器存储重要内容 对于需要多次使用的复制内容,可以将其存储到命名寄存器(如 `"a` 至 `"z`)中。以下是具体操作方法: - **复制到命名寄存器**:将光标移动到目标行或单词上,然后按下 `"[寄存器名]yy`(复制整行)或 `"[寄存器名]yw`(复制单词)。例如,复制当前行到寄存器 `"j` 中: ```vim "jyy ``` - **从命名寄存器粘贴**:将光标移动到目标位置,然后按下 `"[寄存器名]p`(在光标后粘贴)或 `"[寄存器名]P`(在光标前粘贴)。例如,从寄存器 `"j` 粘贴内容: ```vim "jp ``` #### 5. 查看寄存器内容 可以通过以下命令查看所有寄存器的当前内容: ```vim :reg ``` 这有助于确认复制或删除操作是否成功存储到目标寄存器中[^4]。 --- ### 注意事项 - 如果在 Kali Linux 系统中使用 XShell 或其他类似终端时发现默认设置不支持直接复制粘贴操作,可以参考上述步骤启用鼠标支持或配置系统剪贴板功能[^1]。 - 确保 Vim 已正确编译并支持 `+clipboard` 功能,否则可能无法使用系统剪贴板寄存器[^2]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值