Linux Vim 简介

2023-10-27

01. 编辑器 Gedit 介绍

gedit 是一个 GNOME 桌面环境下兼容 UTF-8 的 文本编辑器。它使用 GTK+ 编写而成,因此它十分的简单易用,有良好的语法高亮,对中文支持很好,支持包括 gb2312gbk 在内的多种 字符编码。gedit 是一个自由软件

gedit 是 Linux 下的一个纯文本编辑器,类似 windows 下的写字板程序,在不需要特别复杂的编程环境下,作为基本的文本编辑器比较合适。但你也可以把它用来当成是一个集成开发环境 (IDE), 它会根据不同的语言高亮显现关键字和标识符。打开gedit图形界面如下:

02. 什么是 Vi(Vim)

vi (Visual interface) 编辑器是 Linux 系统中最常用的文本编辑器,vi 在 Linux 界有编辑器之神的美誉,几乎所有的 Linux 发行版中都包含 vi 程序。

vi 工作在字符模式下,不需要图形界面,非常适合远程及嵌入式工作,是效率很高的文本编辑器,尽管在 Linux 上也有很多图形界面的编辑器可用,但vi的功能是那些图形编辑器所无法比拟的。

vim 是 vi 的升级版,它不仅兼容 vi 的所有指令,而且还有一些新的特性,例如 vim 可以撤消无限次、支持关键词自动完成、可以用不同的颜色来高亮你的代码。vim 普遍被推崇为类 vi 编辑器中最好的一个。vim 键盘如下:

03. vim工作模式

vi 有三种基本工作模式: 命令模式、文本输入模式(编辑模式)、末行模式

4.1 命令模式

任何时候,不管用户处于何种模式,只要按一下 ESC 键,即可使 vi 进入命令模式。我们在 shell 环境下输入启动 vim 命令,进入编辑器时,也是处于该模式下。

在命令模式下,用户可以输入各种合法的 vi 命令,用于管理自己的文档。此时从键盘上输入的任何字符都被当做编辑命令来解释,若输入的字符是合法的 vi 命令,则 vi 在接受用户命令之后完成相应的动作。但需注意的是,所输入的命令并不在屏幕上显示出来。若输入的字符不是 vi 的合法命令,vi 会响铃报警。

4.2 编辑模式

在命令模式下输入插入命令 i(I)、附加命令 a(A) 、打开命令 o(O)、替换命 s(S)都可以进入文本输入模式,此时vi窗口的最后一行会显示“插入”。

在该模式下,用户输入的任何字符都被 vi 当做文件内容保存起来,并将其显示在屏幕上。在文本输入过程中,若想回到命令模式下,按键ESC即可。

4.3 末行模式

末行模式下,用户可以对文件进行一些附加处理。尽管命令模式下的命令可以完成很多功能,但要执行一些如字符串查找、替换、显示行号等操作还是必须要进入末行模式的。

在命令模式下,输入冒号即可进入末行模式。此时 vi 窗口的状态行会显示出冒号,等待用户输入命令。用户输入完成后,按回车执行,之后 vi 编辑器又自动返回到命令模式下。

04. vim教程

deng@itcast:~/test$ vimtutor

05. vim基本操作

6.1 打开文件

vim filename:打开或新建文件,并将光标置于第一行行首,如果文件不存在,则会新建文件。打开不存在文件如下图所示:

6.2 编辑文件

如果通过 vi 打开一个已经存在的文件,首先进入命令模式,此时输入的任何字符都被视为命令,不能输入内容。

在命令模式输入 i,即可进入编辑模式,编辑文件内容。

6.3 保存文件

方式一:一定要先退出插入模式(按 Esc 进入命令模式),然后(小写状态下),shift + zz (按住 “shift” + 按两下“z”键),或者(大写状态下:ZZ) 即可保存退出当前文件。

方式二:先退出插入模式(按 Esc 进入命令模式);然后在命令模式下按下:(英文冒号)就进入了末行命令模式,末行命令模式可以输入单个或多个字符的命令,可用的命令非常多。在底线命令模式中,基本的命令有(已经省略了冒号):

  • q:退出程序。
  • q!:退出文件,对文件的修改不做保存。
  • w:保存当前对文件的修改,但是不退出文件。
  • w!:强制保存但是不退出文件。
  • w file:保存当前的文件修改到 file 文件当中。
  • wq:退出文件并保存对文件的修改。
  • e!:放弃对文件的所有修改,恢复文件到上次保存的位置。
  • saveas file:另存为 file。

06. vim实用操作

7.1 命令模式下的操作

1)切换到编辑模式

按键 功能
i 光标位置当前处插入文字
I 光标所在行首插入文字
o(字母) 光标下一行插入文字(新行)
O(字母) 光标上一行插入文字(新行)
a 光标位置右边插入文字
A 光标所在行尾插入文字
s 删除光标后边的字符,从光标当前位置插入
S 删除光标所在当前行,从行首插入

2) 光标移动

按键 功能
Ctrl + f 向前滚动一个屏幕
Ctrl + b 向后滚动一个屏幕
gg 到文件第一行行首
G(大写) 到文件最后一行行首,G必须为大写
mG或mgg 到指定行,m为目标行数
0(数字) 光标移到到行首(第一个字符位置)
$ 光标移到到行尾
l(小写L) 向右移动光标
h 向左移动光标
k 向上移动光标
j 向下移动光标
^ 光标移到到行首(第一个有效字符位置)

3)复制粘贴

按键 功能
[n]yy 复制从当前行开始的 n 行
p 把粘贴板上的内容插入到当前行

4)删除

按键 功能
[n]x 删除光标后 n 个字符
[n]X 删除光标前 n 个字符
D 删除光标所在开始到此行尾的字符
[n]dd 删除从当前行开始的 n 行(准确来讲,是剪切,剪切不粘贴即为删除)
dG 删除光标所在开始到文件尾的所有字符
dw 删除光标开始位置的字,包含光标所在字符
d0(0为数字) 删除光标前本行所有内容,不包含光标所在字符
dgg 删除光标所在开始到文件首行第一个字符开始的所有字符

5)撤销恢复

按键 功能
.(点) 执行上一次操作
u 撤销前一个命令
ctrl+r 反撤销
100 + . 执行上一次操作100次

6)保存退出

按键 功能
ZZ(shift+z+z) 保存退出

7)查找

按键 功能
/字符串 从当前光标位置向下查找(n,N查找内容切换)
?字符串 从当前光标位置向上查找(n,N查找内容切换)

8)替换

按键 功能
r 替换当前字符
R 替换当前行光标后的字符(ESC退出替换模式)

9)可视模式

按键 功能
v 按字符移动,选中文本,可配合h、j、k、l选择内容,使用d删除,使用y复制
Shift + v 行选(以行为单位)选中文本,可配合h、j、k、l选择内容,使用d删除,使用y复制
Ctrl + v 列选 选中文本,可配合h、j、k、l选择内容,使用d删除,使用y复制

7.2 末行模式下的操作

1)保存退出

按键 功能
:wq 保存退出
:x(小写) 保存退出
:w filename 保存到指定文件
:q 退出,如果文件修改但没有保存,会提示无法退出
:q! 退出,不保存
all 表示所有

2)替换

按键 功能
: s/abc/123/ 光标所在行的第一个abc替换为123
: s/abc/123/g 光标所在行的所有abc替换为123
:1,10s/abc/123/g 将第一行至第10行之间的abc全部替换成123
:%s/abc/123/g 当前文件的所有abc替换为123
:%s/abc/123/gc 同上,但是每次替换需要用户确认
:1,$s/abc/123/g 当前文件的所有abc替换为123

3)分屏

按键 功能
:sp 当前文件水平分屏
:vsp 当前文件垂直分屏
: sp 文件名 当前文件和另一个文件水平分屏
: vsp 文件名 当前文件和另一个文件垂直分屏
ctrl-w-w 在多个窗口切换光标
:wall/:wqall/:qall 保存/保存退出/退出所有分屏窗口
vim -O a.c b.c 垂直分屏
vim -o a.c b.c 水平分屏

4) 其它用法(扩展)

按键 功能
:!man 3 printf 在vim中执行命令 (q退出)
:r !ls -l 将ls -l执行的结果写入当前文件中
:r /etc/passwd 将/etc/passwd文件中的内容写入到当前文件中
:w /tmp/txt 将当前文件内容写入到/tmp/txt文件中
:w! /tmp/txt 强制将当前文件内容写入到/tmp/txt文件中
:1,10s/^g 将第1行到10行行首添加// (^表示行首) //\转移字符
:1,10s#^#//#g 将第1行到10行行首添加// (#可以临时代替/ 分隔)
:%s/;/\r{\r\treturn0;\r}\r/g 将;替换成{ return 0; }
:1,10s#//##g 将第1行到10行行首去掉// (#可以临时代替/ 分隔)

5) 配置文件
局部配置文件(推荐局部配置,因为这样不会影响到其他用户)

deng@itcast:~/share/2nd$ vim ~/.vimrc

全局配置文件:

deng@itcast:~/share/2nd$ sudo vim /etc/vim/vimrc

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux Vim 简介 的相关文章

随机推荐

  • es打分机制

    基于Lucene的倒排索引算法
  • 【python数据挖掘课程】二十.KNN最近邻分类算法分析详解及平衡秤TXT数据集读取

    这是 Python数据挖掘课程 系列文章 也是我这学期上课的部分内容及书籍的一个案例 本文主要讲述KNN最近邻分类算法 简单实现分析平衡秤数据集 希望这篇文章对大家有所帮助 同时提供些思路 内容包括 1 KNN算法基础原理知识 2 最近邻分
  • 如何手动运行一个容器【一】

    作者 行云创新 周朋 每个刚涉足容器的人都会对容器的实现有所困惑 容器是如何实现的 是如何复用宿主机的资源 并且实现资源隔离的 下面会用shell创建一个容器 为大家展示一个容器的创建过程 1 创建镜像 我们一般用 docker pull
  • 宏定义的#和##

    宏定义中一个 表示右侧的符号转化为字符串 比如 define STR x x QString s STR 3 编译ok s值为 3 之前在看QT源码时 发现了下面的宏定义 define QLOCATION 0 FILE QT STRINGI
  • Typora + Gitee 配置图床_图片自动上传教程

    一 创建 Gitee 仓库 进入 Gitee 官网 注册一个属于自己的账号 点击创建仓库并且设置为开源 一定要是开源的public 只有这样你的图片才能被别人访问到 二 设置私人令牌 进入个人设置 gt 选择私人令牌进行创建 gt 设置自己
  • 华为od机考真题-HJ6-质数因子(简单)

    while 1 try num int input c 2 while c lt num 0 5 if num c 0 print c end
  • C++ Primer 学习笔记十五 —— 面向对象编程

    记录笔记原则 1 用简单易懂的语言叙述自己的理解 避免照搬原文 2 用实例说明 避免空洞 3 多做总结和横向对比 避免片面 面向对象三个基本概念 抽象 继承 动态绑定 继承使我们简化了类的定义 动态绑定使我们简化了接口的实现 使得所有继承层
  • 探究java IO之AutoCloseable,Closeable和Flushable接口

    http blog csdn net caiwenfeng for 23 article details 41862225 有3个接口对于流类相当重要 其中两个接口是Closeable和Flushable 它们是在java io包中定义的
  • BQ40Z50/BQ4050/BQ40Z80 等 BQ40xxx 系列电量计外围电路设计指导

    TI 电量计在消费和工业市场电池产品广泛应用 本文围绕电量计的功能逐一介绍电量计供电和 采样 对外交互 电池保护 电池均衡等外围电路设计 以帮助大家优化电量计电路设计 提高 开发效率 FAE 壹伍柒 陆陆贰陆 柒捌贰伍 1 电量计外围电路框
  • GPIO 8种工作模式

    GPIO 是什么 GPIO全称General Purpose Input Output 即通用输入 输出 其实GPIO的本质就是芯片的一个引脚 通常在ARM中所有的I O都是通用的 不过由于每个开发板上都会设计不同的外围电路 这就造成GPI
  • QT——操作数据库03

    目录标题 一 安装数据库 二 连接数据库 一 在项目的pro文件中增加一行代码 二 连接sqlite 三 封装连接数据库操作 三 增删查改例子 一 安装数据库 一般使用mysql或者sqlite mysql安装教程 sqlite安装教程 1
  • 多线程顺序打印的5种解法

    多线程同步的方式有许多 有传统的synchronized锁 还可以使用lock锁 下面列举多线程顺序打印的5种解法 算作对线程同步的一个总结 文章目录 经典面试题 多种解法 使用 Lock 使用 wait notify 使用 Lock Co
  • Win10添加开机自动运行软件三种方法(亲测可用)

    Win10管理开机启动项的方法相信大家已经非常熟悉 msconfig命令各系统都通用 那么很多用户发觉Win10和Win7 XP等系统不同 没有启动文件夹 那么我们怎么添加开机启动项呢 如晨软件或程序没有开机启动设置的话 是的 在Win10
  • JGit Authentication JGit验证机制

    验证机制在JGit中大部分与本地git相同 普遍使用SSH协议和HTTP S 协议和他们所支持的验证方法 这篇文章总结了如何使用JGit的验证API去安全连接远程GIT库 虽然在下面的例子中使用的是CloneCommand方法 但是它能实现
  • pip导包时产生错误,UnicodeDecodeError: 'gbk' codec can't decode byte.....illegal multibyte sequence(已解决)

    主要写了解决问题的思路 解决办法在最底部 pip导入python包时产生错误 ERROR Command errored out with exit status 1 command d python38 python exe c impo
  • 使用CSS3的Flex属性让元素居中

    div div
  • 腾讯云,搭建Docker环境

    安装与配置 Docker 任务时间 10min 20min 安装 Docker Docker 软件包已经包括在默认的 CentOS Extras 软件源里 因此想要安装 docker 只需要运行下面的 yum 命令 yum install
  • 【基于大数据的电信诈骗可视化分析-哔哩哔哩】 https://b23.tv/AxkY2Zj

    基于大数据的电信诈骗可视化分析 哔哩哔哩 https b23 tv AxkY2Zj https b23 tv AxkY2Zj
  • SOLIDWORKS如何定制化异型孔向导及其孔标注

    异型孔向导是SOLIDWORKS中一个极为方便的功能 只需要简单的几步设置就可以根据工程师设定好的标准 类型 大小创建符合标准的孔 包括 柱形沉头孔 锥形沉头孔 直孔 直螺纹孔 锥形螺纹孔等等 此外由于工程图和三维模型的协同关联 生成孔的公
  • Linux Vim 简介

    文章目录 01 编辑器 Gedit 介绍 02 什么是 Vi Vim 03 vim工作模式 4 1 命令模式 4 2 编辑模式 4 3 末行模式 04 vim教程 05 vim基本操作 06 vim实用操作 7 1 命令模式下的操作 7 2