Linux之vi与vim命令使用

1、vi/vim介绍

使用vi/vim其实就相当于我们在Windows系统中创建文件、打开文件、编辑文件、保存文件操作

vi介绍:

vi是 visual interface的简称, 是linux中最经典的文本编辑器。

  • vi的特点

    • 只能是编辑 文本内容, 不能对 字体 段落进行排版

    • 不支持鼠标操作

    • 没有菜单

    • 只有命令

  • vi编辑器在 系统管理 服务器管理 编辑文件时, 其功能永远不是图形界面的编辑器能比拟的

vim介绍

  • vim:是从 vi (系统内置命令)发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
  • 简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。
  • vim 则可以说是程序开发者的一项很好用的工具。

2、vi/vim模式

vi/vim模式主要分为以下三种:

  • 命令模式:在Linux终端中输入“vim 文件名”就进入了命令模式,但不能输入文字。
  • 编辑模式:在命令模式下按i就会进入编辑模式,此时就可以写入程式,按Esc可回到命令模式。
  • 末行模式:在命令模式下按:进入末行模式,左下角会有一个冒号出现,此时可以敲入命令并执行。

下面是三种模式的简单分析图:

 

3、打开和新建文件

使用者权限:当前文件的权限用户

在终端中输入vim在后面跟上 文件名 即可

vim txtfile.txt

  • 如果文件已经存在, 会直接打开该文件
  • 如果文件不存在, 保存且退出时 就会新建一个文件

4、三种模式切换

4.1、进入命令模式

上接上面的例子,我们执行下面的命令其实就是进入了命令模式

vim txtfile.txt

执行效果如下图

4.2、进入编辑模式  

上接上面的例子,按i进入插入模式

在 vi 中除了常用 i 进入编辑模式 外, 还提供了一下命令同样可以进入编辑模式

命令英文功能常用
iinsert在当前字符前插入文本常用
Iinsert在行首插入文本较常用
aappend在当前字符后添加文本
Aappend在行末添加文本较常用
o在当前行后面插入一空行常用
O在当前行前面插入一空行常用

上图可以表现为以下形式,如下图

执行效果如下图  

由上图左下角我们看到【插入】(英文版为INSERT),说明我们进入了编辑模式

我们在里面插入数据,如下图

因为我们是一个空文件,所以使用【I】或者【i】都可以

如果里面的文本很多,要使用【A】进入编辑模式,即在行末添加文本

4.3、进入末行模式   

  1. 编辑模式不能保存文件
  2. 必须先推到命令模式
  3. 先按Esc键退出到命令模式
  4. 然后按小写的:wq 正常保存退出

进入末行模式—》按符号: 鼠标跑到屏幕的最后一行,执行效果如下图

然后按小写的:wq 正常保存退出  

退出后显示【已写入】  

以下为其他的退出模式:

  • :q 当vim进入文件没有对文件内容做任何操作可以按"q"退出
  • :q! 当vim进入文件对文件内容有操作但不想保存退出
  • :wq 正常保存退出
  • :wq! 强行保存退出,只针对与root用户或文件所有人生

5、vim定位行

使用上面的txtfile.txt例子,我们打开文件定位到第6行,如下:

vim txtfile.txt +6

执行效果如下图

 

6、异常处理

  • 如果 vim异常退出, 在磁盘上可能会保存有 交换文件

  • 下次再使用 vim 编辑文件时, 会看到以下屏幕信息,

解决方案:将后缀名为.swp的文件删除即可恢复

再次编辑文件不在出现提示警告!  

7、操作扩展

1) 上 下 左 右

命令功能手指
h向左食指
j向下食指
k向上中指
l向右无名指

也可以使用键盘上的上下左右箭头,这个更有方向感。

2) 行内移动

命令英文功能
wword向后移动一个单词
bback向前移动一个单词
0行首
^行首, 第一个不是空白字符的位置
$行尾

3) 行数移动

命令英文功能
gggo文件顶部
Ggo文件末尾
数字gggo移动到 数字 对应行数
数字Ggo移动到 数字 对应行数
: 数字移动到数字对应的 行数

4) 屏幕移动

命令英文功能
Ctrl + bback向上翻页
Ctrl + fforward向下翻页
HHead屏幕顶部
MMiddle屏幕中间
LLow屏幕底部

5) 选中文本(可视模式)

  • 学习 复制 命令前, 应该先学会 怎么样选中 要复制的代码

  • 在 vi/vim 中要选择文本, 需要显示 visual 命令切换到 可视模式

  • vi/vim 中提供了 三种 可视模式, 可以方便程序员的选择 选中文本的方式

  • 按 ESC 可以放弃选中, 返回到 命令模式

命令模式功能
v可视模式从光标位置开始按照正常模式选择文本
V可视化模式选中光标经过的完整行
Ctrl + v可是块模式垂直方向选中文本

6) 撤销和恢复撤销(保命指令)  

命令英文功能
uundo撤销上次的命令(ctrl + z)
Ctrl + ruredo恢复撤销的命令

7) 删除文本

命令英文功能
xcut删除光标所在的字符,或者选中的文字
d(移动命令)delete删除移动命令对应的内容
dddelete删除光标所在行, 可以删除多行
Ddelete删除至行尾

提示: 如果使用 可视模式 已经选中了一段文本, 那么无论使用 d 还是 x, 都可以删除选中文本

删除命令可以和移动命令连用, 以下是常见的组合命令(扩展):

命令作用
dw从光标位置删除到单词末尾
d}从光标位置删除到段落末尾
ndd从光标位置向下连续删除 n 行

8) 复制和剪切

vi/vim 中提供有一个 被复制文本的缓冲区

  • 复制 命令会将选中的文字保存在缓冲区

  • 删除 命令删除的文字会被保存在缓冲区

  • 在需要的位置, 使用 粘贴 命令可以将缓冲对的文字插入到光标所在的位置

命令英文功能
yycopy复制行
d(剪切命令)delete剪切
dd(剪切)delete剪切一行, 可以 ndd 剪切n行
ppaste粘贴

提示:

  • 命令 d 、x 类似于图形界面的 剪切操作 -- ctrl + x

  • 命令 y 类似于 图形界面的 复制操作 -- Ctrl +

  • 命令 p 类似于图形界面的 粘贴操作 -- Ctrl + v

  • vi中的文本缓冲区只有一个,如果后续做过 复制、剪切操作, 之前缓冲区中的内容会被替换.

注意

  • vi中的 文本缓冲区 和 系统的 剪切板 不是同一个

  • 所以在其他软件中使用 Ctrl + C 复制的内容, 不能再 vi 中通过 p 命令粘贴

  • 可以在 编辑模式 下使用 鼠标右键粘贴

9) 替换

命令英文功能工作模式
rreplace替换当前字符命令模式
Rreplace替换当前行光标后的字符替换模式
  • R 命令可以进入 替换模式, 替换完成后, 按下ESC , 按下 ESC 可以回到 命令模式

  • 替换命令 的作用就是不用进入 编辑模式, 对文件进行 轻量级的修改

10) 缩排和重复执行

命令功能
>>向右增加缩进
<<向左减少缩进
.重复上次命令
  • 缩进命令 在开发程序时, 统一增加代码的缩进 比较有用!

    • 一次性 在选中代码前增加 4 个空格, 就叫做 增加缩进

    • 一次性 在选中代码前删除 4 个空格, 就叫做 较少缩进

  • 可视模式 下, 缩排命令 主需要使用 一个 > 或者 <

在程序中, 缩进 通常用来表示代码的归属关系

  • 前面空格越少, 代码的级别越高

  • 前面空格越多, 代码的级别越低

11) 查找

常规查找

命令功能
/str查找str
  • 查找到指定内容之后, 使用 Next 查找下一个出现的位置

    • n : 查找下一个

    • N : 查找上一个

  • 如果不想看到高亮显示, 可以随便查找一个文件中不存在的内容即可

  • 单词快速匹配

命令功能
*向后查找当前光标所在单词
#向前查找当前光标所在单词

在开发中, 通过单词快速匹配, 可以快速看到这个单词在其他位置使用过

12) 查找并替换

  • vi/vim 中查找和替换命令需要在 末行模式 下执行

  • 记忆命令格式

:%s///g

1) 全局替换

  • 一次向 替换文件中的 所有出现的旧文本

  • 命令格式如下

:%s/旧文本/新文本/g

2) 可视区域替换

  • 先选中 要替换文字的 范围

  • 命令格式如下

:s/旧文本/新文本/g

3) 确认替换:

c confirm 确认

  • 如果把末尾的 g 改成 gc 在替换的时候, 会有提示! 推荐使用

  • 命令格式如下

:%s/旧文本/新文本/gc
  • y - yes 替换

  • n - no 不替换

  • a - all 替换所有

  • q -quit 退出替换

  • l - last 最后一个, 并把光标移动到行首

  • ^E 向下滚屏

  • ^Y 向上滚屏

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悠然予夏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值