Vim
知识点
vim [文件名] +[行数]:打开文件并且快速定位到指定行
行内移动
命令 |
含义 |
w |
向后移动一个单词 |
b |
向前移动一个单词 |
0 |
跳转到行首 |
^ |
跳转到第一个非空白字符位置 |
$ |
跳转至行尾 |
% |
括号匹配及切换 |
行数移动
命令 |
含义 |
gg |
跳转至文本顶端 |
G |
跳转至文本最后 |
行数 + G |
跳转至指定的行数位置 |
屏幕移动
命令 |
含义 |
Ctrl + b |
向上翻页 |
Ctrl + f |
向下翻页 |
H |
屏幕顶端 |
M |
屏幕中间 |
L |
屏幕底端 |
段落移动
标记
1 2 3
| # 标记名称可以是a-z、A-Z之间的任何一个字母 # 添加标记的行被删除,则标记同时被删除 # 如果在其它位置使用了相同的标记名称,则之前添加的标记会被替换掉
|
命令 |
含义 |
m + [标记字母] |
添加标记 |
‘ + [先前标记的字母] |
直接定位到之前标记的位置 |
文本选择
命令 |
含义 |
v |
从光标模式开始正常模式选择文本 |
V |
选中光标经过的完整行 |
Ctrl + v |
垂直方向选中文本 |
撤销、恢复撤销
命令 |
含义 |
u |
撤销上次命令 |
Ctrl + r |
恢复上次撤销的命令 |
删除文本
命令 |
含义 |
x |
删除光标所处位置的文本,或者删除选中的文字 |
d + (移动命令) |
删除移动命令对应的内容 |
dd |
删除光标所在行, |
D |
删除至行尾 |
复制、粘贴
命令 |
含义 |
y + (移动命令) |
复制 |
yy |
复制光标所在当前行,nyy可复制多行 |
p |
粘贴 |
替换
命令 |
含义 |
r |
替换当前字符 |
R |
替换当前光标后的字符,替换完以后需要退出替换模式 |
缩进、重复执行
命令 |
含义 |
>> |
向右缩进 |
<< |
向左缩进 |
. |
重复上一次的命令 |
查找
1 2 3
| # 查找到了以后,可以通过以下按键循环匹配 # n:查找下一个 # N:查找上一个
|
命令 |
含义 |
/str |
查找str字符信息 |
* |
向后查找当前光标所处的单词 |
# |
向前查找当前光标所处的单词 |
内容替换
命令 |
含义 |
:%s/旧的文本/新文本/g |
全局替换 |
:’<,‘>s/旧文本/新文本/g |
在可视模式下,只替换选中的文本内容部分 |
:%s/旧文本/新文本/gc |
确认替换 |
插入命令
1
| # 进入插入模式以前,输入数字,可以将插入模式输入的内容重复执行指定的次数
|
命令 |
含义 |
i |
当前字符前插入文本 |
I |
在行首插入文本 |
a |
在当前字符之后添加字符 |
A |
在行尾添加字符 |
o |
在当前行后面添加一行 |
O |
在当前行之前添加一行 |
命令模式
命令 |
含义 |
:x |
保存并退出 |
:e . |
打开内置的文件浏览器,查看当前目录下的文件 |
:n 文件名 |
新建一个指定文件名的文件 |
分屏操作
1 2 3 4 5 6
| # 分屏窗口的操作都是基于Ctrl + w快捷键的 # w:切换到下一个窗口 # r:互换窗口 # c:关闭当前窗口,但是不能够关闭最后一个窗口 # q:退出当前窗口 # o:关闭其它窗口
|
命令 |
含义 |
:sp [文件名] |
横向增加分屏,并打开指定的文件,若未指定文件则打开当前编辑的文件 |
:vsp [文件名] |
纵向增加分频,并打开指定的文件,若未指定文件名,则打开当前编辑的文件 |
备注:未指定文件名,而用.代替,则会打开vim自带的文件浏览器来选择文件
作业
- 打开文件”01.py”,并直接定位到文件的第6行。
- 在第1题基础上,向后跳转一个单词的位置
- 在第1题基础上,直接跳转到当前行的末尾
- 在第3题基础上,向前跳转一个单词的位置
- 在第4题基础上,直接跳转到当前行第一个非空白字符的位置
- (问答)在vim中如何直接定位与当前括号相匹配的括号的位置
- 在第一题基础上,直接将光标跳转至当前文档的最后一行
- 在第7题基础上,将光标跳转至当前文档的第一行
- 在第8题基础上,将光标跳转至第6行
- 在第9题基础上,将屏幕向下翻一页
- 在第10题基础上,将屏幕向上翻一页
- 在第11题基础上,将光标移动至当前屏幕的顶端
- 在第12题基础上,将光标移动至当前屏幕的正中央
- 在第13题基础上,将光标移动至当前屏幕的底端
- 在第14题基础上,将光标移动至当前段落的下一个段落
- 在第15题基础上,将光标移动至当前段落的上一个段落
- 将光标移动至第15行,然后添加一个标记”a”,然后将光标移动到文件的首行
- 在第17题基础上,返回至标记”a”的位置
- (问答)标记的可取值范围是哪些
- (问答)当标记的位置被删除的时候,则标记是否还有用
- 进入正常的可视模式,然后退出
- 进入行可视模式,然后退出
- 进入块可视模式,然后退出
- 删除当前光标下的文本
- 在第24题基础上,撤销此前的删除命令,恢复第24题的删除效果
- 删除光标所在的当前行
- 从光标的所在位置,至当前行的行尾内容全部删除
- 将光标移动到当前行的行尾,然后通过移动命令将当前行的文本内容全部删除,但仍旧保留当前行的位置
- 将光标移动到当前行的行尾,然后通过移动命令将当前行的文本内容全部复制
- 复制当前行的所有内容
- 在第13题基础上,将复制的内容粘贴在当前行的下一行
- 替换当前光标所在位置的字母为”y”
- 将当前光标所在位置的之后5个字母修改为”hello”
- 将当前光标所在的行向右缩进一个单位
- 在第34题基础上将当前光标所在的行向左缩进一个单位
- 在”01.py”文件中查找单词”email”
- 在第36题基础上,查找下一个匹配项
- 在第37题基础上,查找上一个匹配项
- 向后查找当前光标所在位置的单词
- 向前查找当前光标所在位置的单词
- 替换当前文本中所有的”email”为”邮件”,且不需要确认
- 替换当前文本中所有的”print”为”打印”,且需要人工确认替换
- 通过可视模式选中当前光标所在的单词及其相邻的下一个单词,然后将该内容替换为”replace content”
- 在当前光标所在位置之前插入文本内容”insert”
- 在当前光标所在位置之后插入文本内容”append”
- 在当前光标所在行的行首插入文本内容”Insert”
- 在当前光标所在行的行尾插入文本内容”Append”
- 在当前光标所在行上插入新的一行:”new line“
- 在当前光标所在行的行下插入新的一行:”low line“
- 将当前文件保存为”01-shuai.py”
- 在第50题基础上,打开vim的文件浏览器,浏览查找01-shuai.py文件并打开
- 在第51题基础上,重新创建一个新的文件02.py文件
- 在第52题基础上,利用横向分屏,打开01.py文件
- 在第53题基础上,切换分屏窗口到02.py上
- 在第53题基础上,互换两个分屏显示的位置
- 打开文件01.py,同时通过纵向分屏模式打开文件01-shuai.py,之后关闭当前光标所激活的分屏窗口
- 退出当前光标所激活的窗口
- 在第54题基础上,关闭除当前光标所在的窗口以外的其它所有的窗口