上一篇文章“linux入门系列3--linux远程登陆工具”讲解了如何使用常用的工具远程连接和管理linux服务器,要管理服务器必然会涉及到脚本文件的创建、编辑工作,因此在介绍命令之前,本文讨论linux中编辑器相关知识。

一、Vi/Vim介绍

  • VI(Visual Interface),是一个文本编辑器,主要在Unix及类Unix环境中使用。
  • Vim(Vi+improved)在Vi的基础之上进行了功能提升,相当于Vi的增强版。

所有类Unix 系统都会内建vi文本编辑器,就像window电脑上的记事本一样,可以对文本内容进行编辑,vi编辑器是Unix系统最初的编辑器, 允许查看文件中的行、在文件中移动、插入、编辑和替换文本 。

然而由于Unix系统是商业操作系统,国外一牛逼的程序员“ 理查德·斯托曼”发起了GNU计划(该计划目标是创建一套完全自由的操作系统,实现Unix系统的标准接口,因此完全向上兼容Unix,但是可以自由使用),在GNU项目中,程序员将vi编辑器移植到开源世界的同时对其做了改进,因此重命名为“Vi improved”,也就是我们说的vim。

ps: GNU 项目,英文全称为“GNU is Not Unix”,简单的说,就是一个开发类 Unix 操作系统的项目,GNU 操作系统是由 GNU 软件包及其第三方的免费软件包组成,所以其最大的特点就是免费。

因此vim是从vi发展而来的一个具有编程能力的文本编辑器, 可以主动的以字体颜色辨别语法的正确性,方便程序设计。 vim具有代码补全、编译及错误跳转等方便编程的功能,在程序员中被广泛使用。

有的linux发行版可能没有安装vim(需要时自行安装即可),但是一定会有vi编辑器。作为入门文章本文仅演示二者共同的用法,编辑器有三种模式:一般模式、编辑模式、命令模式。每种模式可以进行不同的操作,完成不同的功能。

三种模式之间可以相互转换。一般模式主要用于:复制、粘贴、删除;编辑模式主要用于编辑文本;命令模式主要执行文本的保存、查找等。

二、一般模式

我们平时在windos系统上编辑文件,肯定会涉及到复制、粘贴、删除等操作,而这些操作在vi中都是在一般模式下进行的。

一般模式是默认模式,要进入编辑模式和命令模式都需要它作为桥梁。

用vi命令打开一个文件直接进入一般模式,在这个模式中可以对文本内容进行复制、粘贴、删除等操作。可以通过键盘方向键控制光标移动到指定位置,也可以通过快捷键控制光标位置。

1.1 复制

命令(语法) 功能描述 案例(说明)
yy 复制当前光标所在行
y*y 复制当前光标所在行开始的*行 y2y:表示从当前光标所在行开始复制2行
yw 赋值一个单词 光标之后开始复制,包括词尾的空格;如果想要复制整个单词,就要把光标放到单词首字母

1.2 粘贴

命令(语法) 功能描述 案例(说明)
p 粘贴 粘贴到当前光标的下一行(复制的行),或当前光标字符之后(复制的单词)

1.3 删除

命令(语法) 功能描述 案例(说明)
dd 删除光标当前行
d*d 删除光标当前行开始的*行 d2d:表示从当前光标所在行开始删除2行
dw 删除光标之后的一个单词 光标之后开始删除,包括词尾空格;如果要删除整个单词,光标放到单词首字母,类似yw
x 删除光标之后的一个字符 相当于del
X 删除光标之前的一个字符 相当于Backspace

1.4 撤销

命令(语法) 功能描述 案例(说明)
u 撤销

1.5 定位

上边的复制、粘贴、删除,到目前我们都是通过方向键来控制鼠标的位置,但是这样效率太低,通过下边的定位命令可以快速进行定位。在一般模式下定位光标,进入编辑模式进行编辑,这样可以大大提高效率。

命令(语法) 功能描述 案例(说明)
shift+^ 行首
shift+$ 行尾
1+shift+g 页头 先按1再一起按shift和g组合键
shift+g 页尾
*+shift+g 任意行 先按数字*,在一起按shift和g组合键,调试程序时非常有用

三、编辑模式

在一般模式下,通过如下i、a、o、r命令进入编辑模式,对文档内容进行编辑。命令的区别在于进入编辑模式后光标插入点不同。

命令 功能描述
i 当前光标前
I 当前光标所在行行首
a 当前光标后
A 当前光标所在行行尾
o 当前光标下一行,新开一行
O 当前光标上一行,新开一行
r 当前光标之后,新输入会替换一个字符
R 替换当前光标之后的多个字符

四、命令模式

在一般模式下,可以通过以下三个命令:“:”、“/”、“?”进入底行命令模式完成文件保存、内容查找及字符替换功能。执行完命令可以通过ESC返回一般模式。

3.1 文件保存

  • 语法格式

    :[选项]+回车

​ 选项分为w、q、!可以相互组合使用。

​ w:保存

​ q:退出

​ !:强制执行

  • 案例

    :w 保存

    :w filename 文件另存为filename

    :wq 保存并退出

    :wq! 强制保存并退出

    :wq! filename 文件另存为filename并退出编辑器

3.2 查找内容

查找命令主要有2个:/或?二者功能一致,只记住一个即可

  • 语法格式

/要查找的词+回车

?要查找的词+回车

如果用第一个语法/进行查询,则按n键向下查找下一个,shift+n向上查找下一个

第二个语法则相反,n向上查找上一个,shift+n向下查找下一个

  • 案例

    /heimatengyun 在当前文档中查找heimatengyun字符串

    等价于

    ?heimatengyun

3.3 替换内容

可以通过如下命令替换当前文档里的内容

  • 语法格式

:[范围]s/要被替换的内容/新内容/[c,e,g,i]+回车

范围:1,5表示从第一行到第五行。1,$表示从第一行到最后一行,等价于%。%表示当前编辑的文章。

可组合选项:c表示confirm,每次替换前询问;e表示不显示error;g表示globe不询问整行替换;i表示ignore不区分大小写;I表示大小写敏感

  • 案例

​ 1,3s/you/YOU 在当前文档的1至3行搜索you并替换为YOU。注意不是单词替换,只要匹配就会替换,比如如果第二行存在your这个单词,则会被替换为YOUr

​ 1,3s/you/YOU/c 替换前会询问是否要替换

​ s/e/E/g 替换当前行所有e为E。假设当前光标所在行内容为where are you from替换后变为hErE arE you from

3.4 显示行号

​ :set nu 显示行号

​ :set nonu 关闭行号

以上为vi编辑器基本的使用命令,多敲几次自然就记住了。至此我们已经学会使用vi编辑器,可以创建和管理各种文件了。下一篇文章将讲解linux常用的命令,学会命令后就可以制作各种脚本完成各种工作任务了。

linux入门系列4--vi/vim编辑器的更多相关文章

  1. 小白学Linux(五)--VI/VIM编辑器

    我们操作文件,终究离不开编辑文件,对文件内容的编辑,Linux系统下,我们通常使用VI/VIM来编辑文件.VI是每个Linux都会自带的文本编辑器,VIM是VI的增强版,可能有些发行版本没有自带,可以 ...

  2. 初识Linux(五)--VI/VIM编辑器

    我们操作文件,终究离不开编辑文件,对文件内容的编辑,Linux系统下,我们通常使用VI/VIM来编辑文件.VI是每个Linux都会自带的文本编辑器,VIM是VI的增强版,可能有些发行版本没有自带,可以 ...

  3. PHP面试系列 之Linux(三)---- Vi/Vim编辑器

    vi 是 unix 家族下最功能强大的文字编辑器,而 vim 則是 vi 的加强版, 编辑模式   指令 說明 * i 在游標位置進入編輯模式   I 在游標行的第一個非空白字元進入編輯模式 * a ...

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

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

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

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

  6. linux vi/vim 编辑器学习总结

    linux vi/vim 编辑器学习总结 很多时候我们开发人员不可避免的会涉及到项目部署,这个时候使用的就不是我们所熟知的 Windows 和 Mac OS 操作系统了,而是类 Unix 系统.项目部 ...

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

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

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

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

  9. linux入门系列5--新手必会的linux命令

    上一篇文章"linux入门系列4--vi/vim编辑器"我们讨论了在linux下如何快速高效对文本文件进行编辑和管理,本文将进一步学习必须掌握的linux命令,掌握这些命令才能让计 ...

随机推荐

  1. Android Studio(九):引用jar及so文件

    Android Studio相关博客: Android Studio(一):介绍.安装.配置 Android Studio(二):快捷键设置.插件安装 Android Studio(三):设置Andr ...

  2. springmvc使用javabean作为请求参数

    1  首先写两个javabean对象  person 和 address 代码如下.两个类之间的关系如代码中 package cn.bean.demo.bo; public class Person ...

  3. python项目管理

    Python 通常没有对应 Java 的 Ant / Maven 这样的 build tool,有一个用于打包的 setuptools / distutils 但也并不完全等价.如果是用来管理依赖包, ...

  4. 解决margin塌陷和margin合并

    <!doctype html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. springboot整合mybatis完整示例, mapper注解方式和xml配置文件方式实现(我们要优雅地编程)

    一.注解方式 pom <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId& ...

  6. Python--day41--守护线程

    1,守护线程:守护线程会在主线程结束之后等待其他子线程的结束才结束 拓展--守护进程:守护进程随着主进程代码的执行结束而结束 代码示例:守护线程.py import time from threadi ...

  7. P1104 最大公约数和最小公倍数问题

    题目描述 输入2个正整数 \(x0, y0 (2 \le x0 \lt 100000, 2 \le y0 \le 1000000)\) ,求出满足下列条件的 P,Q 的个数. 条件: P,Q是正整数 ...

  8. 给js加版本号解决浏览器缓存问题

    我们知道打开网页时浏览器会加载需要的资源,比如图片.音频.js文件.css文件等.并且会把这些资源作为缓存保存下来,再次打开网页时缓存好的资源就不需要再次加载了.但是,这样有一个问题,就是当程序猿更新 ...

  9. EJB实例

    两种管理机制: 无状态bean使用实例池技术管理bean 有状态bean使用激活(activation)管理bean 内存对象序列化到磁盘 磁盘反序列化到内存

  10. Python6_模块、包、import、from import的解释

    先说一下模块和包是什么? 模块(module):简单来说一个模块(module)就是一个py文件.在python中是这么约定. 模块里面有函数.类,就是一组代码的集合.   模块显然要有一个名字,这个 ...