用户工具

站点工具


linux:vim:copy-past

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

linux:vim:copy-past [2010/06/02 01:18] (当前版本)
行 1: 行 1:
 +====== VIM 中复制和粘帖 ======
  
 +===== 复制粘贴 =====
 +
 +
 +在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)。
 +<​code>​
 +' ​  ​ 跳转前的光标位置
 +" ​  ​ 最后编辑的光标位置
 +[   ​ 上一次修改的开始处
 +]   ​ 上一次修改的结尾处
 +</​code>​
 +
 +如果我们将做了标记的那一行删除,那么所做的标记也就不存了。我们用标记不仅可以快速的移到做了标记的行,而且还可以用标记来删除掉一行,例如在某一行用ma做了标记,然后就可以用d'​a来删掉这一行。我们也可用y'​a命令就可以来复制这一行了。
 +
 +===== 复制粘帖命令小结 =====
 +<​html>​
 +<table summary="​Commands"​ border="​2"​ cellpadding="​3"​ cellspacing="​0"​ frame="​hsides"​ rules="​all"><​caption>​命令小结</​caption><​tbody><​tr><​td><​code class="​inset">​p</​code></​td><​td>​在当前光标后粘贴</​td></​tr><​tr><​td><​code class="​inset">​P</​code></​td><​td>​在当前光标前粘贴</​td></​tr><​tr><​td><​code class="​inset">​m</​code></​td><​td>​做标记</​td></​tr><​tr><​td><​code class="​inset">'</​code></​td><​td>​移动到标记的行首</​td></​tr><​tr><​td><​code class="​inset">​`</​code></​td><​td>​移动到标记的光标位置</​td></​tr><​tr><​td><​code class="​inset">:​marks</​code></​td><​td>​列出所有标记</​td></​tr><​tr><​td><​code class="​inset">​yy</​code></​td><​td rowspan="​2">​复制一行</​td></​tr><​tr><​td><​code class="​inset">​Y</​code></​td></​tr></​tbody></​table>​
 +</​html>​
 +
 +===== 参考 =====
 +  * https://​yyq123.blogspot.com/​2009/​02/​vim_25.html
 + 
 + 
linux/vim/copy-past.txt · 最后更改: 2010/06/02 01:18 (外部编辑)