【Linux】vim-多模式的文本编辑器

news/2024/7/21 14:21:53 标签: linux, vim

本篇文章内容和干货较多,希望对大家有所帮助👍

目录

vim%E7%9A%84%E4%BB%8B%E7%BB%8D-toc" style="margin-left:0px;">一、vim的介绍

vim%E7%9A%84%E6%A6%82%E5%BF%B5-toc" style="margin-left:40px;">1.1 vi 与 vim的概念
1.2 Vim 和 Vi 的一些对比

vim%20%E6%A8%A1%E5%BC%8F%E4%B9%8B%E9%97%B4%E7%9A%84%E5%88%87%E6%8D%A2-toc" style="margin-left:0px;">二、vim 模式之间的切换

vim-toc" style="margin-left:40px;">2.1 进入vim
2.2 [正常模式]切换到[插入模式]
2.3 [插入模式]切换至[正常模式]
2.4 [正常模式]切换至[底行模式]
2.5 [底行模式]切换至[正常模式]
2.6 一图看懂模式切换

vim%E6%AD%A3%E5%B8%B8%E6%A8%A1%E5%BC%8F%E5%91%BD%E4%BB%A4%E9%9B%86-toc" style="margin-left:0px;">三、vim正常模式命令集

3.1 移动光标
3.2 删除文字
3.3 复制
3.4 替换
3.5 撤销上一次操作
3.6 更改
3.7 查找文本

vim%E6%9C%AB%E8%A1%8C%E6%A8%A1%E5%BC%8F%E5%91%BD%E4%BB%A4%E9%9B%86-toc" style="margin-left:0px;">四、vim末行模式命令集

4.1 列出行号
4.2 跳到文件中的某一行
4.3 查找 / 替换字符
4.4 保存文件和离开vim

vim%E7%9A%84%E8%A1%A5%E5%85%85-toc" style="margin-left:0px;">五、vim的补充

vim%20%E9%94%AE%E7%9B%98%E5%9B%BE-toc" style="margin-left:40px;">5.1 vi/vim 键盘图
5.2 vim的其他模式:视图模式

vim%E7%9A%84%E7%AE%80%E5%8D%95%E9%85%8D%E7%BD%AE%C2%A0-toc" style="margin-left:0px;">六、vim的简单配置 

6.1 配置文件的位置
6.2 常用配置选项
6.3 配置vim


vim%E7%9A%84%E4%BB%8B%E7%BB%8D">一、vim的介绍

Vim(Vi IMproved)是一个功能强大的文本编辑器,常用于Linux和其他类Unix系统中。它是Vi编辑器的增强版,并提供了更多的功能和灵活性。

vim%E7%9A%84%E6%A6%82%E5%BF%B5">1.1 vi 与 vim的概念

vi是最初的Unix文本编辑器,是一种基于命令行的编辑器。vi只能在命令模式和编辑模式之间切换。

  • 在命令模式下,可以执行诸如复制、粘贴、查找和替换等操作。
  • 在编辑模式下,可以编辑文本。要进入编辑模式,请按下i键。要退出编辑模式并返回命令模式,请按下“Esc"键。

vim是vi的改进版,它添加了一些新功能和改进了一些现有功能。

  • vim有多种模式:正常模式、插入模式和底行模式等。
  • 在正常模式下,可以控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入其他模式。
  • 在插入模式下,可以像其他文本编辑器一样编辑文本。
  • 在底行模式下,可以进行文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。

1.2 Vim 和 Vi 的一些对比

  1. 功能扩展:Vim 相较于 vi 提供了更多的功能和扩展。它支持语法高亮、代码折叠、多级撤销、多窗口编辑、插件系统等,这些特性使得 Vim 更加强大和灵活。
  2. 易用性:Vim 在用户界面和交互方面进行了改进,提供了更直观和友好的操作方式。例如,Vim 支持可视化模式、智能缩进等,使得编辑过程更加便捷。
  3. 可定制性:Vim 具有高度的可定制性,用户可以通过配置文件(.vimrc)自定义各种设置和快捷键,以适应个人习惯和需求。这使得用户可以根据自己的喜好来优化编辑环境。
  4. 插件生态:Vim 拥有丰富的插件生态系统,用户可以通过安装插件来扩展 Vim 的功能,如版本控制、自动补全、语法检查等。
  5. 兼容性:Vim 保持了与 vi 的高度兼容性,可以在 vi 兼容模式下运行。这意味着 vi 用户可以无缝切换到 Vim,而且大部分 vi 的命令和操作在 Vim 中仍然有效。

需要注意的是,尽管 Vim 是对 vi 的改进和扩展,但在某些系统中可能默认安装的是 vi 而不是 Vim。在这种情况下可以使用 vim 命令来启动 Vim 编辑器。


vim%20%E6%A8%A1%E5%BC%8F%E4%B9%8B%E9%97%B4%E7%9A%84%E5%88%87%E6%8D%A2">二、vim 模式之间的切换

vim有许多模式,在这里只讲解三种模式,分别是命令模式(Normal mode)、插入模式(Insert mode)和底行模式(last line mode)。

vim">2.1 进入vim

输入 vim 和文件名 ,进入到vim全屏编辑界面。

注:vim可以打开一个不存在的文件如果q退出,不创建文件如果wq退出,创建文件。

 

[zzx@hecs 5_mydir]$ vim code.c

技巧:vim 文件名 +n         打开vim,并将光标移动到第n行。

例如:vim code.c +2  打开code.c,并将光标移动到第2行。

进入vim之后,是处于[正常模式],你要切换到[插入模式]才能够输入文字。

2.2 [正常模式]切换到[插入模式]

  • 输入i        在当前光标位置进入插入模式
  • 输入a       在当前光标位置之后进入插入模式
  • 输入o       在当前行之后插入一个新行并进入插入模式。

只有在插入模式下,才可以做文字输入。该模式是我们后面用的最频繁的编辑模式。

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

按[ESC]键    可从插入模式回到命令模式

处于[插入模式],就只能一直输入文字,如果发现输错了字,想用光标键往回移动,将该字删除,可以先按一下「ESC」键转到[正常模式]再删除文字。当然,也可以直接删除。

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

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

在[正常模式]下,按一下 [:] 冒号键进入底行模式,此时光标移动到底部的命令行,并且可以输入各种命令。

例如:退出vim及保存文件
:w       保存当前文件

:q         退出vim
:wq     保存并退出vim
:#!       强制进行操作,例如 q!   不保存强制退出vim

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

  • 按[ESC]键    可从底行模式回到正常行模式
  • 底行模式下执行完一条命令后会自动切换至命令模式

2.6 一图看懂模式切换


vim%E6%AD%A3%E5%B8%B8%E6%A8%A1%E5%BC%8F%E5%91%BD%E4%BB%A4%E9%9B%86">三、vim正常模式命令集

3.1 移动光标

  • vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母
    [h] == ←、[j] == ↑、[k] == ↓、[l] == →,分别控制光标左、下、上、右移一格。
  • 按[G]:移动到文章的最后
  • 按[#G]:例如,[15G],表示移动光标至文章的第15行行首。
  • 按[$]:移动到光标所在行的“行尾”
  • 按[^]:移动到光标所在行的“行首”
  • 按[w]:光标跳到下个字的开头
  • 按[e]:光标跳到下个字的字尾
  • 按[b]:光标回到上个字的开头
  • 按[#l]:光标移到该行的第#个位置,如:5l,56l
  • 按[gg]:进入到文本开始
  • 按[shift+g]:进入文本末端
  • 按[ctrl]+[b]:屏幕往“后”移动一页
  • 按[ctrl]+[f]:屏幕往“前”移动一页
  • 按[ctrl]+[u]:屏幕往“后”移动半页
  • 按[ctrl]+[d]:屏幕往“前”移动半页
  • 按[ctrl]+[g] 列出光标所在行的行号。

注:w和b如果碰到的是单词,就跳到单词开头,如果不是单词,就按字符移动,如果是空格,就跳过

3.2 删除文字

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

注:

  1. x 和 #x 都是向后删除,X 和 #X 都是向前删除。
  2. dd 删除的内容存放在缓存表内,相当于剪切

3.3 复制

  • [yw]:将光标所在之处到字尾的字符复制到缓冲区中。
  • [#yw]:复制#个字到缓冲区
  • [yy]:复制光标所在行到缓冲区。
  • [#yy]:例如,[6yy]表示拷贝从光标所在的该行“往下数”6行文字。
  • [p]:将缓冲区内的字符贴到光标所在位置。

注:

  1. 所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。
  2. dd 也可以与 p 配合使用,实现剪切粘贴
  3. #G p  例如13G p 粘贴到13行的下一行
    #p      例如1000p 粘贴1000次,不想复制就按u撤回

3.4 替换

  • [r]:替换光标所在处的字符
  • [R]:替换光标所到之处的字符,直到按下[ESC]键为止。
  • [~] 波浪号:将文本进行大小写转换

注:

  1. [r#]   替换光标所在处的字母,换成#,例如 rg,将光标所在处的字母换成g
    [#r#] 例如5rg,将光标所在处及之后的共5个字符换成g
  2. [R]    是进入到replace模式。

3.5 撤销上一次操作

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

3.6 更改

  • [cw]:更改光标所在处的字到字尾处
  • [c#w]:例如,[c3w]表示更改3个字

3.7 查找文本

  • [/文本]:在当前文件中向下查找匹配的文本。按下回车后,光标将定位到第一个匹配的位置。

  • [?文本]:在当前文件中向上查找匹配的文本。按下回车后,光标将定位到第一个匹配的位置。

  • [*]:按下*键,在当前文件中向下查找当前光标所在位置的单词。

  • [#],按下 # 键,可向上查找前一个匹配项。

注:

  1. [/]和[?]按下回车后,光标将定位到的是光标原本位置后的第一个匹配的位置。
    不是文本文件中第一个出现该文本的位置
  2. [/]和[?]光标定位后,按下 n 键,可继续向下查找下一个匹配项。
    按下 N 键,可向上查找前一个匹配项。
  3. 底行输入 noh 取消高亮

vim%E6%9C%AB%E8%A1%8C%E6%A8%A1%E5%BC%8F%E5%91%BD%E4%BB%A4%E9%9B%86">四、vim末行模式命令集

在使用末行模式之前,请记住先按「ESC」键确定您已经处于正常模式,再按「:」冒号即可进入末行模式。

4.1 列出行号

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

4.2 跳到文件中的某一行

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

4.3 查找 / 替换字符

前面3.7中讲到的 [/] 和 [?] 也可以算在底行模式的命令中

查找

  • [/文本]:在当前文件中向下查找匹配的文本。按下回车后,光标将定位到第一个匹配的位置。

  • [?文本]:在当前文件中向上查找匹配的文本。按下回车后,光标将定位到第一个匹配的位置。

  • /和?的注意事项与3.7中相同。

替换

  • [%s/<查找内容>/<替换内容>/g]:全局替换命令,将当前文件中所有匹配 pattern 的文本替换为 replace。

         %s:表示对整个文件进行替换。
         /g:表示全局替换,即一行中多次出现的匹配都会被替换。

vim">4.4 保存文件和离开vim

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

注:

  1. vim可以打开一个不存在的文件如果q退出,不创建文件如果wq退出,创建文件。

vim%E7%9A%84%E8%A1%A5%E5%85%85">五、vim的补充

vim%20%E9%94%AE%E7%9B%98%E5%9B%BE">5.1 vi/vim 键盘图

学完上面的一些命令和操作再来看这个vim图应该会有一些更深的体会。

vim%E7%9A%84%E5%85%B6%E4%BB%96%E6%A8%A1%E5%BC%8F%EF%BC%9A%E8%A7%86%E5%9B%BE%E6%A8%A1%E5%BC%8F">5.2 vim的其他模式:视图模式

前面讲到的三种模式:正常/命令模式、插入模式、底行模式只是一部分,一共有12种总模式,大家下来可以研究一下。

其中有一个较为常用的是视图模式(Ctrl v进入),常用来进行批量化注释和注释解除。

注释步骤:

  1. 将光标移动到要注释的行首
  2. Ctrl v      进入视图模式
  3. 选取行    使用hjkl选取多行
  4. I插入模式   Shift + i ,即大写i进入插入模式
  5. 输入//      注释一行
  6. Esc         完成批量化注释

注释解除和此步骤类似,大家可以自行练习以下。(把输入//换成删除// )

vim%E7%9A%84%E7%AE%80%E5%8D%95%E9%85%8D%E7%BD%AE%C2%A0">六、vim的简单配置 

6.1 配置文件的位置

  • 在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。
  • 而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:“.vimrc”。例如,/root目录下,通常已经存在一个.vimrc文件,如果不存在,则创建之。
  • 切换用户成为自己执行 su ,进入自己的主工作目录,执行 cd ~
  • 打开自己目录下的.vimrc文件,执行 vim .vimrc

6.2 常用配置选项

  • 设置语法高亮: syntax on
  • 显示行号: set nu
  • 设置缩进的空格数为4: set shiftwidth=4

6.3 配置vim

要配置好看的vim,原生的配置可能功能不全,也可以选择使用别人的配置:

  • 直接在命令行输入并回车即可。 
    curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
  • 下载完成后还要执行以下命令让配置生效
    source ~/.bashrc
  • 卸载配置直接执行以下命令
    bash ~/.VimForCpp/uninstall.sh

 效果图:


http://www.niftyadmin.cn/n/5213759.html

相关文章

设计模式-开篇

什么是设计模式 设计模式是一种被反复使用、多数人知晓的、经过分类编目的代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、提高代码的可靠性。设计模式不是可直接转化为代码的完成解决方案&#xff0c;而是描述了如何解决一个问题的经过&#xf…

DBT踩坑第二弹

总结下dbt-spark踩到的坑&#xff0c;连接方式采用的是thrift连接 Kerberos认证。考虑到开源组件Kyuubi也是基于Hiveserver2&#xff0c;使用的thrift协议&#xff0c;所以采用Kyuubi执行SparkSQL。 官方文档给出的Thrift方式连接示例真的是简单&#xff0c;但是真是用起来真是…

我的创作纪念日第256天

机缘 时间过得好快啊&#xff0c;没想过一眨眼博客写了已经快一年了&#xff0c;这俩月其实写的挺少的&#xff0c;因为一方面是上了项目&#xff0c;一方面要备考研究生考试&#xff0c;所以很难权衡自己的时间和精力。 收获 写博客对我来说&#xff0c;提升能力是一方面&am…

C#每天复习一个重要小知识day6:静态成员的基本概念和特点

目录 1.静态成员的基本概念 2.静态成员的特点 3.如何理解静态成员的特点&#xff1f; 1.静态成员的基本概念 用静态关键字static修饰的成员变量/方法/属性等称为静态成员。 2.静态成员的特点 静态成员的特点是全局性&#xff08;直接可以用类名点出&#xff09;和唯一性&…

Can‘t find libdevice directory ${CUDA_DIR}/nvvm/libdevice

win10 Running deepxde 的时候出现问题&#xff1a; cuda-nvcc 安装后解决了。 # Install NVCC conda install -c nvidia cuda-nvcc11.3.58 -y # Configure the XLA cuda directory mkdir -p $CONDA_PREFIX/etc/conda/activate.d printf export LD_LIBRARY_PATH$LD_LIBRARY_P…

微生物群落功能预测

FAPROTAX功能预测、PICRUSt功能预测、Tax4Fun功能预测、BugBase表型预测、FUNGuild功能预测 FAPROTAX功能预测 FAPROTAX是一个人工构建的数据库&#xff0c;以人工培养的代表文献为基础&#xff0c;将原核生物分类群(如属或种)映射到代谢或其他生态相关功能(如硝化、反硝化)。例…

【机器学习】聚类(二):原型聚类:LVQ聚类(学习向量量化)

文章目录 一、实验介绍1. 算法流程2. 算法解释3. 算法特点4. 应用场景5. 注意事项 二、实验环境1. 配置虚拟环境2. 库版本介绍 三、实验内容0. 导入必要的库1. LVQ类a. 构造函数b. 闵可夫斯基距离c. LVQ聚类过程e. 聚类结果可视化 2. 辅助函数3. 主函数a. 命令行界面 &#xff…

win10+ vs2017用cmake编译geos3.5.1

参考教程&#xff1a;使用CMake编译Geos3.5.0_cmake geos-CSDN博客 注意事项&#xff1a; 报错&#xff1a;在使用cmake编译geos-3.5.1的时候&#xff0c;会出现报错&#xff1a; CMake Error at CMakeLists.txt:330 (include): include could not find load file GenerateSou…