vim极为详细的教程(一)基本操作 | 您所在的位置:网站首页 › dlib使用教程 › vim极为详细的教程(一)基本操作 |
vim的总体介绍 我以前是坚定的vim党,但后来用了一次vscode,便再也出不来了。vscode虽然功能强大,但本质上任然是个编译器,它强大的功能来自于对各种经典工具的灵活调用,vscode开发C++本质还是对其他编辑工具的调用,而vim又可以说是这些编辑器中功能最强大,效率最高的,我的vscode也用的是vim模式。要熟练利用vscode开发C++, 推荐熟练掌握vim,必须熟练掌握gdb,json等。 vim常常因其极高的学习门槛劝退很多新手,但这很大程度上是因为市面上缺乏好的vim使用教程,其实只要按合理的顺序学习,vim并不难,而且它有极高的效率。有很多人连vim的基本使用方法都搞不清,便急急忙忙的去学各种插件,最后只能是什么都不懂,然后抱怨这是个垃圾工具。 vim的学习过程我打算将vim详解分为四个章,分别是 vim的基础操作,即vim自带的功能,无需任何安装vim的自带的高级操作,配置文件的配置,比如如何在vim中配置各种映射等等vim各种插件的安装,使用vim与各种工具的配合,这个了解一下就可以了,用vscode调用vim就自带了这部分功能这四章是层层递进的关系,必须要把前一章学好,才能学会使用下一章。 vim遇到问题 vim需要肌肉记忆才能熟练使用,有问题可以到我创建的 QQ群“361863861” 问问题,有些操作在试验后不懂,可以加群讨论。 vim的使用环境我用的是vim最新版,vim8,vim的使用和操作系统无关,ubuntu,centos等都可以,使用vim --version可以查看vim的版本,如果是vim7,建议升级为vim8,vim7在某些功能上可能不支持。 vim的基础操作1-1 初识vim:我是从裸的vim上开始配置的。 (1) 输入vim即可进入vim,输入vim 文件名,即可用vim的去编辑文件。进去之后是normal模式,无法输入任何东西,使用:q可以退出vim。 (2) 要编辑文件,必须进入编辑模式,输入i(insert)即可进入编辑模式,此外输入a(append),o(open a line below)也可以进入编辑模式。i表示在光标的位置插入,a表示在光标后的位置插入,o表示在当前的下一行插入。vim的开发人员为了提高编辑效率,I,A,O也可以进入编辑模式,I表示从该行最前面开始编辑,A表示从从该行最后面开始编辑。 所以,使用i,I,a,A,o,O均可以以不同的方式进入编辑模式。 (3)在编辑模式下,按esc键即可退回到normal模式,normal再输入:q就可以退出vim,输入:wq就可以保存文件,然后退出。 (4)注意:如果对文件进行了修改,输如:q就无法退出文件,必须输入:wq保存退出,或者输入:q!不保存,强制退出。 1-2vim的模式介绍 (1) 很多新手都会想,vim为什么要有那么多模式,而且vim上来要是normal模式,而不是编辑模式? vim弄那么多模式,是为了提升工作效率。 vim上来是nornal模式,是因为我们大部分的工作是在normal模式下进行的,编辑只是很小的一部分。 这两点在vim用多了之后会更有体会。 (2) vim初始是normal模式,输入:可以进入命令模式。在normal模式下输入:q退出vim本质上是在命令模式下输入q,以退出vim。在命令模式下按下esc即可退出命令模式。 在normal模式下,按v键即可进入可视化模式,按下esc键又可以回到normal模式。 1-3vim编辑的小技巧 (1) 在编辑模式下,在我们本次编辑修改的部分,我们可以使用快捷键去修改字符 ctrl + h删除光标前面的字符 ctrl + w删除光标前面的单词 ctrl + u删除光标前面的该行所有内容 (2) 在normal模式下,可以使用hjkl来代替方向键,hjkl分别代表左,下,上,右,这样就可以在手不离开键盘的情况下移动光标。 (3) 在normal模式下,可以按gi键以跳动到从编辑模式退出时光标所在的位置,并进入编辑模式。 1-4normal模式下光标的移动方法 (1) w/W移动到下一个单词的开头,e/E移动到下一个单词的结尾,b/B移动到上一个单词的开头,其中小写的表示以非字母为分割单位(比如冒号,引号,逗号,空格都死分割单位),大写表示以空白符为分割的单位。 (2) 行间字符搜索移动,按f {char},就可以快速移动到char上面,按;/,可以移动到char的下一个字符/前一个字符。f表示从文件开始搜索字符,F表示从文件结尾开始搜索字符。 (3) 如何快速移动到一行的行首或行尾:0移动到一行的第一个字符,$移动到一行的最后一个字符。 (4) vim的页面移动gg/G移动到文件开头/结尾,可以使用ctrl+o快速返回,ngg可以快速跳转到文件第n行。 H/M/L可以快速跳转到屏幕的开头,中间,结尾 ctrl + u,ctrl + f,上下翻页,zz把当前行设置为屏幕的中间 1-5 vim自带的快速增删改查 (1) vim快速删除:在normal模式下 x快速删除光标后的一个字符。 使用d配合文本对象可以快速删除一个单词,比如daw(delete around word),dw,diw。daw表示删除光标所在的单词,包括单词旁边的空格。dw表示删除光标后面的单词,diw表示删除光标所在的单词,但不包括单词旁边的空格。dt{char}表示从光标位置删除到char之前的字符。 (2) vim的快速修改,在normal模式下 常用的有三个,r(replace),c(change),s (substitute)。 r可以替换一个字符,s删除当前字符并且进入插入模式 c可以配个文本对象快速修改一个单词,cw,ciw,caw只不过是在dw,diw,daw删除的基础上同时进入插入模式。 (3) vim的查询操作,查询单词也是一个常用的操作 使用/或者?进行前向或反向的搜索,使用n/N跳转到下一个/上一个的匹陪对象,例如/time表示搜索time这个单词,按n表示下一个。 使用*/#进行匹配,光标在一个单词上,*/#表示上一个/下一个同样的单词 1-6 vim如何进行替换 vim中替换的格式为:[range]s/{string1}/{string2}/[flags] range表示要替换的范围,比如10,20表示10-20行,%表示全部 string1表示要替换的字符串 string2表示替换成为的字符串 flags表示标志,常用的有g(表示全局范围内执行),没有g的话,每一行只会替换一行中第一个匹配成功的。c表示确认,在进行替换时我们可以选择是否进行替换,n表示匹配的次数·,但不进行替换。 比如:%s/my/you/g, 表示把文件中所有的my替换成you。而且string1和string2都是支持正则表达式的。 |
CopyRight 2018-2019 实验室设备网 版权所有 |