【Linux】顶级编辑器Vim的基本使用及配置

简介: 【Linux】顶级编辑器Vim的基本使用及配置

一、前言


62e71b91337a45348d9f01b9987b22a5.png

今天 a n d u i n anduin anduin 将为大家讲解 Linux 下一款功能十分强大的编辑器 vim 。vim 十分好用,但是好用的前提是 熟练度 + 配置 两者都有的情况下才能得心应手。而新手对于 vim 是很难操作的,所以今天我们会讲解 vim 的基本使用,并且讲解 vim 相关的配置。帮助大家快速上手 vim 编辑器。





二、vim基本概念



vim 是一个功能非常强大的全屏幕文本编辑器,在 Linux 中,vim 编辑器被广泛使用。因为其功能丰富,尤其受程序员喜爱。


vim 也是一个类似于 vi 的著名的功能强大、高度可定制的 文本编辑器 ,在 vi 的基础上改进和增加了很多特性。


vim 和 vi 一样,是多模式编辑器,不同的是 vim 是 vi 的升级版本,它不仅兼容 vi 的所有指令,并且糅合了一些新的特性在 vim 中。例如语法高亮、可视化操作,这些不仅可以在终端运行,也可以也可以运行于 x window、 mac os、windows 。


区分编辑器和 I D E IDE IDE :


   可能我们之前就是在 vs2022 、Devc++ 上写代码,在这类 I D E IDE IDE 中,一个软件就可以涵盖所有功能,包括编辑,编辑,调试等等;而我们的 vim 是编辑器,单纯是写代码的。如果要编译则需要用到 gcc,g++,调试需要用到 gdb 。工具之间互相独立,虽然 vim 可以对功能进行整合。但是还是要拎清概念:vim 是一款编辑器。


vim 拥有的模式一共有 12 12 12 种模式,但我们 真正常用的只有三种 :命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode) 。所以我们今天在将 vim 基本操作时,主要围绕这三种模式进行讲解:


先了解一下这三种模式:


   正常/普通/命令模式(Normal mode)


   控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode 。命令模式的功能很丰富,使操作便捷。


   插入模式(Insert mode)


   只有在Insert mode下,才可以做 文字输入 ,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。


   底行模式(last line mode)


   文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,shift+: 即可进入该模式。如果要查看你的所有模式方法为打开vim,底行模式直接输入 :help vim-modes




三、vim 基本操作


首先,我们先讲讲最基本的操作,不说原理,只看操作。

当我们在终端输入 vim 时,会弹出这个界面:

166e0d0102bcbcceaaf09e9571f9e4ca.png


这个就是我们 vim 的界面,如果要退出,那么就需要按下 : q ,退出。


而 vim 另一个最基本的操作就是以 vim 方式打开文件,指令:vim file ,这里的 file 为文件名,如果文件不存在,当保存并退出 vim 时,会自动创建该文件。如果文件存在,则会直接打开文件。但是此刻,我们是不能进行输入操作的。


初识 vim 后,我们提出两个问题:


   : q 为什么可以退出界面?是和模式有关吗?


   之前说到过模式,那么 vim file 进入的界面默认是什么模式?为什么不能输入?


大家先别着急,因为我们接下来讲解的就是三种模式的基本操作,而这两个问题在我讲完三种模式的操作时,大家自然也就明白了,所以我们接着往下看~



1、模式切换


vim 默认打开为 命令模式 ,命令模式下,是无法进行输入操作的。在命令模式下,可以实现对各种模式的切换,比如:



       命令模式 切换至 插入模式 :按 i / a / o 进入插入模式,三种方法都具有不同的效果。


       命令模式 切换至 底行模式 : shift : 两个键同时按住进入模式。进入模式后,在 vim 左下角出现了 : ,q 直接退出 ; wq :w 保存,q 退出,保存退出。


       任意模式 切换至 命令模式 :按 E S C ESC ESC ,直接切换至命令模式。


对于上面的切换操作可以用一张图表示:


36ee37d4c7d066d4e51f37fd12c00ecb.png


了解了这些,我们相当于已经学会了 vim 的最小集(能操作但不多),基于这些,我们尝试在 vim 下写一段代码:

3522d629292244caa84a0118c49858ee.gif


2、命令模式


命令模式的目的就是让 vim 编辑更加高效



在命令模式下,我们可以使用 h 、j 、k 、l 进行 左、下、上、右 的光标移动。这种规定可以使得操作更加高效,集中。


下面,我们对常用命令做出一些整理(下面出现的 n 均代表数字) :


复制粘贴剪切 :


       yy / nyy :复制光标所在行或者复制包含当前行在内的 n 行


       p / np :粘贴一行或多行相同内容到当前光标所在行之下


       dd / ndd :对当前行或者当前行在内的 n 行的内容进行剪切,移动光标到目标行进行 p 粘贴(只剪切,不粘贴相当于就是删除)


撤销 :


       u :撤销上一步操作


       ctrl + r :对撤销进行撤销


   撤销只能对于本次操作内,退出保存再次操作时,是无法撤销的。


光标定位:


   对全局文档:


       shift g :将光标定位到文档结尾


       gg :将光标定位到文档开头


       n shift g : 将光标定位到文档指定行


   对局部长文本行(例如若干行100字符长度,行内快速定位):


       shift $ :将光标定位到当前文档行的结尾


       shift ^ :将光标定位到当前文档行的开头


       w / b :按照单词为单位,进行后 / 前移动(单词定义:对于长串字符组成的非单词也认为是单词)


       nw / nb :默认单词数从 0 开始,进行后 / 前移动 n 个单词间距


文本编辑 :


       shift ~ :对文本行进行快速大小写切换,小写转大写,大写转小写。按住不动默认一直切换,直到文本行末尾


       r 字符 / nr 字符 :替换光标所在的字符或者对于 n 个字符文本行进行批量化替换;如果 n 超过文本行长度,则不会进行替换


       shift r :进入替换模式,该模式输入什么则对光标位置完成对等的替换,按退格键删除就是复原

       x / nx :对文本行内进行向后删除或者对光标开始 n 个字符进行向后删除,按住不动默认一直删除,简单概括:行内删除,左侧–>右侧


       shift x / shift nx :行内删除,右侧–>左侧


由于命令行模式指令较多,且部分指令单独演示起来效果不太好,所以我就完整演示一下 光标定位组 ,大家看一下效果即可:


d9a2b6e4ca5f4ff395855898e6054880.gif



3、插入模式


  • 按 i 进入插入模式后,从光标当前位置开始输入
  • 按 a 进入插入模式后,光标往后跳转一个字符,从跳转后位置开始输入
  • 按 o 进入插入模式后,另起新的一行,从行首开始输入





4、底行模式


命令模式按 shift 进入底行模式。


调出 / 隐藏行号

  • set nu :显示行号
  • set nonu :隐藏行号


8c7ff926a0124c7781d1d251c84b691c.gif



搜索

  • : /关键字 :按照关键字搜索数据,并显示高亮


31bd08f3db3d49b7bd39c3b6d7cb1dd9.gif


保存和退出


  • w :保存
  • q :退出
  • wq :保存并退出
  • w! :在写保护文件情况下无法保存,强制保存。 ! 代表强制
  • q! :强制退出
  • wq! :强制保存并退出




强制的前提是 有权限 ,没权限照样不能强制。 ! 适用于强行修改写保护文件或配置文件等操作。

不退出 vim 执行 shell 命令


底行模式中,可以通过 !command 来完成不退出 vim ,执行 shell 指令,例如我们执行 ls -l 指令:


e204e3b32fc6483485644db659a4a07c.gif


执行命令之后,会跳转到终端,这时按下 Enter 键返回。

批量替换数据


%s///g,可以对数据进行批量替换,g 代表全局,例如: %s/hello/HELLO/g ,是对全局中,将 hello 替换为 HELLOd73db9e621414108bbd5b58c1fc8aa4a.gif



分屏 :


在底行模式下使用vs file :创建一个 file 文件,这样就可以分屏。


如果想要知道我们当前处于哪个屏幕,只要明确一点:在 vim 中,光标在哪里,我们就是在编写哪个文件


通过 ctrl + ww 我们就可以切换到不同界面,分屏可以支持多个,但是推荐一般分屏 2 - 3 个就够用了,如果对于退出文件还是常规操作,下面我们全部演示一下:


8d46369447494581b8e05803d82d90e4.gif





四、vim 的配置



我们上面演示操作的时候,可以发现当前使用的 vim 编辑器,没有智能化补全,没有缩进,连 tab 键都是八格,使用起来非常不方便。所以我们的 vim 通常需要配置。所谓配置,就是按照固定方法,让 vim 编辑器编写代码更加舒适,更加利于使用。


通常 vim 配置有两种方案:自定义配置 或 自动化配置 。


自定义配置:


自定义 配置,就是按照自己的喜好配置,但是配置的时候可能会遇到很多问题,所以接下来我们简单就讲一下原理。


vim 在启动时,会自动在当前用户的 家目录 下,寻找配置文件,如果没有,就是默认配置。



2d44da03adce1d5b43d70f28c66e0c5e.png



当前我们是没有配置文件的,所以需要手动创建一个:

[lx@VM-4-3-centos ~]$ touch .vimrc


d0f41ac54393f1cf79c40c536b292a41.png


现在 .vimrc 就是当前用户的配置文件。一个用户对应一个 vim 配置,如果只对当前用户进行配置,是不会影响其他用户的

使用 vim .vimrc 打开配置文件,进行相关配置,保存并关闭后,打开 vim ,这些配置会立马生效。

例如,我们随意进行一些配置:

set nu
syntax enable
set cursorline
set expandtab
set tabstop=4
set shiftwidth=4
set smarttab
set autoindent
set encoding=utf-8
set termencoding=utf-8
set smartindent
inoremap ( ()<ESC>i
inoremap [ []<ESC>i
inoremap { {}<ESC>i
inoremap < <><ESC>i  



这些可以完成一些基本配置,但是还是有一些问题的,比如成对大括号出现无法智能缩进等…

如果想要自定义配置的好的话,可以去查找一下资料,研究一下,配置出自己心仪的 vim ,虽然过程可能比较繁琐,但是一切都是为了自己的写代码时的舒适度。


博主是比较懒惰,对于一些细节要求也不多,所以采用的是第二种配置方案。


自动化配置 :


这种就是博主使用的配置方案。


某神为了解决小白在配置 vim 时十分繁琐的问题,于是在 gitee 中上传了一份自动配置方案。唯一的缺点是:该配置当前只支持 centos 7 版本,而博主也十分幸运,恰巧就是这个版本。


首先打开 gitee 搜索 vimforcpp ,打开后往下划或者直接点击 [该链接] 直接跳转。


然后看到安装方法


70546ee242351794290dd539fbc562bf.png


制框起来的指令,到 Linux 终端:

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


然后敲击回车,输入 root 账号密码,即可开始安装,安装界面:


3ee5ebc4bf4876635134e5518c887eb8.png


输入密码,等待安装成功后,根据提示输入:

source ~/.bashrc




就可以开始使用了~


该配置支持代码高亮,智能补齐、缩进,和语法提示等多种功能,不可谓不好用,接下来,就由我来演示一下:

6febe20357fe4b1f934df51c07fe8a27.gif

版本正确的小伙伴们,还在等什么,赶紧使用起来!



五、结语


相信看到这里的小伙伴已经对 vim 的基本使用和配置有一定了解了。开头提出的问题大家应该可以轻松回答出来。


但是我们这里只是带大家上手,vim 还有很多操作,使用好 vim 可以让 Linux 环境下的开发事半功倍。


所以 a n d u i n anduin anduin 也为大家找来了陈皓大佬的 “vim 练级文章” ,有兴趣的小伙伴可以前去阅读:


   简明 VIM 练级攻略


   给程序员的VIM速查卡


那么到这里,本篇文章也就到此结束了,我们下期见~







相关文章
|
4月前
|
Ubuntu Linux 测试技术
Linux系统之部署轻量级Markdown文本编辑器
【10月更文挑战第6天】Linux系统之部署轻量级Markdown文本编辑器
215 1
Linux系统之部署轻量级Markdown文本编辑器
|
2月前
|
Ubuntu Unix Linux
Linux网络文件系统NFS:配置与管理指南
NFS 是 Linux 系统中常用的网络文件系统协议,通过配置和管理 NFS,可以实现跨网络的文件共享。本文详细介绍了 NFS 的安装、配置、管理和常见问题的解决方法,希望对您的工作有所帮助。通过正确配置和优化 NFS,可以显著提高文件共享的效率和安全性。
243 7
|
3月前
|
数据库连接 Linux Shell
Linux下ODBC与 南大通用GBase 8s数据库的无缝连接配置指南
本文详细介绍在Linux系统下配置GBase 8s数据库ODBC的过程,涵盖环境变量设置、ODBC配置文件编辑及连接测试等步骤。首先配置数据库环境变量如GBASEDBTDIR、PATH等,接着修改odbcinst.ini和odbc.ini文件,指定驱动路径、数据库名称等信息,最后通过catalog.c工具或isql命令验证ODBC连接是否成功。
|
3月前
|
缓存 资源调度 安全
深入探索Linux操作系统的心脏——内核配置与优化####
本文作为一篇技术性深度解析文章,旨在引领读者踏上一场揭秘Linux内核配置与优化的奇妙之旅。不同于传统的摘要概述,本文将以实战为导向,直接跳入核心内容,探讨如何通过精细调整内核参数来提升系统性能、增强安全性及实现资源高效利用。从基础概念到高级技巧,逐步揭示那些隐藏在命令行背后的强大功能,为系统管理员和高级用户打开一扇通往极致性能与定制化体验的大门。 --- ###
103 9
|
3月前
|
存储 安全 数据管理
如何在 Rocky Linux 8 上安装和配置 Elasticsearch
本文详细介绍了在 Rocky Linux 8 上安装和配置 Elasticsearch 的步骤,包括添加仓库、安装 Elasticsearch、配置文件修改、设置内存和文件描述符、启动和验证 Elasticsearch,以及常见问题的解决方法。通过这些步骤,你可以快速搭建起这个强大的分布式搜索和分析引擎。
111 5
|
4月前
|
Java Linux 网络安全
NIFI在Linux服务区上的部署配置过程是什么?
【10月更文挑战第21天】NIFI在Linux服务区上的部署配置过程是什么?
133 2
|
4月前
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
1025 3
|
4月前
|
Unix Linux 开发工具
Linux Vim的 命令大全
Linux Vim的 命令大全
56 0
|
7月前
|
开发工具
vi编辑器,现在vi\vim是文本文件进行编辑的最佳选择,Vim是vi的加强的版本,兼容vi的所有指令,vim编辑器有三种工作模式,一开始进入的是命令模式,命令模式i是插入的意思,两下y+p复制内容
vi编辑器,现在vi\vim是文本文件进行编辑的最佳选择,Vim是vi的加强的版本,兼容vi的所有指令,vim编辑器有三种工作模式,一开始进入的是命令模式,命令模式i是插入的意思,两下y+p复制内容
|
8月前
|
开发工具
Vim 编辑器:高效文本编辑的瑞士军刀
**Vim 概览:** Vim 是一个功能丰富的文本编辑器,以其高度可定制性著称。文章介绍了 Vim 的高效使用技巧,包括快捷打开文件、命令行模式下的常用命令、查找与替换、删除和复制文本。还讨论了配置 `.vimrc` 文件以自定义设置,如改变 leader 键、设置缩进和高亮,并展示了安装插件如 vim-airline 和 vim-snazzy 的方法。通过这些技巧,用户能提升 Vim 使用效率。
94 5

热门文章

最新文章