这是我参与8月更文挑战的第14天,活动详情查看:8月更文挑战
概述
vim有两种模式:Normal和Insert模式。
- 处于Normal时,所有的键都为功能键,像传统Windows系统中,按下Ctrl键下的效果。比如,Ctrl + C为复制内容,那么处于Normal下,按「C」相当于复制(注意,这是比喻,实际Normal中的C是其他功能)。用VIm打开文件时,就处于Normal模式;当在Insert模式时,按下【Esc】键,回到Normal模式。
- Insert模式,就是编辑模式了,可以编辑文档。一般我们可以通过在Normal模式按下【i】键,进入Insert模式
入门命令(Norma模式)
i进入Insert 模式,按ESC回到 Normal 模式x删当前光标所在的一个字符:wq保存文件并退出:q退出vim,如果文件已修改,不能直接退出,需要:q!命令强制退出:w [newfilename]另存为newfilename文件(当前编辑的文件还属当前文件)dd删除当前行,并把删除的当前行存在剪贴板p粘贴剪贴板(dd存在剪贴板的内容,会粘贴到光标的下一行)hjkl移动光标,分别为:←↓↑→
进一步学习
更多的进入插入模式的方式
从前面的学习,我们知道通过在Normal模式按i进入编辑模式。这时候,我们就可以在光标之前插入内容。为了提高我们的编辑效率,有时候我们需要在不同的位置插入内容。vim提供了多种插入模式:
a在光标后插入o在当前行后插入一个新行O大写的o, 在当前行前插入一个新行cw先按c,再按w。删除光标到这个单词结尾的部分,并进入Insert模式。ps:w移动到下一个单词位置
光标移动
我们最常用的移动方式就是上下左右移动,vim还有其他好用的光标移动方式:
0数字零(注意,不是9宫格数字键盘上的0,而是字符上的0),移动到行头^移动到本行第一个不是blank字符的位置(所谓blank字符就是空格,tab,换行,回车等),而0是直接移动到行头$移动到本行行尾g_移动到本行最后一个不是blank字符的位置/pattern先按「/」,再键入所要匹配的内容。搜索pattern的字符串,如果搜索出多个匹配,可按n键到下一个。ps:命中搜索结果,会高亮显示,如果想要清除高亮效果,可以再次匹配不存在的文本;或者使用命令:noh
复制、剪切、粘贴
复制,在vim中也叫yank(提起)。复制相关的命令都是y开头
yy复制整行(nyy或者yny ,复制n行,n为数字);y^复制当前(光标前,不包含当前光标所在位置)到行头的内容;y$复制当前(包含光标所在位置)到行尾的内容;yw复制一个word (nyw或者ynw,复制n个word,n为数字)
剪切,在vim中也叫delete。剪切相关的命令都是d开头
dd剪切整行d^剪切至行首d$剪切至行尾dw剪切一个word
粘贴,在vim中也叫put(放下)。
p小写p代表贴至游标后(下),因为游标是在具体字符的位置上,所以实际是在该字符的后面P大写P代表贴至游标前(上)
说明:整行的复制粘贴在游标的上(下)一行,非整行的复制则是粘贴在游标的前(后)
Undo/Redo 撤销/重做
uundo,撤销。如,删除某行,再按u时,会撤销删除某行,相当于还原了某行Ctrl + rredo,重做。如,删除某行,再按u时,会撤销删除某行,再按Ctrl + r,又重新删除某行。
undo/Redo 可以理解成操作的前进后退。
打开/保存/退出/改变文件
:e <path/to/file>打开一个文件:w存盘:saveas <path/to/file>另存为<path/to/file>:x,ZZ或:wq保存并退出 (:x表示仅在需要时保存,ZZ不需要输入冒号并回车)。:x和ZZ与:wq最大的区别是::x和ZZ在内容未更改时,不会保存;:wq即使内容未更改,也会保存。文件修改时间可以很明显看出这两者的区别区别。:q!退出不保存:qa!强行退出所有的正在编辑的文件,就算别的文件有更改。:bn和:bp你可以同时打开很多文件(在bash里,vim命令紧跟多个文件名),使用这两个命令来切换下一个或上一个文件。(使用:n到下一个文件,切换到最后一个文件时,再执行就会报错了)
高效使用
高效移动光标
- N
G「N」表示数字,「G」为大写,表示移动到第N行 :N「N」表示数,同样可以达到移动到N行目的gg移动到第一行G移动到最后一行w或W移动到下一个单词的开头,它们的区别是对单词字符的分隔符e或E移动到下一个单词的结尾b或B移动到上一个单词的开头ge或gE移动到上一个单词的结尾%匹配括号移动,包括()[]{},但不包括【】()「」(中文的括号)。注意:需要把光标先移动到括号上*和#匹配光标当前所在的单词,移动光标到下一个(或上一个)匹配单词(*是下一个,#是上一个)
高效选择
当我们想选取文本内容是,可以按v进入视模式选择,结合移动光标命令进行选择相关内容。然后再执行相关命令,如d删除所选内容;y复制所选内容