IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Linux之vi和vim使用教程 -> 正文阅读

[开发工具]Linux之vi和vim使用教程

Linux之vi和vim使用教程

Unix系统有两个非常重要常用的文本编辑器:vi和Emacs。而其中的vi使用更为广泛,因此不管你喜欢使用哪一种,vi都是需要掌握的。而vim是vi的增强版,许多Linux都已经使用vim替代vi了(可以查看手册来确定),好在vim兼容vi的所有命令,我们可以使用vim来学习vi。


快速使用

如果你只是想临时使用vi简单编辑下文件,则只看下面几个步骤即可

  1. 使用vi file打开/创建文件file

  2. 打开后,按下i进入编辑模式,可以在光标处输入字符,使用上下左右移动光标,<backspace>和<delete>删除字符

  3. 编辑完成后,按下<esc>退出编辑模式,输入命令:wq保存并退出,或者输入:q!放弃修改,强行退出。


启动vi

为了学习vi,需要让vim以兼容模式启动,命令如下

vi -C [file...]

选项-C表示兼容模式,会使vim尽可能的像vi一样,等我们学会vi后再去掉不迟。

  • 当指定了文件名时,打开指定文件,若文件不存在,则会创建再打开
  • 当没有指定文件名时,会打开空白文件,在保存时需要指定文件名

使用:q可以退出vi

当你使用vi编辑文件时,会将文件的内容复制到编辑缓冲区,因此我们所编辑的是副本。

使用view可以用只读模式打开文件

tip:使用:set number可以显示行号,:set nonumber可以隐藏行号


命令模式和编辑模式

  • 命令模式:所有键入都会被解释成命令,例如x表示删除一个字符
  • 编辑模式:所有键入都直接插入到编辑缓冲区中,例如按下x会输入字符x

当vi启动时处于命令模式,按下i可以进入编辑模式。在编辑模式中按下esc键可以进入命令模式

常用的进入编辑模式的命令如下:

  • i:改变到编辑模式,在当前光标前插入数据
  • a:改变到编辑模式,在当前光标后插入数据
  • C:进入编辑模式,将当前光标到行尾的字符都删除
  • ccS:进入编辑模式,将当前行的字符都删除
  • R:进入编辑模式,但此时的输入会替换当前字符
  • c+移动光标:进入编辑模式,删除移动前光标到移动后间的字符,例如cw可以删除一个单词

退出vi

  • ZZ:wq:保存并退出
  • :q:退出vi,若有修改未保存则提示
  • :q!:强行退出,无论修改是否已保存

保存文件

  • :w:保存到原始文件
  • :w file:另存为新文件file
  • :w! file:另存为新文件file,若文件存在则覆盖
  • :w>> file:将修改后的文件追加到file的末尾

移动光标

可以使用上下左右键来移动光标,但效率太低。

下面列举一些我觉得好用的移动光标的命令,他们都无需按回车即可执行,注意大小写,且需要在命令模式中使用。

命令功能
h向左移动一个字符
j向下移动一个字符
k向上移动一个字符
l(小写L)向右移动一个字符
<Space>向右移动一个字符
<Enter>移动到下行的开头
^将光标移动到当前行的第一个非空格/制表符的字符上
w(小写)将光标移动到下一个单词的词首
e将光标移动到下一个单词的词尾
b将光标移动到上一个单词的词首
W(大写)同w, 忽略标点符号
E同e, 忽略标点符号
B同v, 忽略标点符号
^D向下移动半屏
^U向上移动半屏
gg跳转到第一行
G跳转到最后一行

标记与跳转

使用m+字母可以标记当前位置。例如命令ma,将当前位置标记为a。

如果需要跳转到a位置,可以使用如下命令

  • `a:反引号+a,调整到a位置
  • 'a:单引号+a,跳转到a所在行首

tip:通常标记为m,因为mm按起来方便,也好记


搜索

使用/?进行搜索,/表示向后搜索,?表示向前搜索。例如

/hello

表示从当前光标开始向后搜索hello,输入n可以查找下一个,N查找上一个

可以使用正则表达式匹配,例如

/^h

表示查找以h为开头的位置


替换

使用:s,语法为:

:s/pattern/replace/

其中pattern是要被替换的模式,replace是替换结果,例如将hello替换成hi。

:s/hello/hi/

注意:其只会替换当前行的第一个匹配项,如果希望在替换当前行所有的匹配项,则在命令最后加上g,如果希望在替换前确认,则在最后加上c,例如

:s/hello/hi/gc

如果最后没有gc,可以省略最后的/。在确认过程中可以使用^C终止替换

在替换时可以指定行号和范围,例如在57行到60行里进行替换的命令如下

:57,60s/hello/hi/

%可以表示整个编辑缓冲区,例如在整个文档中进行替换的命令如下

:%s/hello/hi/

删除文本

删除文本常用的命令如下:

  • x:删除当前光标处字符
  • dd:删除当前行
  • X:删除光标左边字符
  • d+移动光标:删除从当前光标到移动后位置间的字符,例如dG表示删除当前行(包括)到文档末尾所有内容,dgg表示删除当前行(包括)到文档开头所有内容
  • :%d:删除所有内容,其中%表示所有行,可以替换成指定行号

撤销与恢复

  • u:撤销上一命令对编辑缓冲区的修改。对于vim来说,多次按下u将撤销前面多条命令,而对于vi来说,第二次按下u将撤销上次撤销,即取消撤销
  • U:撤销自移动到当前行的那一刻起,对当前行所进行的所有改
    变。
  • .:重复上一命令对编辑缓冲区的修改。非常神奇,例如你进入编辑模式,输入了hello后回到命令模式,接下来只要按下.就可以在光标位置输入hello了

复制粘贴

vi中有一个无名缓冲区,类似于剪切板,可以存储一次复制/剪切的内容。在vi中所有删除命令,其实都相当于剪切,会将内容放到剪切板中。

粘贴可以使用pP(put),p将内容粘贴在光标后,P将内容粘贴在光标前。若剪切板中为一行/多行,则p将内容粘贴在光标后一行,P将内容粘贴在前一行。

复制可以使用yyy,其中y的用法和d一样,后跟移动光标,将移动前到移动后间的字符复制。yy表示复制当前行


  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-12-11 15:55:55  更:2021-12-11 15:56:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 14:23:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码