linux vi/vim 编辑器学习总结

很多时候我们开发人员不可避免的会涉及到项目部署,这个时候使用的就不是我们所熟知的 Windows 和 Mac OS 操作系统了,而是类 Unix 系统。项目部署时通常需要更改一些配置操作,比如环境地址更换,系统挂载,docker 镜像修改等,这时候我们就需要用一款编辑器来修改代码。

vi/vim

在所有的类 Unix 系统中都会内建 vi 编辑器,其他的编辑器则不一定会存在。vim 是从 vi 发展出来的一个文本编辑器,命令众多,代码补全等方便编程的功能特别丰富,使用非常广泛。

vim官网对 vim 的解释:

Vim is a highly configurable text editor for efficiently creating and changing any kind of text. It is included as "vi" with most UNIX systems and with Apple OS X.

Vim 是一个高度可配置的文本编辑器,用于有效地创建和更改任何类型的文本。它作为 “vi” 包含在大多数 UNIX 系统和 Apple OS X 中。

vi/vim 的使用方法

vim 分为三种模式:

  • 命令模式
  • 输入模式
  • 底线命令模式

vim <filename> 命令,将进入 vim 命令模式,如果没有该文件,将新建该文件。

命令模式

启动 vi/vim 编辑器,默认进入命令模式。这时候敲击键盘被认为是命令,而不是字符。

命令模式下,可使用:

  • 复制:yy 和 nyy, yy 复制光标所在的那一行,n 表示数字,3yy 表示复制光标所在的及其向下的 3 行。
  • 粘贴:p 表示将复制的内容粘贴到光标所在的下一行。P 表示将复制的内容粘贴到光标所在的上一行。
  • 复原(撤销):u 表示撤销上一步命令,相当于 Windows 下的 ctrl + z, Mac 下的 command z
  • 重复:ctrl + r 表示重复撤销前的上一个命令, 相当于 Windows 下的 ctrl + shift + z, Mac 下的 command + shift + z
  • 删除:在一行字符中,x 为向后删除一个字符 (相当于 [del] 按键), X 为向前删除一个字符(相当于 [backspace] 亦即是退格键)。
  • 行删除:dd 和 ndd, dd 删除光标所在的那一整行, ndd 删除光标所在的及其向下的 n 行。

输入模式

在命令模式下按下 i/I, 或 a/A, 或 o/O (字母 o/O) 就进入输入模式。如果是在底行命令模式下,就先按下 esc 键进入命令模式,在按下 i/I, 或 a/A, 或 o/O (字母 o/O) 就进入输入模式。

输入模式中,可使用:

  • 字符按键,Shift + 字符按键组合,输入字符
  • ENTER,回车键,换行
  • BACK SPACE,退格键,删除光标前一个字符
  • DEL,(或 fn + BACK SPACE)删除键,删除光标后一个字符
  • 方向键,在文本中移动光标
  • HOME/END (或 fn + 左方向键/fn + 右方向键),移动光标到行首/行尾
  • Page Up/Page Down (或 fn + 上方向键/fn + 下方向键),上/下翻页
  • Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
  • ESC,退出输入模式,切换到命令模式

底线命令模式

在命令模式下按下:(英文冒号)就进入了底线命令模式。如果是在输入模式下,就先按下 esc 键进入命令模式,在按下:(英文冒号)进入底线命令模式。

底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。如:

  • w 保存文件
  • q 退出程序
  • 0 数字 0, 将光标移动到该文件的第一个字符处
  • $ 将光标移动到该文件的最后一行处
  • ESC 键可随时退出底线命令模式,回到命令行模式

vi/vim 的使用实例

下面使用 Mac 的 iTerm2 来演示和说明。

准备

首先新建 “vim编辑器学习总结”文件夹,然后进入该文件夹 mkdir vim编辑器学习总结 && cd vim编辑器学习总结

然后新建文件 “test.txt” touch test.txt,然后使用 vim 编辑器打开该文件,vim test.txt

也可以直接使用 vim 编辑器打开一个文件,如果该文件不存在,将会创建它。

下面使用一个事先准备好的文件docker-compose.yml来演示命令。

底行命令模式实例

这时候输入 : 就进入底行命令模式,输入 $ 就到了最后一行。

命令模式实例

然后输入 esc 便进入命令模式,这时候我想要复制当前行和下面一行

ports:
- 58000:8000

再粘贴到当前行的下面,于是就出现了

ports:
ports:
- 58000:8000
- 58000:8000

这时候敲击 u 就撤销了上一步粘贴,敲击 ctrl + r 就复原了上一步粘贴。 这时候敲击 i 便进入了输入模式

输入模式实例

在输入模式下,可以输入除 esc 以外的任意字符。

可以在输入模式下输入任意字符,输入 esc 就会退出输入模式,进入命令模式,输入 :wq! 就会强制保存然后退出 vim 编辑器。

linux vi/vim 编辑器学习总结的更多相关文章

  1. Linux vi/vim编辑器常用命令与用法总结

    (一)vi/vim是什么?Linux世界几乎所有的配置文件都是以纯文本形式存在的,而在所有的Linux发行版系统上都有vi编辑器,因此利用简单的文字编辑软件就能够轻松地修改系统的各种配置了,非常方便. ...

  2. $Linux vi/vim编辑器常用命令与用法总结 (Markdown编辑版)

    vi/vim是什么? Linux世界几乎所有的配置文件都是以纯文本形式存在的,而在所有的Linux发行版系统上都有vi编辑器,因此利用简单的文字编辑软件就能够轻松地修改系统的各种配置了,非常方便.vi ...

  3. Linux vi/vim编辑器

    所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在. 但是目前我们使用比较多的是 vim 编辑器. vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正 ...

  4. 【Linux学习】Vi / Vim编辑器—编辑器工作模式、vi编辑操作

    Vi / Vim编辑器-编辑器工作模式.vi编辑操作 推荐一个很好的学习指南:http://www.oschina.net/translate/learn-vim-progressively 一.编辑 ...

  5. 【转】Linux上vi(vim)编辑器使用教程

    Linux上vi(vim)编辑器使用教程 ------------------------------------------------------------ ikong ------------ ...

  6. Linux系统Vi/Vim编辑器的简单介绍、安装/卸载、常用命令

    Linux系统Vi/Vim编辑器的简单介绍.安装/卸载.常用命令 1.介绍 vi(Visual Interface)编辑器是Linux和Unix上最基本的文本编辑器,工作在字符模式下.由于不需要图形界 ...

  7. Linux随笔 - vi/vim 编辑器显示行号

    显示行号 1. 打开vi 编辑器 2. 输入  :set number 3. 回车 关闭行号显示 1. 打开vi 编辑器 2. 输入  :set nonumber 3. 回车 行号在每次打开 vi/v ...

  8. vi/vim编辑器的基本操作

    vi/vim编辑器的基本操作 Contents 1. 工具准备(下载gvim) 2. vi/vim基本入门 2.1. 安装 2.2. 基本使用 3. vi/vim基本命令表 1 工具准备(下载gvim ...

  9. windows下vi/vim编辑器的基本操作

    windows下vi/vim编辑器的基本操作 Contents 1. 工具准备(下载gvim) 2. vi/vim基本入门 2.1. 安装 2.2. 基本使用 3. vi/vim基本命令表 1 工具准 ...

随机推荐

  1. c# 如何进行动态加载dll

    最近遇到了在c#中如何进行动态加载dll的话,搞定了,下面介绍一下自己的步骤. 1,新建dll. 打开vs,新建project->Class Library->项目名为testdll1.在 ...

  2. [RN] React Native 打包时 减少 Apk 的大小

    React Native 打包时 减少 Apk 的大小 主要有两个方法: 在打包前设置 android\app\build.gradle 文件中 1) def enableProguardInRele ...

  3. 洛谷 P2815 IPv6地址压缩 题解

    P2815 IPv6地址压缩 题目背景 (友情提示:IPv6基础知识曾多次出现在NOIP初赛中)Internet Protocol,互联网协议,即为我们常说的IP.我们目前常说的IP主要指它的第四版, ...

  4. Spring中静态方法中使用@Resource注解的变量

    开发中,有些时候可能会工具类的静态方法,而这个静态方法中又使用到了@Resource注解后的变量.如果要直接使用 Utils.staticMethod(),项目会报异常:如果不直接使用,还要先 new ...

  5. html上传文件限制、前端限制文件类型

    <input id="file" type="file" accept=".xls,.xlsx" style="width: ...

  6. GuavaCache简介(一)是轻量级的框架 少量数据,并且 过期时间相同 可以用 GuavaCache

    还有一篇文章是讲解redis 如何删除过期数据的,参考:Redis的内存回收策略和内存上限(阿里) 划重点:在GuavaCache中,并不存在任何线程!它实现机制是在写操作时顺带做少量的维护工作(如清 ...

  7. 冰多多团队-第三次Scrum会议

    冰多多团队-第三次Scrum会议 会议基本情况 会议时间:4月9日 21:30 - 21:45 会议地点:新主楼F座2楼沙发休息处 工作情况 团队成员 已完成任务 待完成任务 zpj 接入Action ...

  8. 冰多多团队-第八次Scrum例会

    冰多多团队-第八次Scrum会议 工作情况 团队成员 已完成任务 待完成任务 zpj debug, IAT debug, IAT 牛雅哲 将语音部分迁移到IatDemo上,去将科大讯飞的语音听写dem ...

  9. 日常开发中的shell小技巧

    工具推荐 命令行中很方便的代码统计工具---cloc 强大的分屏工具---tmux 最舒服的markdown书写工具---typora markdown图床推荐--七牛云 模拟生成熵(避免暴力手搓键盘 ...

  10. 关于用maven创建的springboot工程打包jar后找不到配置文件的问题

    你的resources文件夹的名称写错了!!! 如果不在pom中配置build的资源路径,那么你的资源文件名必须默认是“resources”! 解决办法有两个: 1.修改文件夹名称 2.添加pom的b ...