Vim

知识点

vim [文件名] +[行数]:打开文件并且快速定位到指定行

行内移动

命令 含义
w 向后移动一个单词
b 向前移动一个单词
0 跳转到行首
^ 跳转到第一个非空白字符位置
$ 跳转至行尾
% 括号匹配及切换

行数移动

命令 含义
gg 跳转至文本顶端
G 跳转至文本最后
行数 + G 跳转至指定的行数位置

屏幕移动

命令 含义
Ctrl + b 向上翻页
Ctrl + f 向下翻页
H 屏幕顶端
M 屏幕中间
L 屏幕底端

段落移动

命令 含义
{ 上一个段落
} 下一个段落

标记

1
2
3
# 标记名称可以是a-z、A-Z之间的任何一个字母
# 添加标记的行被删除,则标记同时被删除
# 如果在其它位置使用了相同的标记名称,则之前添加的标记会被替换掉
命令 含义
m + [标记字母] 添加标记
‘ + [先前标记的字母] 直接定位到之前标记的位置

文本选择

1
# 选择模式可以和之前的所有的移动命令联合使用
命令 含义
v 从光标模式开始正常模式选择文本
V 选中光标经过的完整行
Ctrl + v 垂直方向选中文本

撤销、恢复撤销

命令 含义
u 撤销上次命令
Ctrl + r 恢复上次撤销的命令

删除文本

1
# 删除文本可以和移动命令联合使用
命令 含义
x 删除光标所处位置的文本,或者删除选中的文字
d + (移动命令) 删除移动命令对应的内容
dd 删除光标所在行,
D 删除至行尾

复制、粘贴

1
# 复制、粘贴可以和移动命令联合使用
命令 含义
y + (移动命令) 复制
yy 复制光标所在当前行,nyy可复制多行
p 粘贴

替换

命令 含义
r 替换当前字符
R 替换当前光标后的字符,替换完以后需要退出替换模式

缩进、重复执行

1
# 可视模式下,缩排只需>、<
命令 含义
>> 向右缩进
<< 向左缩进
. 重复上一次的命令

查找

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自带的文件浏览器来选择文件

作业

  1. 打开文件”01.py”,并直接定位到文件的第6行。
  2. 在第1题基础上,向后跳转一个单词的位置
  3. 在第1题基础上,直接跳转到当前行的末尾
  4. 在第3题基础上,向前跳转一个单词的位置
  5. 在第4题基础上,直接跳转到当前行第一个非空白字符的位置
  6. (问答)在vim中如何直接定位与当前括号相匹配的括号的位置
  7. 在第一题基础上,直接将光标跳转至当前文档的最后一行
  8. 在第7题基础上,将光标跳转至当前文档的第一行
  9. 在第8题基础上,将光标跳转至第6行
  10. 在第9题基础上,将屏幕向下翻一页
  11. 在第10题基础上,将屏幕向上翻一页
  12. 在第11题基础上,将光标移动至当前屏幕的顶端
  13. 在第12题基础上,将光标移动至当前屏幕的正中央
  14. 在第13题基础上,将光标移动至当前屏幕的底端
  15. 在第14题基础上,将光标移动至当前段落的下一个段落
  16. 在第15题基础上,将光标移动至当前段落的上一个段落
  17. 将光标移动至第15行,然后添加一个标记”a”,然后将光标移动到文件的首行
  18. 在第17题基础上,返回至标记”a”的位置
  19. (问答)标记的可取值范围是哪些
  20. (问答)当标记的位置被删除的时候,则标记是否还有用
  21. 进入正常的可视模式,然后退出
  22. 进入行可视模式,然后退出
  23. 进入块可视模式,然后退出
  24. 删除当前光标下的文本
  25. 在第24题基础上,撤销此前的删除命令,恢复第24题的删除效果
  26. 删除光标所在的当前行
  27. 从光标的所在位置,至当前行的行尾内容全部删除
  28. 将光标移动到当前行的行尾,然后通过移动命令将当前行的文本内容全部删除,但仍旧保留当前行的位置
  29. 将光标移动到当前行的行尾,然后通过移动命令将当前行的文本内容全部复制
  30. 复制当前行的所有内容
  31. 在第13题基础上,将复制的内容粘贴在当前行的下一行
  32. 替换当前光标所在位置的字母为”y”
  33. 将当前光标所在位置的之后5个字母修改为”hello”
  34. 将当前光标所在的行向右缩进一个单位
  35. 在第34题基础上将当前光标所在的行向左缩进一个单位
  36. 在”01.py”文件中查找单词”email”
  37. 在第36题基础上,查找下一个匹配项
  38. 在第37题基础上,查找上一个匹配项
  39. 向后查找当前光标所在位置的单词
  40. 向前查找当前光标所在位置的单词
  41. 替换当前文本中所有的”email”为”邮件”,且不需要确认
  42. 替换当前文本中所有的”print”为”打印”,且需要人工确认替换
  43. 通过可视模式选中当前光标所在的单词及其相邻的下一个单词,然后将该内容替换为”replace content”
  44. 在当前光标所在位置之前插入文本内容”insert”
  45. 在当前光标所在位置之后插入文本内容”append”
  46. 在当前光标所在行的行首插入文本内容”Insert”
  47. 在当前光标所在行的行尾插入文本内容”Append”
  48. 在当前光标所在行上插入新的一行:”new line“
  49. 在当前光标所在行的行下插入新的一行:”low line“
  50. 将当前文件保存为”01-shuai.py”
  51. 在第50题基础上,打开vim的文件浏览器,浏览查找01-shuai.py文件并打开
  52. 在第51题基础上,重新创建一个新的文件02.py文件
  53. 在第52题基础上,利用横向分屏,打开01.py文件
  54. 在第53题基础上,切换分屏窗口到02.py上
  55. 在第53题基础上,互换两个分屏显示的位置
  56. 打开文件01.py,同时通过纵向分屏模式打开文件01-shuai.py,之后关闭当前光标所激活的分屏窗口
  57. 退出当前光标所激活的窗口
  58. 在第54题基础上,关闭除当前光标所在的窗口以外的其它所有的窗口