一、复制粘贴
指令模式下的复制粘贴类命令通常需要配合一般模式下的有关快捷操作一起使用方能达到效果,所以这里的复制粘贴命令也不单独局限于指令模式。
常用的复制粘贴方法如下:
1、复制指定行进行粘贴:
在一般模式下将光标移动到指定行,按下 yy,完成拷贝,再将光标移动到要粘贴的前一行,按 p 进行粘贴。
2、复制指定区域进行粘贴:
在一般模式下将光标移动到复制区域的开始位置,按下 v,进入可视模式,用 hjkl 或者方向键移动光标来选定区域,完成选定后按 y 完成拷贝,再将光标移动到粘贴位置,按 p 进行粘贴。
3、复制指定单词进行粘贴:
在一般模式下将光标移动到指定单词第一字母位置,按下 yw,完成拷贝,再将光标移动到要粘贴的位置,按 p 进行粘贴。
4、结合标记命令完成复制粘贴:
在一般模式下将光标移动到拷贝开始行,按 ma 做下标记 a;光标移动到拷贝结束行,按 mb 做下标记 b;再将光标移动到要粘贴的前一行,按 mc 做下标记 c;最后在命令模式下输入“’a,’b copy ‘c”,按回车完成粘贴。如果将 copy 换成 move,则完成剪切操作。
5、复制多行进行粘贴:
在一般模式下将光标移动到起始行,按 nyy 拷贝 n 行,再将光标移动到要粘贴的前一行,按 p 进行粘贴。
6、通过行数指定范围跟目的位置来完成复制粘贴:
在命令模式下输入“n1,n2 copy n3”,按回车,则将第 n1 行到 n2 行复制到了第 n3 行。如果将 copy 换成 move,则完成剪切操作。
7、使用非默认缓冲区完成复制粘贴:
前面的复制粘贴方法都是使用的默认缓冲区,Vim 编辑器除了默认缓冲区外,还有由 a、b、c … z 为代号的26个独立缓冲区,所以 Vim 编辑器中最多可以同是保存27份拷贝。使用非默认缓冲区完成复制粘贴操作时只需要加上双引号跟缓冲区代号即可。见下一实例。
8、将指定行拷贝到 x 缓冲区并完成粘贴:
在一般模式下将光标移动到指定行,按下 “xyy,拷贝到 x 缓冲区,再将光标移动到要粘贴的前一行,按 “xp 进行粘贴。
二、删除操作
跟复制粘贴操作相类似,Vim 下的删除操作通常也需要跟一般模式下的有关快捷操作配合使用,而且使用方式触类旁通。
常用的删除操作如下:
1、删除指定字符:
在一般模式下将光标移动到指定字符位置,按下 x 。
2、删除连续 n 个字符:
在一般模式下将光标移动到指定连续n个字符开始位置,按下 nx 。
3、删除连续区域内的所有字符:
在一般模式下将光标移动到连续区域的开始位置,按下 v,进入可视模式,用 hjkl 或者方向键移动光标来选定区域,完成选定后按 x 或 d 。
4、删除指定行:
方法一:在一般模式下将光标移动到指定行,按下 dd ;
方法一:在一般模式下将光标移动到指定行,切换到命令模式,输入“d”后回车。
5、删除指定单词:
在一般模式下将光标移动到指定单词第一字母位置,按下 dw 。
6、结合标记命令完成删除操作:
在一般模式下将光标移动到删除开始行,按 ma 做下标记 a;光标移动到删除结束行,按 mb 做下标记 b;最后在命令模式下输入“’a,’b delete”(简写“’a,’b d”也是等价的)后回车。
7、删除连续 n 行:
方法一:在一般模式下将光标移动到起始行,按下 ndd。
方法二:在一般模式下将光标移动到起始行,切换到命令模式,输入“nd”后回车。
8、通过行数指定范围来完成删除操作:
在命令模式下输入“n1,n2 delete”(简写“n1,n2 d”也是等价的)后回车,则将第 n1 行到 n2 行删除。
9、删除指定行至正文的末尾:
在一般模式下将光标移动到指定行,切换到命令模式,输入“.,$d ”后回车。
10、删除从字符串 str1 到 str2 的所有行:
切换到命令模式,输入“/str1/,/str2/d”后回车。
三、修改操作
这里要介绍的 Vim 下的修改操作,更确切地说应该是文本替换操作。利用 %s 命令可以实现字符串的替换。
常用的修改操作如下:
1、用字符串 str2 替换指定行首次出现的字符串 str1:
在一般模式下将光标移动到指定行,切换到命令模式,输入“s/str1/str2/”后回车。
2、用字符串 str2 替换指定行所有出现的字符串 str1:
在一般模式下将光标移动到指定行,切换到命令模式,输入“s/str1/str2/g”后回车。
3、用字符串 str2 替换 n1 行到 n2 行所有出现的字符串 str1:
切换到命令模式,输入“n1,n2s/str1/str2/g”后回车。
4、用字符串 str2 替换指定行到末尾所有出现的字符串 str1:
在一般模式下将光标移动到指定行,切换到命令模式,输入“.,$s/str1/str2/g”后回车。
5、用字符串 str2 替换每行所有出现的字符串 str1:
方法一:切换到命令模式,输入“%s/str1/str2/g”后回车。
方法二:切换到命令模式,输入“g/str1/s//str2/g”后回车。
从上述替换命令可以看到:g 放在命令末尾,表示对搜索字符串的每次出现进行替换;不加 g,表示只对搜索字符串的首次出现进行替换;g 放在命令开头,表示对正文中所有包含搜索字符串的行进行替换操作。s 前面可以指定替换范围,% 表示全文范围。
除非注明,文章均为CppLive 编程在线原创,转载请注明出处,谢谢。