首页 >word操作 > 内容

【linux系统编程】基础开发工具:vi/vim

2023年8月15日 19:28

Linux文本编辑器 – vim

正文开始@Assassin

经典老图:
在这里插入图片描述
vim高清pdf

1. vim基本介绍:

vi/vim是多模式文本编辑器,其代码补全、编译及错误跳转等方便编程的功能十分丰富;vim是vi的升级版,vim兼容vi的所有指令,且在vi的基础上增加了许多新特性;例如语法加亮,可视化操作;vim具有跨平台的特性,不仅可以在终端运行,也可以运行于Windows,MacOS等操作系统;

vim在日常做开发的时候,主要解决编写代码的问题,本质上就是一个多模式的文本编辑器;vim与IDE只能说各有千秋,IDE对比vim自然有更为强大的代码补全,编写操作便捷,易于多文件管理的优点,同样地,vim相比于IDE也有更强的代码跳转,批量化操作快捷,更轻量化的优点,更为重要的是vim也可以进行相关配置以达到或趋于IDE同样的效果;

vim常用的有4种模式:命令模式/普通模式,插入模式,底行模式,可视化模式;

  • ① 命令模式(Normal mode):
    在命令模式下,用户可以控制屏幕光标的移动,字符、字或行的删除,复制粘贴,剪贴,修改等操作;命令模式也是Vim启动后的默认模式;
  • ② 插入模式(Insert mode):
    只有在插入模式下才能进行字符输入,插入模式是使用最频繁的编辑模式;
  • ③ 底行模式(Command mode):
    在底行模式下,用户可以将文件保存或退出,也可以进行查找字符串等操作;例如执行vim命令(" : " 键),搜索(" / " 和 " ? " 键)或者执行shell命令(" ! " 键)在底行模式下还可以直接输入 help vim-modes 查看当前vim所支持的所有模式;
  • ④ 可视化模式(Visual mode):
    可视化模式与普通模式比较相似,但是移动命令会扩大高亮的文本区域,高亮区域可以是字符、行或者是一块文本;当执行一个非移动命令时,命令会被执行到这块高亮的区域上; Vim的 " 文本对象 " 也能和移动命令一样用于该模式中;

底行模式中:

:help vim-modes 

查看当前云服务器的全部模式:
7种BASIC modes:
在这里插入图片描述
6种ADDITIONAL modes:
在这里插入图片描述
这里注意:不同服务器的编辑模式数量可能会不一致,我的是13种,小伙伴们的不一定是13种哈~~

2. vim下各模式的切换:

指令: vim [文件名]
功能: 使用vim编辑器打开相应文件,若文件不存在则默认直接创建

[Assassin@Ninghai Calculate_net]$ vim client.hpp 

进入vim后默认为命令模式(普通模式),需要输入字符需切换到插入模式,需要执行vim下的命令需切换到底行模式;
在这里插入图片描述
[命令模式] 切换至 [插入模式]:

  • 输入「i」:进入插入模式,光标位置不变
  • 输入「a」:进入插入模式,光标位置向后移动一个字符
  • 输入「o」:进入插入模式,光标位置切换至下一行的行首
  • 输入「I」:进入插入模式,光标位置位于当前行的行首
  • 输入「A」:进入插入模式,光标位置位于当前行的行尾
  • 输入「O」:进入插入模式,光标位置切换至上一行的行首

[命令模式] 切换至 [底行模式]:

  • 输入「Shift + ;」即可,实际上就是输入英文冒号「:」

[命令模式] 切换至 [可视化模式]:

  • 输入「 Ctrl + v 」,进入可视化模式中的可视化块模式

[插入模式][底行模式][可视化模式] 切换至 [命令模式]:

  • 插入模式,底行模式,可视化模式切换至命令模式都是直接输入「Esc」键即可

接下来简单介绍一哈各模式中的基本操作
ps: 插入模式就不说了,光写就完事了


3. vim命令模式:

【移动光标】:

  • ① 输入「k」:光标上移
  • ② 输入「j」:光标下移
  • ③ 输入「h」:光标左移
  • ④ 输入「l」:光标右移
  • ⑤ 输入「$」(Shift + 4):移动光标至当前行的行尾
  • ⑥ 输入「^」(Shift + 6):移动光标至当前行的行首
  • ⑦ 输入「gg」:移动光标至到文本的起始位置
  • ⑧ 输入「Shift + g」:移动光标至文本最末尾位置
  • ⑨ 输入「n + Shift + g」:移动光标至第n行的行首
  • ⑩ 输入「n + Enter」:当前光标向下移动n行
  • ⑪ 输入「w」:光标按照从左到右,从上到下的方式跳转到下一个word的开头
  • ⑫ 输入「e」:光标按照从左到右,从上到下的方式跳转到下一个word的结尾
  • ⑬ 输入「b」:光标按照从右到左,从下到上的方式跳转到上一个word的开头
  • ⑭ 数字键搭配 k,j,h,l:例如 5 + l 就是光标往所在行右移5个字符,3 + h 便是往所在行左移3个字符,1 + j 是光标往下移动1行,4 + k是光标往下移动4行
  • ⑮ 输入「Shift + m」(M):移动光标至当前页的正中间行的第一个字符
  • ⑯ 键盘上的上下左右键参照 k,j,h,l

配图效果也不明显,建议自行尝试

【删除】:

  • ① 输入「x」:删除光标所在位置的字符
  • ② 输入「nx」:删除光标所在位置开始往后的n个字符
  • ③ 输入「X」(shift + x):删除光标所在位置的前一个字符
  • ④ 输入「nX」(n + shift + x):删除光标所在位置的前n个字符
  • ⑤ 输入「dd」:删除光标所在行
  • ⑥ 输入「ndd」:删除光标所在行开始往下的n行
  • ⑦ 输入「dw」:删除一个word,删除光标所在位置到单词尾的字符
  • ⑧ 输入「ndw / dnw」:删除n个word,删除光标所在位置开始往后的n个word

配图效果也不明显,建议自行尝试

【复制粘贴】:

  • ① 输入「yy」:复制光标所在行到缓冲区
  • ② 输入「nyy」:复制光标所在行开始往下的n行到缓冲区
  • ③ 输入「yw」:yw,复制一个单词,将光标所在位置开始到单词尾的字符复制到缓冲区,注意使用yw复制单词后再使用p粘贴时,默认直接在当前行粘贴
  • ④ 输入「nyw」:复制n个单词,将光标所在位置开始往后的n个word复制到缓冲区,nyw使用p粘贴时跟yw同理,在当前行粘贴
  • ⑤ 输入「p」:将已复制的内容在光标的下一行粘贴
  • ⑥ 输入「np」:将已复制的内容在光标的下一行粘贴n次

小贴士: 这里出现了yy跟yw复制时粘贴是否在当前行的情况,应该不是粘贴p的问题,原因在于yy是复制一整行,包括了换行符 " \n ",粘贴时自然也就在下一行了,而yw是单纯复制word,不存在粘贴时换行的情况~~

【剪切】:

  • ① 输入「dd」:剪切光标所在行
  • ② 输入「ndd」:剪切光标所在行开始往下的n行
  • ③ 输入「p」:将已剪切的内容在光标的下一行粘贴上
  • ④ 输入「np」:将已剪切的内容在光标的下一行粘贴n次
  • ⑤ 补充:dw同样也有剪切的功能

【撤销】:

  • ① 输入「u」:撤销操作,多次按u会撤销多次
  • ② 输入「Ctrl + r」:恢复刚刚的撤销,反撤销

【大小写切换】:

  • ① 输入「~」(Shift + `):完成光标所在位置字符的大小写切换
  • ② 输入「n~」(n + Shift + `):完成光标所在位置开始往后的n个字符的大小写切换
  • ③ 长按「~」:完成光标所在位置到行尾所有字符的大小写切换

【字符替换】:

  • ① 输入「r」:替换光标所在位置的字符
  • ② 输入「R」:进入字符替换模式,可替换光标所到位置的字符,直到按下「Esc」键为止

【更改】:

  • ① 输入「cw」:将光标所在位置开始到单词尾的字符删除,并进入插入模式
  • ② 输入「ncw / cnw」:将光标所在位置开始往后的n个单词(word)删除,并进入插入模式

【翻页】:

  • ① 输入「Ctrl+b」:向上翻一页
  • ② 输入「Ctrl+f」:向下翻一页
  • ③ 输入「Ctrl+u」:向上翻半页
  • ④ 输入「Ctrl+d」:向下翻半页

【查找字符串】:

  • ① 向下查找「 / + 字符串」 :底行模式下输入 / +待查找的字符串,回车后便可高亮对应的字符串,按 n 跳转到下一个匹配到的字符串,Shift + n 向上匹配字符串

在这里插入图片描述

  • ② 向上查找「 ? + 字符串」 :底行模式下输入 ? +待查找的字符串,回车后便可高亮对应的字符串,按 n 跳转到上一个匹配到的字符串,Shift + n 向下匹配字符串

在这里插入图片描述

【全文格式对齐】:

  • 输入「gg=G」:实现全文格式对齐

在这里插入图片描述
gg=G:
在这里插入图片描述

以上操作都建议自己尝试一哈,有些懒得配图了,而且不是gif的话效果也不明显


4. vim底行模式:

在处于命令模式下,输入「:」即可进入底行模式

【行号设置】:

  • ① 输入「set nu」后回车:显示行号
  • ② 输入「set nonu」后回车:取消行号

这里浅看一下⑧:
在这里插入图片描述set nu:显示行号 ; 取消行号就不看了
在这里插入图片描述

【保存退出】:

  • ① 输入「w」后回车:write,写入文件,保存文件
  • ② 输入「q」后回车:quit,默认不保存退出vim,如果无法离开vim,可在「q」后面跟一个「!」表示强制退出
  • ③ 输入「wq」后回车:保存并退出
  • ④ 输入「wq!」后回车:强制保存并退出

【分屏指令】:

  • ① 输入「vs 文件名」后回车:在vim窗口下打开另一个指定文件,实现多文件的编辑
  • ② 输入「Ctrl+w+w」后回车:光标在多屏幕下进行切换

like this:Ctrl + ww实现窗口之间的跳转
在这里插入图片描述

【执行shell指令】:

  • 输入「! + 指令」:在不退出vim的情况下,可以在指令前面加上「!」就可以执行Linux shell指令,例如查看目录、编译当前代码,查看man手册等

在这里插入图片描述

【新建存档 / 读取存档】:

  • ① 输入「w + 文件名」后回车:write,将该文件的内容储存成另一个文件(类似另存新档)
  • ② 输入「r + 文件名」后回车:read,在编辑的文件中,读入另一个文件的数据,追加式读入数据

在这里插入图片描述
ll:
在这里插入图片描述
less:
在这里插入图片描述
读取存档就不演示了,注意 r 读取是追加式的,不会覆盖原有的数据

【字符串替换】:

  • ①「%s/原字符串]/[目的字符串]/g」:全文范围将原字符串替换出目标字符串

替换前:
在这里插入图片描述
替换后:
在这里插入图片描述

  • ②「s/原字符串]/[目的字符串]/g」:在当前行中,将所有的原字符串替换成目标字符串

替换前:
在这里插入图片描述
替换后:
在这里插入图片描述

  • ③「n1,n2s/原字符串]/[目的字符串]/g」:将n1行到n2行中所有的原字符串替换成目标字符串

替换前:
在这里插入图片描述
替换后:
在这里插入图片描述

补充:在底行模式下,使用命令 " %s/[待替换字符串]/[目标字符串]/g " 时:

不加%表示替换光标所在行,加%则表示替换全文;
不加g表示只替换行中第一个匹配到的字符串,加g则表示替换行中所有匹配到的字符串

是否带g请自行测试;

5. vim可视化模式:

vim的可视化模式只简单介绍一下快速批量化注释和去注释,有一说一,可视化模式在日常编程中用的不是很多,掌握简单的注释操作应该就ok了,深入的话可以自行搜索了解

【添加注释】:

Ctrl + v 进入块选择模式,然后移动光标(h,j,k,l)选中要注释的行,再按大写的 I 进入行首插入模式输入注释符号如 // 或 #,输入完毕之后,按 Esc,Vim 会自动将选中的所有行首都加上注释,保存退出完成注释:
在这里插入图片描述
效果:
在这里插入图片描述
【取消注释】:

Ctrl + v 进入块选择模式,选中需要删除行的注释符号,注意 // 要选中两个,选好之后按 d 即可删除注释,Esc 保存退出:
在这里插入图片描述
效果:
在这里插入图片描述

6. 额外补充:

6.1 非法退出:

小白在vim中编辑时可能会出现各种各样的问题,比如编辑错了想按 Ctrl + z之类的退出编辑,或者直接关掉服务器,这样暴力操作过后下次再打开文件时可能会出现如下提示信息:生成一个.swap文件(安全机制)
在这里插入图片描述
根据提示,我们可以按 R 进行recovery进入文件,不过这样操作在下次进入文件是依旧会出现上述提示

解决方法:
找到该.swap文件,使用 rm 进行删除即可
在这里插入图片描述
rm:rm后即可正常进入文件
在这里插入图片描述

6.2 shell界面多文件打开:

vim -o file1 file2vim -O file1 file2# -o: 小写o会上下分屏打开两个文件# -O: 大写O会左右分屏打开两个文件# 使用-o上下打开两个文件后,可以通过输入 [Ctrl + w + 上下箭头/j,k]切换文件# 使用-O左右打开两个文件后,可以通过输入 [Ctrl + w + 左右箭头/h,l]切换文件# ps:两种方式均可通过 [Ctrl + ww]进行切换

这里只演示上下分屏:

[Assassin@Ninghai Calculate_net]$ vim -o client.hpp server.hpp

在这里插入图片描述


参考文章:https://blog.csdn.net/b_ingram/article/details/122964427

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时候联系我们修改或删除,在此表示感谢。

特别提醒:

1、请用户自行保存原始数据,为确保安全网站使用完即被永久销毁,如何人将无法再次获取。

2、如果上次文件较大或者涉及到复杂运算的数据,可能需要一定的时间,请耐心等待一会。

3、请按照用户协议文明上网,如果发现用户存在恶意行为,包括但不限于发布不合适言论妄图

     获取用户隐私信息等行为,网站将根据掌握的情况对用户进行限制部分行为、永久封号等处罚。

4、如果文件下载失败可能是弹出窗口被浏览器拦截,点击允许弹出即可,一般在网址栏位置设置

5、欢迎将网站推荐给其他人,网站持续更新更多功能敬请期待,收藏网站高效办公不迷路。

      



登录后回复

共有0条评论