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. 浏览器渲染详细过程:重绘、重排和 composite 只是冰山一角

    https://juejin.im/entry/590801780ce46300617c89b8 渲染 这张很经典的图许多人都看过,其中的概念大家应该都很熟悉,也就是这么几个步骤:js修改dom结构或 ...

  2. new String("123") 创建了几个对象?

    String 对象可谓再熟悉不过了,与此相关的面试题经常会引出内存性能优化的问题,本篇主要以 new String("123") 创建了几个对象为例记录. 一.你能回答正确吗 St ...

  3. s3-sftp-proxy goreleaser rpm &&deb 包制作

    上次写过简单的s3-sftp-proxy基于容器构建以及使用goreleaser构建跨平台二进制文件的,下边演示下关于 rpm&&deb 包的制作,我们只需要简单的配置就可以生成方便安 ...

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

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

  5. spl_autoload_register 和 __autoload()魔术方法

    在 PHP 5.3 之前,__autoload 函数抛出的异常不能被 catch 语句块捕获并会导致一个致命错误(Fatal Error).  尽管 __autoload() 函数也能自动加载类和接口 ...

  6. Sublime Text 3关闭自动升级提醒

    由于种种原因,导致不想升级现有版本的ST3,但是被它的升级提醒弹窗严重骚扰! ||||||||||| 解 决 办 法 ||||||||||| 1.首选项 - 设置 - 用户(快捷键 ❀,)打开“Pre ...

  7. pytesseract.pytesseract.TesseractError: (1, 'Error opening data file /usr/local/share/tessdata/chi_sim.traineddata Please make sure the TESSDATA_PREFIX environment variable is set to your "tessdata"

    pytesseract.pytesseract.TesseractError: (1, 'Error opening data file /usr/local/share/tessdata/chi_s ...

  8. Swagger-BootStrap-UI生成的接口文档如何加Basic校验

    首先我们来看看swagger-bootstrap-ui的效果,如图所示: 看起来是不是比Swagger要大气的多. 回到重点上,为什么要给接口文档加密呢? 只对内开放,不对外开放,防止被第三方非公司人 ...

  9. 阿里云ecs centos yarn 安装

    安装流程:https://yarn.bootcss.com/docs/install/#centos-stable

  10. 微信小程序图片宽度100%,高度自适应

    实现图片自适应,按照一般情况只需设置: img { width: 100%; height: auto; } 但是微信小程序里是特例,需要image标签上设置属性mode=widthFix,就是hei ...