vi 和 vim 三种模式的相互转化图

vim 和 vi 的快捷键键盘一览图

vi和vim编辑器

1. vi和vim的基本介绍

  • 所有Linux系统都会内置vi文本编辑器
  • vim是vi的升级版,可以主动以字体颜色分辨语法的正确性,代码补完和编译,错误跳转等功能。

2. vi和vim的三种模式

2.1 正常模式

  • 在正常模式下,我们可以使用快捷键。
  • 用vim打开一个文件就直接进入一般模式
  • 可以使用【删除字符】或【删除整行】来处理文档内容,也可以使用【复制黏贴按钮】

2.2 插入/编辑模式

  • 在这个模式下,可以编辑文件内容。
  • 按下i,I,o,O,a,A,r,R等字母就可进入编辑模式

2.3 命令行模式

  • 在这个模式中,可以利用指令完成读取,存盘,替换,离开,显示行号的等动作。
  • wq保存退出
  • q无修改直接退出
  • q!不保存修改直接退出

2.4 三种模式转换示意图

3. Vim 的常见指令案例

  1. yy:拷贝当前行
  2. 5yy:拷贝当前5行
  3. dd:删除当前行
  4. 5dd:删除当前行向下的5行
  5. 在文件中查找某个单词:命令行输入 /(查找内容),按n查找下一个
  6. 设置文件行号:set nu,取消文件行号:set nonu
  7. 编辑文件,正常模式下使用快捷键到达文档最末行:G,最首行:gg
  8. 撤销输入:在正常模式下输入u
  9. 编辑文件,光标移动到某行:shift+g
    • 显示行号:set nu
    • 输入行号这个数
    • 输入shift+g

4. vim其他常见指令补充

4.1 文件命令

指令 说明
vim [file1 file2 file3 ...] 打开单个或多个文件
:open file 在vim窗口中打开一个新文件
:split file 在新窗口中打开文件(split打开的窗口都是横向的,使用vsplit可以纵向打开窗口。)
Ctrl+ww 移动到下一个窗口
Ctrl+wj 移动到下方的窗口
Ctrl+wk 移动到上方的窗口
:close 最后一个窗口不能使用此命令,可以防止意外退出vim。
:only 关闭所有窗口,只保留当前窗口
:bn 切换到下一个文件
:bp 切换到上一个文件
:args 查看当前打开的文件列表,当前正在编辑的文件会用[]括起来
:e ftp://192.168.10.76/abc.txt 打开远程文件,比如ftp或者share folder

4.2 普通模式

4.2.1 插入命令

指令 说明
i 在当前位置生前插入
I 在当前行首插入
a 在当前位置后插入
A 在当前行尾插入
o 在当前行之后插入一行
O 在当前行之前插入一行

4.2.2 游标移动

指令 说明
gg 移动到文件头。 = [[
G(shift + g) 移动到文件尾。 = ]]
行數 → G 移動到第 n 行
冒号+行号,回车 比如跳到240行就是 :240回车
h 左移一个字符
l 右移一个字符,这个命令很少用,一般用w代替。
k 上移一个字符
j 下移一个字符
w 向前移动一个单词(光标停在单词首部)
b 向后移动一个单词 2b 向后移动2个单词
e 同w,只不过是光标停在单词尾部
ge 同b,光标停在单词尾部。
^ 移动到本行第一个非空白字符上。
0 移动到本行第一个字符上
HOME 移动到本行第一个字符。同0健。
$ 移动到行尾 3$ 移动到下面3行的行尾
f(find) fx将找到光标后第一个为x的字符,3fd将找到第三个为d的字符。
F 同f,反向查找

4.2.3 撤销和重做

指令 说明
u 撤销(Undo)
U 撤销对整行的操作
Ctrl + r 重做(Redo),即撤销的撤销。

4.2.4 删除命令

指令 说明
x 删除当前字符
3x 删除当前光标开始向后三个字符
X 删除当前字符的前一个字符。X=dh
dl 删除当前字符, dl=x
dh 删除前一个字符
dd 删除当前行
dj 删除上一行
dk 删除下一行
10d 删除当前行开始的10行。
D 删除当前字符至行尾。D=d$
d$ 删除当前字符之后的所有字符(本行)
kdgg 删除当前行之前所有行(不包括当前行)
jdG(jd shift + g) 删除当前行之后所有行(不包括当前行)
:1,10d 删除1-10行
:11,$d 删除11行及以后所有的行
:1,$d 删除所有行
J(shift + j) 删除两行之间的空行,实际上是合并两行。

4.2.5 拷贝,剪贴和粘贴

指令 说明
yy 拷贝当前行
nyy 拷贝当前后开始的n行,比如2yy拷贝当前行及其下一行。
p 在当前光标后粘贴,如果之前使用了yy命令来复制一行,那么就在当前行的下一行粘贴。
shift+p 在当前行前粘贴
:1,10 co 20 将1-10行插入到第20行之后。
:1,$ co $ 将整个文件复制一份并添加到文件尾部。
ddp 交换当前行和其下一行
xp 交换当前字符和其后一个字符
ndd 剪切当前行之后的n行。利用p命令可以对剪切的内容进行粘贴
:1,10d 将1-10行剪切。利用p命令可将剪切后的内容进行粘贴。
:1, 10 m 20 将第1-10行移动到第20行之后。

正常模式下按v(逐字)或V(逐行)进入可视模式,然后用jklh命令移动即可选择某些行或字符,再按y即可复制

4.2.6 退出命令

指令 说明
:wq 保存并退出
ZZ 保存并退出
:q! 强制退出并忽略所有更改
:e! 放弃所有修改,并打开原来文件。
:q 未修改直接退出

4.2.7 注释命令

perl程序中#开始的行为注释,所以要注释某些行,只需在行首加入#

指令 说明
3,5 s/^/#/g 注释第3-5行
3,5 s/^#//g 解除3-5行的注释
1,$ s/^/#/g 注释整个文档。
:%s/^/#/g 注释整个文档,此法更快。

4.3 执行shell命令

  • :!command
指令 说明
:!ls 列出当前目录下文件
:!perl -c script.pl 检查perl脚本语法,可以不用退出vim,非常方便。
:!perl script.pl 执行perl脚本,可以不用退出vim,非常方便。
:suspend或Ctrl - Z 挂起vim,回到shell,按fg可以返回vim。

4.4 帮助命令

指令 说明
:help or F1 显示整个帮助
:help xxx 显示xxx的帮助,比如 :help i, :help CTRL-[(即Ctrl+[的帮助)。
:help 'number' Vim选项的帮助用单引号括起
:help <Esc> 特殊键的帮助用<>扩起
:help -t Vim启动参数的帮助用-
:help i_<Esc> 插入模式下Esc的帮助,某个模式下的帮助用模式_主题的模式

帮助文件中位于||之间的内容是超链接,可以用Ctrl+]进入链接,Ctrl+o(Ctrl + t)返回

4.5 其他非编辑命令

指令 说明
. 重复前一次命令
:set ruler? 查看是否设置了ruler,在.vimrc中,使用set命令设制的选项都可以通过这个命令查看
:scriptnames 查看vim脚本文件的位置,比如.vimrc文件,语法文件及plugin等。
:set list 显示非打印字符,如tab,空格,行尾等。如果tab无法显示,请确定用set lcs=tab:>-命令设置了.vimrc文件,并确保你的文件中的确有tab,如果开启了 expandtab,那么tab将被扩展为空格。
  • Vim教程

    • 在Unix系统上 $ vimtutor
    • 在Windows系统上 :help tutor
  • 录制宏:

    • 按q键加任意字母开始录制,再按q键结束录制(这意味着vim中的宏不可嵌套),使用的时候@加宏名,比如qa。。。q录制名为a的宏,@a使用这个宏。
  • :syntax 列出已经定义的语法项

  • :syntax clear 清除已定义的语法规则

  • :syntax case match 大小写敏感,int和Int将视为不同的语法元素

  • :syntax case ignore 大小写无关,int和Int将视为相同的语法元素,并使用同样的配色方案

5. Vim拓展教程

菜鸟教程vim链接

【Linux】3.2 vi和vim编辑器的更多相关文章

  1. linux学习笔记--vi与vim编辑器

    vi编辑器全名为Visual Interface,即为可视化接口,类似于Windows中的记事本 vim相当于是vi的一个升级版本,包含vi的一切操作命令,vim相对于vi做了哪些提升: 1.vim支 ...

  2. Linux 入门记录:五、vi、vim 编辑器

    一.vi.vim编辑器 vi 是一个命令行界面下的文本编辑工具,最早在 1976 年由 Bill Joy 开发.当时名字叫做 ex.vi 支持绝大多数操作系统(最早在类 Unix 操作系统的 BSD上 ...

  3. Linux学习之十三-vi和vim编辑器及其快捷键

    vi和vim编辑器及其快捷键 1.vi与vim区别 它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面. vim的这些优势主要体现在以下几个方 ...

  4. Linux系统vi或者vim编辑器中如何显示行号

    设置行号很简单 我们要到vi或者vim编辑器的命令模式下,输入set number :set number 按下回车就显示行号了 那么怎么关闭行号呢? 很简单,我们只要再到vi或者vim编辑器的命令模 ...

  5. vi与vim编辑器与解决vim编辑异常

    目录 一:vi与vim编辑器 二:解决vim编辑异常 一:vi与vim编辑器 vim是vi的升级版编辑器,就是vim比vi丰富一些. 1.安装vim 命令 yum install vim -y 2.打 ...

  6. Linux实操篇 vi和vim编辑器

    vi和vim的基本介绍 所有的Linux系统都会内建vi文本编辑器. vim具有程序编辑的能力,可以看做是vi的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计.代码补完.编译及错误跳转等 ...

  7. linux的vi和vim编辑器操作

    vi:linux内部的文本编辑器:vim:vi的增强版,具有程序编辑的能力. vi和vim的三种常见模式: (1)正常模式(一般模式):vim一打开就是这种模式,此模式下可以使用各种快捷键,比如复制粘 ...

  8. Linux 笔记 - 第七章 Vi 和 Vim 编辑器

    博客地址:http://www.moonxy.com 一.前言 Vi 与 Vim 都是多模式编辑器,是 Linux 中必不可少的工具.不同的是 Vim 是 Vi 的升级版本,它不仅兼容 Vi 的所有命 ...

  9. Linux之vi和vim编辑器

    目录 1. vi和vim简介 2. vi 和 vim 的三种常见模式 2.1 正常模式 2.2 插入模式 2.3 命令行模式 3. 三种模式间的切换 4. 常用快捷键案例 5. 常用命令 1. vi和 ...

  10. linux vi和vim编辑器

    所有的Linux系统都会内建vi文本编辑器,vim具有程序编辑的能力,可以看作是vi的增强版本 三种常见模式 正常模式 以vim打开一个文档直接进入的模式,快捷键可以使用. 1.这个模式可以使用上下左 ...

随机推荐

  1. 让我看看有多少人不知道Vue3中也能实现高阶组件HOC

    前言 高阶组件HOC在React社区是非常常见的概念,但是在Vue社区中却是很少人使用.主要原因有两个:1.Vue中一般都是使用SFC,实现HOC比较困难.2.HOC能够实现的东西,在Vue2时代mi ...

  2. 树莓派linux kernel 添加menuconfig菜单选项和编译

    https://www.bilibili.com/video/av91990721?zwbcmrpi_defconfig 打开顶层目录下的 Makefile,搜索 %config 找到如下内容: # ...

  3. deeplearning4j~实现简单模型训练和测试

    DeepLearning4j (DL4J) 是一个开源的深度学习库,专为 Java 和 Scala 设计.它可以用于构建.训练和部署深度学习模型.以下是关于如何使用 DL4J 的基本指南以及一个简单的 ...

  4. 使用postgis数据库进行多边形裁切线

    背景:有一份polyline的基础数据,有一个多边形,求出多边形内的所有polyline PostGIS参考手册: http://postgis.net/docs/reference.html 1.p ...

  5. c# UWP 墨迹 手写识别

    <InkCanvas Name="inkCanvas"></InkCanvas> <Button Name="btnRecognize&qu ...

  6. 使用 pdf.js 通过文件流方式加载pdf文件

    关于Pdf.js的基础知识,请参考我的博客  使用 pdf.js 在网页中加载 pdf 文件 使用 pdf.js 跨域问题的处理方法 上面两篇博客中介绍的内容都是基于直接加载远程服务器中静态PDF文件 ...

  7. Maven:目前的部分技术

  8. 两个半成品的ORM

    只要是有点结构化的思想,不可能项目里一个sqlHelper 满天飞 到处写 ,最终你的c#代码还是得返回一个Class 才好操作,sqlhelper, datatable这种东西也只是临时将就一下,稍 ...

  9. 使用PhantomJS解决VUE项目无法被百度收录

    一.安装PhantomJS 安装文章:https://www.cnblogs.com/robots2/p/17340143.html 二.编写脚本spider.js // spider.js 'use ...

  10. .NET Core内存结构体系(Windows环境)底层原理浅谈

    物理内存与虚拟内存 物理内存(Physical Memory) 定义:物理内存是计算机硬件中的实际RAM(如DDR5内存条),直接通过总线与CPU连接,用于临时存储运行中的程序和数据. 虚拟内存(Vi ...