Reference: Missing Semester - Editors
进入退出 Vim 编辑器
vim 文件名:进入 vimESC :q!:放弃所有改动并退出ESC :wq:保存改动并退出
模式切换
ESC:正常模式i:插入模式v:视图模式(光标选取)V:行视图模式(I多行插入)CTRL-V:方块视图R:替换模式
重复操作 (指令格式:operator+number+motion)
operator:操作符,比如d代表删除,c代表修改number:可以附加的数字,代表动作重复的次数motion:在所操作的文本上的移动步长,例如w代表单词(word),$代表行末等等
光标移动
kjhl:上下左右b:到前一个单词头部w:到下一个单词头部ge:到前一个单词尾部e:到下一个单词尾部0:到行首gg:到文件第一行$:到行末%:若当前位置是括号,则跳转至配对的括上gd:跳转到变量定义处:$或G:到文件最后一行CTRL-G:显示当前光标所在位置和文件状态信息行号+G:将光标移动至该行号代表的行行号+$:将光标移动至该行号末尾
插入
i:在光标前插入文本I:在行首插入文本a:在光标后添加文本A:在行末添加文本o:在光标所在行下方插入新行O:在光标所在行上方插入新行
删除
x:删除光标所在位置的字符d:删除视图模式下光标选中的部分d$:删除光标当前位置到当前行末的部分dd:删除整行
撤销
u:撤销上一个操作U:撤销在一行中的改动CTRL-R:回退撤销操作
修改
y:复制视图模式下光标选中的部分yy:复制光标所在行p:置入已删除或复制的部分r:覆盖原位置上的单个字符ce:替换光标当前位置到单词末尾的内容c$:替换光标当前位置到行末的内容~:修改大小写
查找
/+字符串:在当前文档中正向查找该字符串?+字符串:在当前文档中反向查找该字符串n:找到下一个匹配N:反向找到下一个匹配#:正向搜索当前单词*:反向搜索当前单词CTRL-O:跳转回较旧的位置CTRL-I:跳转到较新的位置
替换 (指令格式::+range+s/old/new+/flag)
:21s/old/new:将21行第一个 old 替换为为 new:21s/old/new/g:将21行所有的 old 替换为 new:5,21s/old/new/g将5到21行所有的 old 替换为 new:.,21s/old/new/g将当前行到21行所有的 old 替换为 new:.+4,.+8s/old/new/g将当前行+4到+8行所有的 old 替换为 new:ls/old/new/g:将第一行所有的 old 替换 new:$s/old/new/g:将最后一行所有的 old 替换为 new:%s/old/new/g:将文件内所有的字符串 old 替换为新的字符串 new:%s/old/new/gc:进行全文替换时询问用户确认每个替换:%s/old/new/gi:进行全文替换时忽略大小写:%s/old/new/gI:进行全文替换时敏感大小写
外部指令
:!command用于执行一个外部命令 command。:!dir或:!ls:用于显示当前目录的内容:!del FILENAME或:!rm FILENAME:用于删除名为 FILENAME 的文件:w FILENAME:可将当前 VIM 中正在编辑的文件保存到名为 FILENAME 的文件中- 视图模式下
:w FILENAME:可将当前编辑文件中可视模式下选中的内容保存到文件 FILENAME 中 :r FILENAME:可提取磁盘文件 FILENAME 并将其插入到当前文件的光标位置后面:r !dir:可以读取 dir 命令的输出并将其放置到当前文件的光标位置后面
设置
:set ic或:set ignorecase:查找时忽略字母大小写:set is或:set incsearch:查找短语时显示部分匹配:set hls或:set hlsearch:高亮显示所有的匹配短语:set noic:在选项前加上 no 可以关闭选项
窗口
sp:上下分割窗口vsp:左右分割窗口CTRL-W+[hjkl]:窗口切换