Linux编辑器-vim使用

目录

1.vim的基本概念

2.vim基本操作

进入/退出vim

插入模式

3.命令模式

1.光标的移动

​编辑

2.复制和粘贴

复制

粘贴

3.剪切加删除

剪切:

删除:

4.撤销与恢复

5.替换字符

​编辑

6.批量化注释和批量化去注释

5.底行模式

[1. 列出行号](#1. 列出行号)

​编辑

2.查找字符

3.外部命令

​编辑

4.多文件操作

6.替换内容

6.异常退出


1.vim的基本概念

  • vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window、 macos、windows。
  • vim具有三种模式:命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode)

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

控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。

插入模式(Insert mode)

只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。

底行模式(last line mode)

文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,shift+: 即可进入该模式。

2.vim基本操作

进入/退出vim

进入vim

vim+文件名进入该文件的编辑界面。

退出vim

esc + : 切换值命令模式,输入想要的指令退出。

|-----|------------------------|
| 选项 | 说明 |
| w | 保存 |
| q | 退出 |
| ! | 强制 |
| wq | 保存并退出 |
| q! | 不保存,强制退出 |
| wq! | 保存并强制退出(最高权限者强制写入只读文件) |

shift + zz保存退出

插入模式

在文件的编辑页面,按i进入插入模式

光标表示当前插入位置

这些是常见的按键进入插入模式

|---|-----------------------------|
| i | 在光标所在字符的前面开始插入 |
| I | 在光标所在行的头部开始插入,若头部有空格则在空格后插入 |
| a | 在光标所在字符的后面开始插入 |
| A | 在光标所在行的末尾开始插入 |
| o | 在光标所在行的下一行开始插入 |
| O | 在光标所在行的上一行开始插入 |
| s | 删除光标所在后面的一个字符,并在此插入 |
| S | 删除光标所在行并开始插入 |

3.命令模式

以下操作都是基于vim命令集:

1.光标的移动

移动光标指令

|--------------|-----------------|
| h | 将光标向左移动(前面可带数字) |
| j | 将光标向下移动(前面可带数字) |
| k | 将光标向上移动(前面可带数字) |
| l | 将光标向右移动(前面可带数字) |
| w | 以单词为单位进行光标后移 |
| e | 光标跳到下个字的字尾 |
| b | 以单词为单位进行光标前移 |
| ^ | 将光标移动到光标所在行的开头 |
| $ | 将光标移动到光标所在行的结尾 |
| gg | 将光标移动到当前文件的首行 |
| shitf+g | 将光标移动到当前文件的尾行 |
| 数字 + shift+g | 将光标移动到指定行 |
| ctrl+b | 屏幕往"后"移动一页 |
| ctrl+f | 屏幕往"前"移动一页 |
| ctrl+u | 屏幕往"后"移动半页 |
| ctrl+d | 屏幕往"前"移动半页 |

2.复制和粘贴

复制

  • 复制单行:yy,复制当前光标所在行
  • 复制多行:数字 + yy,从光标指定行开始向下复制指定行数。

粘贴

  • 粘贴单次:p,从光标当前所处位置的下一行开始粘贴。
  • 粘贴多次:数字 + p,将复制的内容粘贴指定次。

3.剪切加删除

  • 数字 + dd:剪切/删除指定行、连续的多行

剪切:

  • **10dd+p(**剪切10行然后复制)

删除:

剪切完不复制(p)就是删除了。

行内往后局部删除

  • x:删除光标后面的一个字符。
  • 数字 + x:在一行内,删除从光标处开始往后的 n 个字符。

行内往前局部删除

  • X:删除光标前面的一个字符。
  • 数字 + X:在一行内,删除光标前的 n 个字符

4.撤销与恢复

撤销

  • u:撤销上一步执行的操作,类似于 Windows 的 ctrl + z

恢复

  • ctrl + r:取消之前执行的撤销操作,类似于 Windows 的 ctrl + y

5.替换字符

数字 + r + 想替换字符对光标指定的位置,进行一个字符的低缓,可以一次替换多个。
shift + r + 想替换字符进入替换模式,直接进行文本替换

6.批量化注释和批量化去注释

批量化注释

1.进入视图模式

  • 按住ctrl + v
    2.区域选择

  • **h、j、k、l、**进行区域选择

  • 数字 + shift + g选中连续的指定行数

  • shift + g 从光标开始到末尾全部选中
    3. 进入插入模式打上注释

  • shift +i进入插入模式并打上注释

  1. 批量注释
  • 按住Esc

批量注释演示

ctrl + v 进入视图模式,然后 数字 + shift + g****选中连续的指定行数。

shift +i 进入插入模式并打上注释。

​​​​​

再按Esc就能批量化注释了

批量化去注释

1.进入视图模式

  • ctrl + v
    2.选择注释范围

  • **h、j、k、l、**进行区域选择

  • 数字 + shift + g选中连续的指定行数

  • shift + g 从光标开始到末尾全部选中
    3.批量化去注释

  • d

注意事项:注释是两个字符单位,要确保选择去注释的范围 **/ /**选择到。

5.底行模式

之前的退出就是底行模式

|-----|------------------------|
| 选项 | 说明 |
| w | 保存 |
| q | 退出 |
| ! | 强制退出 |
| wq | 保存并退出 |
| q! | 不保存,强制退出 |
| wq! | 保存并强制退出(最高权限者强制写入只读文件) |

1. 列出行号

set nu: 输入「set nu」后,会在文件中的每一行前面列出行号
set nonu:输入「set nu」后,会在文件中的每一行前面列出行号

2.查找字符

  • **/**关键字:往后查找第一个匹配的关键字。
  • **?**关键字:往前查找第一个匹配的关键字。

3.外部命令

  • 可以不退出 vim 在命令行执行基本操作指令。
  • 在 vim 界面的底行模式可以使用 ! 指令 的方式调用外部命令,enter回车键返回vim编辑界面。

4.多文件操作

  • 在当前文件工作时,vim 不能像 vs 那样直接切换到其他文件进行操作 。
  • 此时可以使用 vs 文件名,分屏打开其他文件进行操作。
  • 光标在哪个分屏就是在哪个分屏操作。
  • ctrl + ww 可以切换分屏光标,进行另一个分屏的操作。

6.替换内容

  1. s/搜索的内容/指定内容:用指定内容替换 光标所在行第一个 被搜索到的内容。
  2. s/搜索的内容/指定内容/g:用指定内容替换光标所在行全部 被搜多到的内容。
  3. %s/搜索的内容/指定内容:用指定内容替换 整个文件每一行第一个 被搜索到的内容。
  4. %s/搜索的内容/指定内容/g:用指定内容替换 整个文件 被搜索到的内容。

替换多段相同内容

6.异常退出

  • 编辑中的文件未保存直接退出就是异常退出。
  • 见的最多的异常退出就是在命令模式下不小心 ctrl + z 之后,之后再打开文件就会出现以下情况。
  • (O)pen Read-Only: 打开此档案成为只读档, 可以用在你只是想要查阅该档案内容并不想要进行编辑行为时。

  • (E)dit anyway:**还是用正常的方式打开你要编辑的那个档案, 并不会载入暂存盘的内容。不过很容易出现两个使用者互相改变对方的档案等问题!

  • ( R )ecover: 就是加载暂存盘的内容,用在你要救回之前未储存的工作。 不过当你救回来并且储存离开 vim 后,还是要手动自行删除那个暂存档喔!

  • (D)elete it: 你确定那个暂存档是无用的!那么开启档案前会先将这个暂存盘删除! 这个动作其实是比较常做的!因为你可能不确定这个暂存档是怎么来的,所以就删除掉他吧!

  • (Q)uit: 按下 q 就离开 vim ,不会进行任何动作回到命令提示字符。

  • (A)bort: 忽略这个编辑行为。

临时解决

  • 按下 q 之后出现以下信息,输入 E 或者 R 就能进入文件,但是之后还是会出现该提示。

永久解决

rm删除缓存文件

之前异常退出系统给我们缓存了一个隐藏文件,异常提醒时已经告诉我们名字了。

我们将它删除就行了。

相关推荐
geekrabbit2 分钟前
Ubuntu 22.04上安装Python 3.10.x
linux·python·ubuntu
ID_14 HuFei1 小时前
sed编辑器与awk的用法
linux·编辑器
阑梦清川1 小时前
unity编辑器&&c#脚本
编辑器
驯龙高手_追风1 小时前
Ubuntu下安装最新版本Apache2文件服务器
linux·服务器·ubuntu
炸裂狸花猫2 小时前
Linux技术04-IPVS
linux·运维·服务器
J老熊2 小时前
Linux下抓包分析Java应用程序HTTP接口调用:基于tcpdump与Wireshark的综合示例
java·linux·运维·web安全·http·面试
HoweWWW2 小时前
k8s中的存储
linux·容器·kubernetes
我叫啥都行3 小时前
计算机基础知识复习9.13
linux·笔记·后端·系统架构
躺下睡觉~3 小时前
Unity-Transform-坐标转换
linux·unity·游戏引擎
库库的里昂3 小时前
【Linux修行路】网络套接字编程——UDP
linux·运维·服务器·网络·udp