0


【Linux】不得不掌握的开发工具 —— vim


🌵前言

大家好啊,我是不一样的烟火a,今天我将为大家讲解一下Linux中不得不掌握的开发工具 —— vim。文章将会为大家详细讲解vim中常用的命令,相信看完的小伙伴都能快速掌握vim的使用,由于vim的命令比较多,所以建议大家收藏反复观看。那么废话不多说,开始我们今天的内容。


🌳一、Linux开发工具

小故事:

    在开始讲之前,先给大家讲个故事。从前有个人叫张三,他是刚接触计算机不久的一个小白,他平时写C/C++代码都是在vs2019这个软件上写的。一天,他的学长问他,张三啊,你平时写C/C++代码一般都是在什么环境下写的啊,张三毫不犹豫的回答说是vs2019;学长又问他,那你调试代码一般用的什么工具呢?张三想了想说,不就是vs2019吗;于是学长又问,那你一般编译代码用什么工具呢?张三这时心里想,这学长脑子不是被门夹了吧,这不还是vs2019吗;当学长又问,那你编译链接用的......,学长这时话还没说完,张三就抢先说vs2019,并告诉学长说都是vs2019,别再问了,于是张三用看傻子的目光送走了学长。(但是张三殊不知,学长这时也把张三当傻子在看了)

其实像vs2019这样的程序被叫做集成开发环境。

集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。所有具备这一特性的软件或者软件套(组)都可以叫集成开发环境。

虽然集成开发环境能让我们用起来更舒服,但是它给我们带来好处的同时也带来了很多问题,比如我们下载安装的时候特别慢,有可能我们下载的一些组件到我们电脑报废了都没用过一次。所以Linux下就是把这些工具都裁开,一个工具只负责一个功能。所以在Linux下编写代码就用vim,编译代码就用gcc/g++,调试代码就用gdb,运行或者自动化构建程序就用make和makefile。(这些软件我后面的文章里面都会一一讲解,今天主要讲解编写代码的工具——vim)

🌳二、vim的基本概念

简单介绍:vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window、 mac os、 windows。

强调:vim是一个编辑器,意思就是说vim只能写代码,其他的什么都干不了。所以vim工具的功能重点就是如何让我们能更快更好的写出代码。至于这个代码在编译时能否通过,就跟vim没有任何关系了。

vim下最重要的三种模式:

  • 正常/普通/命令模式(Normal mode):控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode
  • 插入模式(Insert mode):只有在Insert mode下,才可以做文字输入,按 [ESC ] 键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。
  • 底行模式(last line mode):文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,shift + " : "** **即可进入该模式。如果要查看你的所有模式:打开vim,底行模式直接输入:help vim-modes

查看vim所有的模式:

先输入命令进入vim。

命令:vim

如果你出现跟我一样的界面,那么就说明,你的Linux下是存在vim的,vim一般都会被默认安装。

我们在底行模式下输入下面指令。

命令:help vim-modes

在这里就可以查看所有的模式了。后面我会教大家如何退出vim,这里先不急。

🌳三、vim的基本操作

进入vim:在系统提示符号输入vim及文件名称后,就进入vim全屏幕编辑画面。

命令:vim [文件名]

提示:如果要用vim进入的文件不存在的话,vim会自动帮你创建这个文件。

进入vim后就是这样的界面。不过有一点要特别注意,就是你进入vim之后,是处于 [正常模式],你要切换到 [插入模式] 才能够输入文字。

[正常模式] 切换至 [插入模式]:

  • 输入a
  • 输入i
  • 输入o
  • 按下这几个字母中任意一个就可以进入 [插入模式]。

我们按下i后就进入了[插入模式]。

在插入模式下我们就可以写代码了。

[插入模式] 切换至 [正常模式]:

  • 目前处于 [插入模式],就只能一直输入或者删除文字,如果想要转到[正常模式],只用按一下 [ ESC ] 键即可。

[正常模式] 切换至 [底行模式]:

  • [shift + ;], 其实就是输入 [:]

退出vim并保存文件,在 [正常模式] 下,按一下 [:] 冒号键进入 [Last line mode] ,输入:

  • **: w **(保存当前文件)
  • :q(退出当前文件)
  • **:wq **(输入 [wq] ,存盘并退出vim)
  • :q! (输入q!,不存盘强制退出vim)
  • 这里的!表示强制的意思,如果是w!,就表示强制保存。

我们这里输入 :wq 回车一下,保存并退出文件。

我们用cat命令打印出文件内容,证明保存成功。(并且,vim自动为我们创建了这个文件)

🌳四、vim正常模式命令集

🌱1.进入/退出插入模式

提示:进入vim,默认处于正常模式。

插入模式:

  • 按 [ i ] 切换进入插入模式 [ insert mode ],按“i”进入插入模式后是从光标当前位置开始输入文件。
  • 按 [ a ] 进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字。
  • 按 [ o ] 进入插入模式后,是插入新的一行,从行首开始输入文字。

从插入模式切换为命令模式:

  • 按 [ ESC ] 键。

🌱2.移动光标

移动光标:

  • vim 可以直接用键盘来上下左右移动,但是正规的 vim 是用小写英文字母 [ h ]、[ j ]、[ k ]、 [ l ],分别控制光标左、下、上、右移一格。但是要注意,只有在普通模式下才可以通过字母来移动光标哦。(这里提供一个记忆方法, [ h ]、[ j ]、[ k ]、 [ l ] 这四个字母是顺序排列在一行的,[ h ]是最左边的那个字母,所以就对应左移;[ l ]是最右边的那个字母,所以就对应右移;[ j ]可以看成单词jump(跳)的首字母,而跳是往下跳,所以就对应下移;[ k ]可以看成单词king(国王)的首字母,而国王是高高在上的,所以就对应上移)
  • 按 [ G ]:移动到文章的最后。
  • 按 [ $ ]:移动到光标所在行的“行尾”。
  • 按「^」:移动到光标所在行的“行首”。
  • 按「w」:光标跳到下个字的开头。
  • 按「e」:光标跳到下个字的字尾。
  • 按「b」:光标回到上个字的开头。
  • 按「#l」:光标移到该行的第#个位置,如:5l
  • 按[gg]:进入到文本开始。
  • 按[shift+g]:进入文本末端。
  • 按 [ ctrl ] + [ b ] :屏幕往“后”移动一页。
  • 按 [ ctrl ] + [ f ] :屏幕往“前”移动一页。
  • 按 [ ctrl ] + [ u ] :屏幕往“后”移动半页。
  • 按 [ ctrl ] + [ d ] :屏幕往“前”移动半页。
  • 提示:一定要看清是大写还是小写字母哦。

🌱3.删除文字

删除文字 :

  • [ x ]:每按一次,删除光标所在位置的一个字符。
  • [ #x ]:例如,[ 6x ] 表示删除光标所在位置的“后面(包含自己在内)”6个字符。
  • [ X ]:大写的X,每按一次,删除光标所在位置的“前面”一个字符。
  • [ #X ]:例如,[ 20X ] 表示删除光标所在位置的“前面”20个字符。
  • [ dd ]:删除光标所在行。
  • [ #dd ]:从光标所在行开始删除#行。

🌱4.复制粘贴

复制:

  • [ yw ]:将光标所在之处到字尾的字符复制到缓冲区中。

举例:

我在这个位置按下yw,就可以复制printf这个字了。

然后我们粘贴,就把我们复制的printf粘贴出来了。

  • [ #yw ]:复制#个字到缓冲区。

举例:

我们在这个位置按下2yw,就可以复制 hello 和 vim 这2个字了。

然后粘贴。

  • [ yy ]:复制光标所在行到缓冲区。
  • [ #yy ]:例如,[ 6yy ] 表示拷贝从光标所在的该行“往下数”6行文字。
  • [ p ]:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。
  • [ #p ]:例如,[ 100p ] 表示将缓冲区内的所有内容粘贴100次到光标位置。

🌱5.替换

替换:

  • [ r ]:替换光标所在处的字符。

举例:

我们在光标这个位置先按下r,再按下w,就可以把字符p替换成字符w。

替换完成。

  • [ R ]:替换光标所到之处的字符,直到按下 [ ESC ] 键为止。(按下 [ R ] 进入替换模式,只要不退出就可以一直替换,按下 [ ESC ] 退出替换模式)

举例:

我们这个位置按下 [ R ] 就可以开始替换。

进入替换模式。

替换完成,按下 [ ESC ] 返回普通模式。

  • [ shift + ~ ]:大小写相互转换,将光标位置当前的字母进行大小写转换,可以快速的转换大小写字母。

🌱6.撤销与恢复

撤销上一次操作:

  • [ u ]:如果您误执行一个命令,可以马上按下 [ u ],回到上一个操作。按多次“u”可以执行多次恢复。
  • [ ctrl + r ]: 撤销恢复。

注意:如果保存退出vim后,下次再进来就撤销不了上次的操作了,只能撤销当前进入vim的所有操作。

🌱7.更改

更改:

  • [ cw ]:更改光标所在处的字到字尾处。

举例:

在此处按下 [ cw ],vim就会把当前字删除,并且进入插入模式。

删除当前字,进入插入模式。

  • [ c#w ]:例如,[ c2w ] 表示更改2个字。

举例:

在此处按下 [ c2w ],vim就会删除2个字(包括当前字),并且进入插入模式。

删除2个字,进入插入模式。

🌱8.跳转

跳至指定的行:

[ #G ]:例如,[ 15G ],表示移动光标至文章的第15行行首。

🌱9.批量注释与删除

如何批量注释:

Ctrl + v 进入块选择模式,然后移动光标选中你要注释的行,再按大写的 I 进入行首插入模式输入注释符号,如 // 或 #,输入完毕之后,按两下****ESC,Vim 会自动将你选中的所有行首都加上注释,保存退出完成注释。

举例:

先Ctrl + v 进入块选择模式。

移动光标选择要注释的行。

按下大写的i进入行首插入模式。

输入注释符号。

按下两下ESC。

取消注释:

Ctrl + v 进入块选择模式,选中你要删除的行首的注释符号,注意 // 要选中两个,选好之后按 d 即可删除注释,ESC保存退出。

Ctrl + v 进入块选择模式。

选中你要删除的行首的注释符号。

按 d 删除注释。

🌳五、vim底行模式命令集

☘️1.温馨提示

提示:在使用底行模式之前,请记住先按 [ ESC ] 键确定您已经处于正常模式,再按** [ : ]**冒号即可进入底行模式。

☘️2.列出与取消行号

列出行号:

  • [ set nu ]:输入 [ set nu ] 后,会在文件中的每一行前面列出行号。

举例:

在底行输入 [ set nu ] 后,按下回车即可设置行号。

取消行号:

  • [ set nonu ]:输入 [ set nonu ] 后,将会取消设置的行号。

举例:

在底行输入 [ set nonu ] 后,按下回车即可取消设置的行号。

☘️3.跳转

跳到文件中的某一行:

  • [ # ]:[** **# ] 号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字12, 再回车,就会跳到文章的第12行。

举例:

光标初始位置在第三行。

我们在底行输入12,即可将光标跳转到12行。

☘️4.查找

查找字符:

  • [ /关键字 ]:先按 [ / ] 键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按 [ n ] 会往后寻找到您要的关键字为止。
  • [ ?关键字 ]:先按 [ ? ] 键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直 按 [ n ] 会往前寻找到您要的关键字为止。

☘️5.替换字符

替换字符:

格式:[ range ] [ s ][ / ][ pattern ] [ / ] [ string ] [ / ][flags] [count]

解释:

  • **[range]**表示区间,% 用于表示全文;2,3 表示从第2行开始到第3行。
  • **[ s ] **表示substitute,也就是替换的意思。
  • **[ / ] **表示分隔符。
  • **[ pattern ] **表示字符串匹配规则,要匹配什么样的字符串 , 比如^a 表示以a字符起始的字符串。
  • **[ string ] **表示要将匹配到的字符串替换为的新的string字符串。
  • **[flags] **s_flags中,g比较常用,通常使用g表示全部替换,默认如果不给的话,表示只替换一次。
  • **[count] **表示在一行中匹配多少次,很少会用到....
  • 如果想要将文件中所有 Hello 替换为 abcdef 则命令为: %s/Hello/abcdef/g

举例:

初始状态。

将文件中第11行~12行的所有 Hello 替换为 abcdef。

如果想要将文件中所有 Hello 替换为 abcdef。则用%即可表示全文范围。

命令:%s/Hello/abcdef/g

☘️6.分屏操作

分屏操作:

  • [ vs ] [ 文件名 ]:在底行模式下输入[ vs ] [ 文件名 ],就可以实现分屏操作了。
  • 分屏后光标在哪个文件,就进行对哪个文件的操作
  • 分屏后进入底行,光标在哪个文件,就处于哪个文件的底行。
  • 如何切换屏幕(文件):[ctrl + 按2下w]

举例:

底行输入要添加的文件。

实现分屏,如果file.c文件不存在,vim将会自动创建这个文件。

[ctrl + 按2下w] 切换文件。

还可以用 [#yy] 复制test.c文件的内容,然后切换文件,用 [p] 复制到file,c文件上。

想要退出哪个文件就在哪个文件的底行输入 [wq] 即可保存退出。

☘️7.不退出vim执行其他命令

不退出vim执行其他命令:

  • [! + 对应命令]:可以不用退出vim就执行其他命令。
  • 按回车,即可快速重新回到vim。
  • 常见情形:执行命令行命令、编译、运行、查看man等。
  • 注意:这里的 [ ! ] 与强制符号 [ ! ] 不一样,这里的 [ ! ] 是放在命令首位,而强制符号是放在命令末尾。

举例:

查看man手册。

按q退出man手册。

按下回车快速返回vim。

不退出vim,编译当前代码。

不退出vim,用ls查看当前目录下的文件。

发现当前目录下存在,刚才编译好的可执行文件。

不退出vim,运行编译好的可执行文件。

成功运行。

按下回车,快速返回vim。

☘️8.保存退出

[底行模式] 切换至 [正常模式]:

  • 按2下ESC。
  • 或者删除 [ : ] 冒号。
  • 执行完一条命令后自动返回正常模式。

保存文件:

  • [ w ]: 在冒号输入字母 [ w ] 就可以将文件保存起来。

离开vim:

  • [ q ]:按 [ q ] 就是退出,如果无法离开vim,可以在 [ q ] 后跟一个 [ ! ] 强制离开vim。
  • [ wq ]:一般建议离开时,[ q ] 搭配 [ w ] 一起使用,这样在退出的时候还可以保存文件。

🌳六、vim操作总结

最主要的三种模式

  • 正常模式
  • 插入模式
  • 底行模式
  • 一共有12种总模式,其他模式大家可以自信查阅,因为用得不多,这里就不过多讲述。

简略汇总图:

温馨提示:

vim的操作太多,我们是不可能完全记住,想要记住的话,只有我们每天不断的用vim,才能更好的让我们熟悉vim的操作。

🌳七、简单vim配置

🍀1.简单介绍

其实我们上面讲的这些都是在没有配置的vim下讲的,细心的小伙伴一定会发现,其实在这样的vim跟在记事本上写代码没有多大区别,既没有自动对齐,也没有自动补全功能。如果你想要让你的vim拥有这些功能,就必须给vim配置一下。

🍀2.配置原理

配置的时候我们需要在自己的用户家目录下创建一个 " .vimrc " 文件。

进入用户家目录命令:

命令:cd ~

一般没有配置过vim的用户,家目录下都没有 " .vimrc " 这个文件。所以需要我们自己创建一个。

** 配置原理就是:**当我们打开vim的时候,vim就会自动读取你配置的这个 " .vimrc " 这个文件,然后就可以实现你想要的效果了。

在我们配置之前先看看我们vim原始的效果。

下面我们开始配置我们的vim。

这是我提供给大家的一些简单的配置,需要哪个就把该命令复制到你的 " .vimrc " 文件,然后保存即可。(如果需要更多的配置命令,大家可以在网上搜索一下)

syntax on   "高亮代码"
set nu                        "显示行号"
set relativenumber   "以当前行号为基准显示行号"
set cursorline  "在当前光标位置显示一条线
set tabstop=4                  "tab长度设置为4"
""set softtabstop=4
set shiftwidth=4            "设置缩进空格数为4"
set autoindent           "设置自动缩进,每行缩进值与上一行相等"
set nobackup                "覆盖文件时不备份"
set cursorline              "突出显示当前行"
set ruler                    "在右下角显示光标位置的状态行"   
set autoindent             "自动缩进"
set noexpandtab          " 不要用空格代替制表符
set hlsearch                  "搜索逐字符高亮
set foldmethod=marker        "代码折叠
set cmdheight             " 命令行(在状态行下)的高度,默认为1,这里是2
set mouse=a                   " 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位)
set showmatch                 " 高亮显示匹配的括号

set enc=utf-8                 "编码设置
set langmenu=zh_CN.UTF-8      "语言设置
set helpheight=15             "帮助的行高
set helplang=cn               "帮助语言
set fillchars=vert:\ ,stl:\ ,stlnc:\      " 在被分割的窗口间显示空白,便于阅读
set showmatch                 " 高亮显示匹配的括号
set scrolloff=3               " 光标移动到buffer的顶部和底部时保持3行距离
set smartindent               " 为C程序提供自动缩进

我们这里先来配置一下行号。

配置完后,从新进入vim,就可以自动显示行号了。

如果还想配置其他的功能,只用把需要的功能对应的命令复制粘贴到你的 " .vimrc " 文件上,然后保存即可。这里就不过多讲解了。

如果你还想要让自己vim功能更加的强大,那么还需要再创建一个 " .vim " 目录,用于存放各种的插件。你可以在网上把你想要的插件下下来,然后放进 " .vim " 目录,就可以拥有对应的功能了。

🍀3.快速配置vim的安装包

虽然上面讲了vim配置的原理,也讲了该如何配置。但是如果自己去配置的话始终还是太麻烦了,自己需要的功能对应的命令还要一个一个的复制粘贴过来;如果你还要下插件的话,有可能你自己在网上找的插件下下来后,你自己都找不到它在哪。以至于让自己在配置vim上花费很多时间。

于是,我为了帮助大家节省时间,不想让大家花费太多的时间用在vim配置上,于是我花了3天3夜的时间在gitee上面帮大家找到了一个十分美观简洁,且方便好用的vim配置安装包(支持显示行号、自动补全、自动对齐等常用功能)

配置前的效果:

配置后的效果:

** 如何安装:**

在 shell 中执行指令(想在哪个用户下让vim配置生效, 就在哪个用户下执行这个指令. 强烈 "不推荐" 直接在 root 下执行)

命令:curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh

注意:此安装包目前只支持 Centos7 x86_64,不支持Ubuntu。

举例:

复制上面的命令,粘贴到命令行,然后按回车,最后输入你的root密码后即可开始安装。

正在安装中。

安装完成。

安装完成后,执行以下命令后,配置就可以生效了。

命令;source ~/.bashrc

安装完后,用户家目录下就会多出这几个文件和目录。 其中install.sh是使用这些功能需要的脚本,不想用的时候删去即可。

如何卸载:

在安装了 VimForCpp 的用户执行以下命令即可卸载。

命令:bash ~/.VimForCpp/uninstall.sh

额外补充:

这个安装包里面vim的配置,默认是将缩进设置为2的,如果觉得用起来不习惯可以自己改成4。

下面为步骤:

还是在家目录下进入**" .vimrc "** 这个文件,安装包里面自己就会帮你创建。

找到第50行,将这三行的2都改成4即可。

更改完后保存退出即可。

安装包来源:VimForCpp: 快速将vim打造成c++ IDE (gitee.com)

安装包里面的详细内容和所有功能可以在这里查看。

总结:

  • vim的具体配置我们不关心,因为比较麻烦。
  • 但是我们需要一个不错的配置,所以需要稍微了解一下vim配置的原理。
  • 一般在配置的时候,是你自己配置你自己的,在当前用户下配置完成后,只有在当前用户下能起作用,对其他用户是没有影响的。但是强烈建议不要在root用户下配置,因为如果在普通用户下配置错了,我们可以直接把普通用户删掉即可;但是如果在root下配置错了后,就会很麻烦了。

🌳八、vim高清键盘图

💧1.英文版

🔥2.中文版


🎄总结

到这里我们vim的讲解就结束了,相信大家都能够看懂,希望大家在学习vim的期间里一定要多使用vim,这样才能更快的让自己掌握vim的使用。如果大家有什么解决不了的问题,欢迎大家评论区留言或者私信告诉我。如果感觉对自己有用的话,可以点个赞或关注鼓励一下博主,我会越做越好的,感谢各位的支持。

标签: linux vim 经验分享

本文转载自: https://blog.csdn.net/qq_64042727/article/details/127037655
版权归原作者 不一样的烟火a 所有, 如有侵权,请联系我们删除。

“【Linux】不得不掌握的开发工具 —— vim”的评论:

还没有评论