可视化模式下 v 的特殊操作
- 当操作的文本光标在 “”,‘’ ,(),{} ,[(双引号,单引号,小括号,大括号,中括号)
当中的时候,可以通过 va"选中 ”“ 内的所有内容包括双引号 ,vi" 选中 "" 内的所有内容,不包括 ""。va,vi 会快速选择区域,va 后面会紧跟一个区域结束标志,a 会选中结束符标志,i 就不会。例子如下:
"hello world [VIM is so strong],{we all can master vim skill}"
假设当前光标定位在上面的文本 M 处:
va]
操作将会选中以下文本(加粗部分):
“hello world[VIM is so strong]
,{we all can master vim skill}“
vi]
操作将会选中如下的区域,没有包含 []:
“hello world [VIM is so strong
],{we all can master vim skill}“
跨行移动光标
* 和 # 匹配光标当前所在的单词,移动光标到下一个(或者上一个)匹配的单词( * 是下一个,# 是上一个)
VIM 的复制,黏贴 ,删除
yw 复制一个单词,还有 ynw
"+y 复制当前行到系统剪切板
系统剪贴板
"+p 粘贴系统剪切板内容到当前位置后
系统剪贴板
yy 复制一行,还有 nyy
dw 删除一个单词
dd 删除一整行
p ,P是黏贴的意思,当执行完复制或者黏贴的命令以后,VIM 会把文本寄存起来。
p 在光标后开始黏贴
P 大写的 P 光标前开始粘贴
撤销操作和恢复
u 撤销刚才的操作
ctrl + r 恢复撤销操作
删除字符操作和替换
x 删除光标当前所在的字符
r 替换掉光标当前所在的字符
R 替换掉从光标开始以后的所有字符,除非 <ESC > 退出,或者 jj (代替 <ESC> 上文有提到)退出。
cw ,删除从光标处开始到该单词结束的所有字符,然后插入需要录入的文本(这个命令是两个字符的合体 cw )
大小写转换
~ 将光标下的字母改变大小写
g~~ 改变当前行字母的大小写
gUU 将当前行的字母改成大写
guu 将当前行的字母全改成小写
复制到粘贴:[range]copy{address}
参数说明: - [range]:表示要复制的行范围,其中 copy 可缩写为 :co 或 :t。 - {address}:表示复制的目标位置,这两个参数都可以缺省,用于表示 Vim 光标所在当前行。
- 例如 :5copy. 表示复制 Vim 当前打开的文件的第 5 行到当前行(用 . 表示),即为第 5 行创建一份副本,并放到当前行下方。
:3,5t. # 把第 3 行到第 5 行的内容复制到当前行下方
:t5 # 把当前行复制到第 5 行下方
:t. # 复制当前行到当前行下方(等价于普通模式下的 yyp)
:t$ # 把当前行复制到文本结尾
:'<,'>t0 # 把高亮选中的行复制到文件开头
文本编辑、复制粘贴中的内容可以简单总结为:
ci'、ci"、ci(、ci[、ci{、ci< # 分别更改这些配对标点符号中的文本内容
di'、di"、di( 或 dib、di[、di{ 或 diB、di< # 分别删除这些配对标点符号中的文本内容
yi'、yi"、yi(、yi[、yi{、yi< # 分别复制这些配对标点符号中的文本内容
vi'、vi"、vi(、vi[、vi{、vi< # 分别选中这些配对标点符号中的文本内容
cit、dit、yit、vit,分别操作一对标签之间的内容,编辑 HTML、XML 很好用!另外,如果把上面的 i 改成 a 可以同时操作配对标点和配对标点内的内容。
移动文本::[range]move{address}
- 参数说明 - [range]:表示要移动的行范围。 - {address}:表示移动的目标位置,这两个参数都可以缺省。
:m+1 # 下移 1 行
:m-2 # 上移 1 行
:8,10m2 # 把当前打开文件的第 8~10 行内容移动到第 2 行下方
网友评论