【vim && neovim】从入门到放弃(“四种”模式、常用命令、正则表达式、文件属性、插件安装--代码补全、一键格式化、显示目录)(一)

简介: 本文所有操作均通过ssh连接腾讯云服务器完成。如果你正在使用安装GNOME桌面的Linux,很多操作可以通过鼠标完成,或许更加直观。推荐使用neovim(结合鼠标操作更加丝滑)。

本文所有操作均通过ssh连接腾讯云服务器完成。如果你正在使用安装GNOME桌面的Linux,很多操作可以通过鼠标完成,或许更加直观。

推荐使用neovim(结合鼠标操作更加丝滑)。


nvim效果展示:

97d50bf9cbcdd101900d12fab7414a98_f1676d5d9069416bb17053b5a9599715.gif

一、vim简介

二、vim操作

2.1 三种模式及其切换

2.2 常用命令

2.21 命令模式下常用命令

2.22 底行模式下常用命令

三、vim进阶

3.1 进阶操作

3.11 可视化模式

3.12 正则表达式

3.13 结合其他文本处理命令

3.14 修改文件属性(编码、格式、权限)

3.2 进阶配置

3.21 显示行号、语法高亮、自动缩进

3.22 安装插件

3.23 vim代码补全

3.24 实操:安装代码补全插件YCM

四、放弃vim,入手neovim(推荐)

4.1 什么是neovim

4.2 安装neovim(nvim)

4.3 nvim 的配置与使用

4.4 nvim插件(自动补全、文件树、格式化、对齐线)

4.41 自动补全插件:coc

4.42 文件树:nvim-tree

4.43 代码格式化

4.44 C语言代码格式化:clang-format

4.45 显示对齐线

4.5 我的nvim配置文件


一、vim简介

Vim(Vi IMproved)是一款强大而受欢迎的文本编辑器,广泛用于Linux和Unix系统。它是Vi编辑器的增强版本,提供了丰富的功能和高度可定制的环境。

本小节对vim做概括性介绍。

1.Vim的特点:

模态编辑:Vim以不同的模式(命令模式、插入模式、可视模式等)进行编辑,使得操作更加高效。

高度可定制:通过修改配置文件(如.vimrc),用户可以个性化设置Vim的外观、行为和功能。

强大的编辑功能:Vim提供了丰富的编辑命令,如搜索和替换、复制和粘贴、缩进和格式化等,提高了编辑效率。

多语言支持:Vim支持各种编程语言,并提供语法高亮、自动缩进、代码折叠等功能。

2.Vim的编辑模式:

命令模式(Normal Mode):用于导航、编辑和执行命令(也称一般模式)。

插入模式(Insert Mode):用于输入和编辑文本(也称编辑模式)。

可视模式(Visual Mode):用于选择和操作文本块(也称底行模式)。

3.Vim的扩展性:

插件:Vim支持各种插件,如代码补全、语法检查、文件管理等。插件可以通过插件管理器(如Vundle、Pathogen、vim-plug)进行安装和管理。

脚本和自定义函数:Vim允许用户编写自己的脚本和函数,以满足特定的需求。

定制化配置:通过修改.vimrc文件,用户可以自定义Vim的外观、键绑定、缩进设置等。

二、vim操作

本小节介绍vim的三种模式以及各种模式下的命令。


2.1 三种模式及其切换

命令模式:在命令行使用vim进入vim编辑环境时,默认就是命令模式。命令模式下,无法在文档中输入文字。只能输入各种命令(不会显示在任何地方),进行一些操作,比如移动光标,删除文本的一行等等。

如图所示:用vim打开一个C语言头文件

bef7986306492d1ccce3d8429fe1339f_006f43c192c64c7da7fdf1a43cd1c076.png

命令模式下,左下角显示的是:文件名、当前模式([dos]即命令模式)、行数、总字符数(字符、空格、制表符、回车符)


编辑模式 在命令模式下,按下i(当然不只是i,在2.2节详细介绍,注意所有命令都是英文状态下输入)即可进入编辑模式。在编辑模式下,即可进行编辑。在编辑模式下,按ESC,就可以切换到命令模式。

22ee2e84760e9e08e7104a3d44fe9797_1f5aaa0de88f4eedb8c942e16190835d.png

在编辑模式下,左下角会显示insert


底行模式:在命令模式下,输入:,即可进入底行模式。在冒号后面就可以执行一些命令,这些命令通常是保存文件、退出、查找替换等等。

15d4561f3791672f11a9871b4ef2592d_7d9adb3d1a7c4e8ebdf1fc36bbb3d0e3.png

a25076e648fcbc398186925e688284a4_96cc746dae8e4a6b81c451fb33943b42.png

在三种模式中:


命令模式和底行模式主要用来执行一些命令(查找、删除、移动光标、追加、插入、退出、保存等等);

而编辑模式用以主要的文本编辑操作,该模式下不能执行命令(任何键盘输入都会作为文本或格式控制符添加到文件中)。

编辑模式,就是打字撒,不用讲了。下面介绍在命令模式和底行模式中常用的命令


2.2 常用命令

2.21 命令模式下常用命令

注意下面的命令是在命令模式执行的,多使用就记住了,结合单词记忆。

(1)进入编辑模式

下面的命令都可以进入编辑模式,但会在不同的位置进行编辑。

  • i:在光标前面插入;
  • a:在光标后插入;
  • I:在光标所在行的开头插入(第一个非空字符前面);
  • A:在光标所在行的末尾插入;
  • o:在光标所在行的面添加新的空行
  • O:大写O,在光标所在行的面添加新的空行


块状光标: 光标默认是这种块状的,光标前面即字母K的前面,也就是说会在字母C和字母K中间插入新内容。(你可以在你的ssh工具中修改形状,如果支持的话)

3b2b241bc3f3aa4336638f57b661d3a3_590b8a4e4bd44d3ca069f9253be170c3.png

(2)移动光标

hjkl:左、下、上、右(推荐直接使用方向键)

ctrl b:向上移动一页(pageup);

ctrl f:向下移动一页(pagedown);

gg:移动到文件第一行开头;

G:移到文件最后一行开头;

H:移到屏幕第一行开头;

M:移到屏幕中间行开头;

L:移到屏幕最下面一行开头;

-0:数字0,移到本行开头;

$:移到本行末尾;

^:移到本行第一个非空字符;

w:移动到后一个字的开头(比如单词);

e:移动到后一个字的结尾;

b:移动到前一个字的开头。


上面的大写字母都可以使用shif +小写字母的方式。下面两条命令,必须先大写锁定(caps lock),然后按下数字和字母(可以先按数字):

nL:移到屏幕第n行;
nH:移到屏幕倒数第n行。

不必全部掌握,小范围的移动,或许使用方向键也不慢。

(3)删除

  • x:删除光标指向的字符(比较适合块状光标);
  • X:删除光标前一个字符(推荐直接backspace);
  • D:删除至行尾(包括光标指向的字符);
  • dd:删除光标所在的行,也是剪切(这一行消失,光标跑到下一行开头);
  • ndd向下删除n行,包括光标所在行;

(4)修改

  • cc重写光标所在行(即删除原有内容,从开头重写编辑,和删除行不同)

(5)取代

即用新的字符替换原来的字符。

  • r:取代光标处字符;
  • R:连续取代,直到按下ESC。

(6)复制粘贴


yy:复制光标所在行到缓冲区(有点剪贴板的意思);

nyy:复制n行,从光标所在行向下数共n行;

p:将缓冲区内容复制到光标所在行下面;

P:复制到光标所在行上面。

(7)撤销重做


u:撤销,复原至上一个命令(默认最多1000次,我没验证);

.:重复上一个命令(不会重复撤销命令);

2.22 底行模式下常用命令

底行模式的命令通常用来退出vim和文件的全局操作。

注意下面的命令是在底行模式执行的,先在命令模式输入冒号,再输入下面命令。

(1)退出与保存文件

  • q:退出vim,如果修改了文件会有提示;
  • w:保存文件;
  • w filename:保存名为filename的新文件(当前文件还在);
  • wqx:先保存再退出;
  • q!:不保存退出;
  • wq!:强制保存退出。

(2)删除


主要用来批量删除。


n1,n2 d:删除从n1到n2的所有行

例1:1,4 d:删除1-4行

例2:1,$ d:删除所有

例3:.,$:删除当前行到结尾


除此之外,还可以结合正则表达式来删除,放在3,1节介绍。


(3)恢复文件(很常用的)


recover:恢复文件

recover命令和u命令的效果不同。u命令用于撤消上一次的操作,而recover命令用于恢复上一次编辑会话中的文件。如果在编辑会话期间意外退出Vim,则可以使用recover命令恢复文件。

三、vim进阶

3.1 进阶操作

3.11 可视化模式

在命令模式中,除了普通的命令模式,还可以进入可视化模式,这个模式主要用来范围选择文本。

命令模式下,按下Vv,即可进入可视化模式(ESC退出):

V:操作的基本单位是:如图选择了4行。

eb1f25e1ffd62706bf37d5b6e2dc6d9a_ad392cfba4f045f8a01ff06176413c19.png

v:操作的基本单位是字符:如图选择了多个字符

4c1ed622fab17486be35d8a7a45b0a82_46aeb05dc8cd4aa3ad2e229a6507eb33.png

选中目标文本后,就可以对选中内容进行一些操作:


y:复制 (前面yy复制一行)

d:剪切 (前面dd删除一行)

p:粘贴(P)

例,全选所有内容:ggVG

解释:命令模式下,gg先移动到文本开头,V进入可视化模式,G光标移动到最后一行,选择了所有内容


编辑文本时的选择、复制、粘贴等操作可以有多种方式:

1.在编辑模式下,可以使用鼠标来批量选择和复制粘贴,也可以使用键盘组合ctrl shift c这些完成;

2.在命令模式下:基于v命令和其他命令完成。

3.12 正则表达式

底行模式可以结合正则表达式来完成一些操作。主要是删除、查找和替换,举一些例子:

(1)删除

  • 例1:删除所有包含某个字符串的行:

不加g则是在光标所在行操作,这一行匹配到就删除这行。

: g/solve/ d  #将删除所有包含字符串solve的行

执行前:

46d827792eaea0f881522d918f43f20c_d760deb3147c4db882a23cf808c0db27.png

执行后:

30112e7bbdd91a3a668c8026dca6addf_1992405d7a27486fa594f3f7f00600f1.png

左下角也显示少了5行。

  • 例2:删除匹配整个单词的所有行
:g/\<SOCKET\>/ d

(2)替换

  • 例1:对将光标所在行所有满足条件的字符串进行替换

不加g只替换第一个匹配到的。

:s/solve/new/g
  • 例2:对整个文件符合条件的字符串进行替换

不加g就是所有行第一个匹配到的。

:% s/solve/new/g

(3)查找

  • 例1:查找光标后面所有匹配项
/solve

从执行该命令前光标的位向后开始查找,将光标移动到匹配到的第一个所在行开头,按n移动到下一个。

  • 例2:打印所有匹配到的行
:g/solve/p

image.png

3.13 结合其他文本处理命令

除了可以使用正则表达式,还可以用grep、sed、awk等文本处理命令一起使用。

例:使用sed命令,在文件所有匹配到的行前面添加一行内容

:%!sed '/solve/ i\我在这里插入了一行'

ca4715008f3400dc63fe365b13f94263_a36d5476cca34f6fba3edd079f470ab3.png

3.14 修改文件属性(编码、格式、权限)

文件属性的修改也经常遇到,比如windows下和Linux下文本的换行符不同。

  • 修改文件编码:
:set encoding=utf-8

或:

:set fileencoding=utf-8
  • 修改文件格式:
    unix、dos、mac
:set fileformat=unix

:set fileformat?:查看文件格式,编码也是如此。

相关文章
|
3月前
|
Unix Linux 开发工具
在Linux中,有哪些基本的 Vim 命令?
在Linux中,有哪些基本的 Vim 命令?
|
1月前
|
Unix Linux 开发工具
Linux Vim的 命令大全
Linux Vim的 命令大全
21 0
|
2月前
|
存储 Linux Shell
常用vim命令和vim基本使用及Linux用户的管理,用户和组相关文件
这篇文章介绍了Vim编辑器的基本使用、常用命令和模式,以及Linux系统中用户和组的管理方法,包括用户和组相关文件如/etc/passwd、/etc/shadow和/etc/group的说明。
常用vim命令和vim基本使用及Linux用户的管理,用户和组相关文件
|
2月前
|
存储 Linux 编译器
linux中vim介绍以及常用命令大全
linux中vim介绍以及常用命令大全
84 8
|
3月前
|
开发工具
vim编辑器常用命令
vim编辑器常用命令
88 1
|
3月前
|
SQL 数据处理 数据库
SQL正则表达式应用:文本数据处理的强大工具——深入探讨数据验证、模式搜索、字符替换等核心功能及性能优化和兼容性问题
【8月更文挑战第31天】SQL正则表达式是数据库管理和应用开发中处理文本数据的强大工具,支持数据验证、模式搜索和字符替换等功能。本文通过问答形式介绍了其基本概念、使用方法及注意事项,帮助读者掌握这一重要技能,提升文本数据处理效率。尽管功能强大,但在不同数据库系统中可能存在兼容性问题,需谨慎使用以优化性能。
58 0
|
3月前
|
开发工具
基本 Vim 命令 - 入门指南
【8月更文挑战第18天】
50 0
|
6月前
|
人工智能 Linux 开发工具
linux 对文件内容的查看、归档 及 vim基本操作
linux 对文件内容的查看、归档 及 vim基本操作
|
4月前
|
搜索推荐 Linux 开发工具
|
5月前
|
Linux Shell 持续交付
Linux下vim的配置
本文介绍了如何对vim进行基础配置,如行号显示、缩进设置等,并推荐了一种自动化部署方案,通过链接下载预配置的vim环境脚本,简化了配置过程,提升开发效率。
85 3
Linux下vim的配置
下一篇
无影云桌面