第三章:文档的修改与保存
修改文档
你现在已经学会了控制光标、打开文件、切换文件、并在文件中查找内容,这些操作都是在 Vim 的 normal 模式下进行的。现在,是时候进入 Vim 的另外一种模式 —— insert 模式, 学习一下如何修改文件了。
插入
i当前字符前插入a当前字符后插入I行首插入A行尾插入o在下一行插入O在上一行插入
注意:以上任何一个命令都会使 Vim 进入 insert 模式,进入该模式后光标会发生变化, 这时输入的文字会直接出现在文档中,按 Esc 键或 Ctrl-[ 或 Ctrl-C 退出 insert 模式。
删除(并保存到 Vim 剪贴板)
s删除当前字符,并进入INSERT模式S删除当前行并保存到 Vim 剪贴板,同时进入INSERT模式(等同于cc)x删除当前字符,相当于 insert 模式下的DeleteX删除前一个字符,相当于 insert 模式下的Backspacedd删除当前行,并将删除的内容保存到 Vim 剪贴板d<X>删除指定内容并保存到 Vim 剪贴板cc删除当前行并保存到 Vim 剪贴板,同时进入INSERT模式c<X>删除指定内容并保存到 Vim 剪贴板,同时进入INSERT模式
Vim 的组合语法
这里是 Vim 最值得掌握的规律:许多编辑命令都可以读成 [数字] + 操作符 + 移动范围。
- 操作符描述“做什么”:
d删除、c修改、y复制 - 移动描述“做到哪里”:
w下一单词、$行尾、}下一段 - 数字描述“做几次”:
2dw删除两个单词,写成d2w效果相同
因此 dw 是“删除到下一个单词”,c$ 是“修改到行尾”,y} 是“复制到下一段”。 以后学到新的移动方式,就自然多出一组删除、修改和复制方式,不需要分别背快捷键。
注意:连续按两次操作符表示整行,例如 dd、cc、yy。c 完成删除后会进入 Insert 模式,d 则留在 Normal 模式。
复制
yy复制当前行到 Vim 剪贴板y<X>复制指定内容到 Vim 剪贴板
粘贴
p在当前位置后粘贴P在当前位置前粘贴
合并
J将当前行与下一行合并
尝试在下面的文本中进行复制粘贴练习
删除这一行
粘贴到这一行下面
剪切 ABC 并把它粘贴到 XYZ 前面,使这部分内容看起来像
剪切 并把它粘贴到 ABC XYZ 前面。再找一行普通文字,依次尝试
dw、u、c$、输入几个字符、Esc、u。每一步 都先说出“操作符”和“范围”,再按键。练习结束后用u恢复原文。
替换
r<X>将当前字符替换为 Xgu<X>将指定的文本转换为小写gU<X>将指定的文本转换为大写:%s/<search>/<replace>/g在整个文件中替换每行的全部匹配
:s 默认只作用于当前行,且只替换这一行的第一个匹配。% 把范围扩展到整个文件, 末尾的 g 表示替换每行的所有匹配;加 c(即 gc)可以逐个确认。
尝试修改下列文本的大小写
Change this line to UPPERCASE, THEN TO lowercase.还有个更好玩的命令
g~<X>,先将光标定位到上面那行文本,执行0g~$看看发生了 什么。
撤销、重做
u撤销Ctrl-r重做
保存文件
:w保存当前文件:wa保存全部文件:wqorZZ保存并退出:q!orZQ强制退出,不保存:saveas <new filename>文件另存为:w <new filename>文件另存一份名为<new filename>的副本并继续编辑原文件
你可以试着把当前(也许已经改得面目全非的)文件另存一份,然后继 续下一章的学习。