欢迎来到博主的专栏:从0开始linux
博主ID:代码小豪
文章目录
- vim的多种模式
- 底行模式命令
- 命令模式
- 视块模式(visual block)
- vim的配置
vim是linux系统的文本编辑器。就像windows的记事本一样。
使用vim指令可以使用vim打开一个文本文件。
vim [文件名]
比如,我们可以使用lysb666(普通用户)在/home/lysb666下创建一个code.c文件
touch code.c
vim code.c
此时,我们将code.c文件以vim打开。
vim的多种模式
vim本身有多种模式,但是常用的模式主要有三种,掌握这三种模式就可以基础使用vim编辑器了。如果有用上其他模式的场景,博主再进行补充。
当我们刚打开code.c时,并不能对该文件进行文本编写。这是由于vim有三种模式。
- 在默认情况下,vim处于命令模式,此时我们只能使用命令对vim进行操作
- 在命令模式下,输入i可以进入插入模式。在插入模式中,我们可以对文件进行文本编辑。
- 在命令模式下,输入:(shirt+;),可以进入底行模式,在底行模式当中可以输入指令让vim编辑器进行打开其他文件,保存并退出,等操作。
- 当我们处于插入模式或底行模式时,按下esc可以回退到命令模式。
现在我们在命令模式下输入i进入插入模式,并且写上一个简单的代码。
在插入模式下,可以使用vim进行文本编辑,因此插入模式的功能很简单,现在我们按下esc回退到命令模式,然后shirt+;进入底行模式。
底行模式命令
进入底行模式后,光标会来到最底行,我们就可以在底行输入命令让vim进行对应操作。
比如:
[w]:保存文件
[q]:退出vim
[wq]:w和q的组合命令,保存并退出vim
[set number]:让文本显示行号,输入简写[set nu]也是同样的操作。
[no number]:让文本不显示行号,输入[no nu]也行
[n]输入一个数字n,让光标跳转到第n行。比如输入5,就会跳转到第5行
[/ string]输入/,并在后面写上一个字符串,会跳转到第一个重复的字符串,并且将其余相同的字符串高亮显示,为了演示这个操作,博主将printf(“hello world”)复制粘贴了十行,如果在底行中输入/hello,那么文本当中将hello字符串显示高亮,按下[n]键光标会跳转到下一个hello上。
[? string]输入?,并且写上一个字符串,会跳转搭配第一个重复的字符串,相同的字符也会高亮,但是按下[n]键,光标会跳转到上一个相同的字符串上。
多窗口模式
有时候需要同时对两个文件进行操作(比如将一个文件的部分内容,复制到另外一个文件当中)。如果我们要频繁的关闭,打开其他文件,还是非常不舒服的,如果能像我们使用windows打开浏览器的时候一样,可以多个窗口,那样不就方便许多了吗?
[vs]vs+文件名可以在多窗口的情况下对两个文件进行操作,比如博主这里创建一个空的文件名为text.txt。
在底行模式中输入vs text.txt
,可以多窗口的打开text。txt和code.c文件。
由于窗口有多个。而光标只有一个,有时候我们需要让光标跳转到其他文件当中进行操作
[ctrl+w+w]:光标跳转到下一个文件
此时,我们可以尝试将code.c的内容复制粘贴到text.txt文件当中。
命令操作
命令模式
在插入模式当中,除了esc键,其余按键都会被当做数据输入,而在底行模式当中,除了esc键,其余按键都会当成指令。因此,只有命令模式才能用按键作为命令进行操作。
光标移动按键
[h]:向左移动一个字符,相当于(←)键
[j]:向下移动一个字符,相当于(↓)键
[k]:向上移动一个字符,相当于(↑)键
[L]:向右移动一个字符,相当于(→)键
一个一个字符移动还是很麻烦的,我们可以在这些按键之前加上数字,比如输入20j,即光标向下移动20个字符
[shift+h]:光标移动到第一行的第一个字符
[shift+g]:光标移动到最后一行的第一个字符
[n+gg]:光标移动到第n行,比如3gg就移动到第三行,而gg则相当于1gg,即移动到第一行
[shift+4]:光标移动到行尾
[shift+6]:光标移动到行首
修改操作
如果修改文本只会在插入模式当中一个一个字符操作,那么肯定会很痛苦的,我们可以在命令模式下进行一些批量的修改操作
[x]:删除当前光标的字符(相当于delete键)n+x则可以批量的删除字符,比如10x,相当于delete10次
[shift+x]删除光标以前的字符(相当于bacjspace键)也可以n+shift+x,同理。
[dd]:剪切光标指向的一行,n+dd则将光标以下的n行进行剪切,比如20dd则是剪切光标以下20行的数据
[yy]:复制光标指向的一整行,可以n+yy批量复制,同上。
[p]将剪切或复制的内容粘贴到当前光标指向的下一行,可以n+p,即将复制的内容连续粘贴20次。
[shift+p]:将剪切或复制的内容粘贴到当前光标指向的上一行,可以n+shift+p,同上
[u]撤销上一次的操作。类似于word当中的ctrl+z。
[ctrl+r]回到上一次的操作。
视块模式(visual block)
在命令模式下,对于文本的操作都是以行为单位的操作,如果想要像windows一样对块进行操作,就要用上vim的视块模式。
按下[v]进入视图模式,按下[ecs]回到命令模式。
在视图模式下,输入不同的命令会有不同的功能:
[v]:将光标经过的字符进行旋转:类似于上面的操作
[shift+v]:将光标经过的行进行选择,如下:
这些变色处理的字符就是选中的文字。
[ctrl+v]:块选择,如下:
[y]将选中的字符进行复制
[d]:剪切选中字符
[p]:粘贴刚刚复制或剪切的字符
批量修改文本
如果我们想要注释掉一整段代码,如果一行一行输入是不是有点太慢了。我们在视块模式下,[ctrl+v]进入块选择模式,选中我们要加上注释的位置,然后[shift+i]进入插入模式,写上//,然后按两次esc,批量注释就搞定了。
注意左下角的状态变化
vim的配置
如果我们熟悉了用vs2022这种集成开发环境,那么使用vim这种比较原始的工具肯定不太适应的,不过好在在网上可以找到vim的插件。
比如自动缩进,自动补齐,以及文本高亮之类的功能,能让我们在使用vim编程的时候更有效率。比如博主的vim配置就是这样的:
关于vim的配置方案,大家在网上根据自己的需求寻找就行。