Vim使用日记【一】
- Vim的运行方式
- 进入Vim第一步:打开文件
- 保存文件并退出Vim
- 三种模式下能做哪些事
- 命令模式
- 编辑模式
- 底行模式
- Visual Block功能
Vim的运行方式
作为Linux系统中最常用的文本编辑器,Vim体现了Linux“万物皆是文件”的设计哲学。通过Vim,你可以编辑权限允许范围内的所有内容,甚至Vim软件本身的配置文件也是可以通过Vim来修改的。
Vim的运行方式可以看作是一个如图所示的状态机。当我们进入Vim时,首先会进入命令模式。
在命令模式中,我们可以完成一些如复制、剪切、粘贴之类的操作。处在命令模式中的时候,我们可以按下i键进入编辑模式(o键和a键也可以,但是最常用的还是i键),这一点很好记住,因为i是单词insert的首字母。
在编辑模式中,我们可以像Windows系统中的记事本一样使用Vim,可以自由输入与删除内容。编辑好内容以后,按下esc键就会返回命令模式。在命令模式中按下:键(冒号,在常见的键盘中与分号共享同一个按键位置,需要按下Shift+;)则会进入底行模式。
在底行模式中,我们可以通过输入Vim的一些指令完成一些批量化的操作,文件的保存、退出也是在底行模式中完成的。
进入Vim第一步:打开文件
在Linux的命令行中输入以下指令,即可打开一个名字为“exampleFile.v”的文件。
vim exampleFile.v
注意,文件的扩展名是不能被省略的。在Linux系统中,万物皆是文件,而不会像Windows系统中对文件的扩展名进行自动识别。所以,“exampleFile”,“exampleFile.v”和"exampleFile.sv"都是完全不同的文件,Linux不会认为它们之间有任何的联系。
在输入上述指令打开Vim时,建议充分利用Linux系统的自动补全功能,使用Tab键补全文件名,否则很容易输错文件名。如果输入的文件名是一个不存在的文件,Vim就会自动创建该文件并且进入。不过就算不小心输错了也没有关系,先按冒号键(Shift+分号)进入底行模式,然后输入q,再按回车即可不保存直接退出,这样错误的文件就不会被保存下来。
保存文件并退出Vim
先按:键(Shift+分号)进入底行模式,再输入q,再按回车,即可不保存直接退出,后文中将此操作表示为:q。
保存文件::w
直接退出::q
保存并退出::wq
对于一些只读文件,保存时需要加上感叹号(!)。
三种模式下能做哪些事
命令模式
复制:yy
在Vim中,复制不叫作Copy,而叫做Yank,所以与复制相关的不是c键而是y键。在命令模式下连按两次y键(即yy)即可复制当前光标所在的一整行。
顺便一提光标,在命令模式下,Vim提供了四个按键用作光标移动,分别是h左移,j下移,k上移,l右移,可以发现这四个按键不是WSAD和上下左右的排布,因此我还没有完全适应。在移动光标时,我仍然更倾向于用鼠标直接点击目标位置。据说,Vim的设计目标是“让使用者们双手似弹钢琴般地编辑文件”,因此Vim的熟练使用者应该是完全不用鼠标的……
在使用yy进行复制时,可以在yy前加上数字。比如2yy就是复制光标所在行以及下一行,共计2行;180yy就是复制光标所在行以及接下来的179行,共计180行。
粘贴:p
在命令模式中,p键可以将复制的内容粘贴出来。如果是复制了整行的内容,p键会将内容放在光标的下一行。可能听起来有些拗口,大家实际操作一下就很好理解了。
剪切:dd
与yy复制类似,dd即剪切一整行,可以加上数字以一次性剪切更多行。剪切的内容可以马上通过p粘贴到某处。
撤销:u
粘贴错了或者剪切错了也不用慌,命令模式下按下u键即可撤销。如果撤销错了,还可以通过ctrl+r撤销撤销^_^
查找:/
在命令模式中按下/就可以进入搜索功能。按下/以后,输入要搜索的内容再按Enter即可将该文件内搜索到的匹配结果高亮显示,光标也会跳转到最近的匹配结果位置。此时按下n可以不断向下查看其他匹配结果,按shift+n向上查看其他匹配结果。
光标跳转至文件开头:gg
光标跳转到文件最后:Shift+g
光标跳到这一行的开头:0
光标跳到这一行的末尾:$即shift+4
编辑模式
编辑模式下,可以自由编辑文本内容,此时光标移动也变成了方向键,不再使用hjkl四键,因为这四键的功能在编辑模式下已经变成了输入hjkl四个字母。
底行模式
底行模式下,Vim可以完成一些技巧性的操作。
左右分屏::vs exampleFile.txt
上下分屏::sp exampleFile.txt
跳转到第7行::7
将第11行到第35行的stringA替换成stringB::11,35s/stringA/stringB/g
替换指令是支持正则表达式的,这对于头尾固定的字符串替换非常有用。
Visual Block功能
众所周知,Notepad++非常适合写Verilog,因为它的列编辑非常的方便,只要Alt键与鼠标配合即可同时编辑多列,这与Verilog的语言特征非常适配。与Notepad++类似,Vim也有列编辑功能,通过Visual Block模式实现。在命令模式下,按ctrl+v即可进入Visual Block模式。