1.VIM基本概述

1.什么是VIM?

vi和vim是Linux下的一个文本编辑工具。(可以理解为windows的记事本,或word文档)

2.为什么要使用VIM?

因为Linux系统一切皆为文件,而我们工作最多的就是修改某个服务的配置(其实就是修改文件内容)。 也就是说如果没有vi/vim,我们很多工作都无法完成。

PS: vim是学习linux最重要的命令之一

3.VI与VIM有什么区别?

vi和vim都是文本编辑器,只不过vim是vi的增强版,比vi多了语法高亮显示,其他编辑功能几乎无差,所以使用vi还是vim取决个人习惯。

(相当于windows系统下的文本编辑软件“记事本”与”notepad++”的区别)

PS:因为前期最小化安装CentOS系统,所以默认情况下没有vim命令,但可以使用yum install vim -y安装

4.如何使用VIM编辑器?

在使用VIM之前,我们需要先介绍下VIM的三种模式: 普通模式、编辑模式、命令模式,每种模式分别支持多种不同的快捷键,要想高效率地操作文本,就必须先搞清这三种模式的操作区别以及模式之间的切换方法。

打开文件

vim [option] .... file....

+# 直接定位到第#行
+/pattern 打开文件后,直接定位到第一个匹配到patter的地方
-b 以二进制方式打开文件
-d file1 file2 对比打开多个文件
-m file 只读方式打开文件
-e 直接以末行模式打开

5.VIM模式三种模式介绍

1.普通模式: 主要是控制光标移动,可对文本进行复制、粘贴、删除等工作。

使用vim filename 编辑一个文件时,一进入该文件就是普通模式了。

在这个模式下,可以进行光标移动、复制、删除、粘贴操作。

2.编辑模式: 主要进行文本内容编辑和修改

从普通模式进入编辑模式,只需你按一个键即可(i, I, a, A, o, O)

当进入编辑模式时,会在屏幕的最下一行会出现 “INSERT”标记

从编辑模式回到普通模式只需要按键盘左上方的 ESC 键即可。

3.末行模式: 主要用于保存或退出文本。

在普通模式下,输入 “:” 或者 “/“ 即可进入命令模式。

在命令该模式下,可进行的操作有,显示行号、搜索、替换、保存、退出。

小结: vim编辑打开文件整体流程如下:

1.默认打开文件处于普通模式

2.从普通模式切换至编辑模式需要使用a、i、o

3.编辑模式修改完毕后需要先使用ECS返回普通模式

4.在普通模式输入”:”或”/“进入命令模式,可实现文件的保存与退出。

PS: 在vim中,无法直接从编辑模式切换到扩展命令模式。

模式

  • 命令模式:可以光标,可以粘贴、复制文本,默认

  • 插入模式或者编辑模式:可以修改文本

  • 末行模式(扩展命令模式):保存、退出等等

  • esc 退出当前的模式

2.VIM模式使用

1 模式之间切换

  • 命令模式- 插入模式

    • i 光标所在处插入

    • I 在当前光标所在的行的行首插入

    • a 光标所在位置的后面插入

    • A 在当前光标所在的行尾插入

    • o 在当前光标所在的行的下一行(新开)插入

    • O 在当前光标所在的行的上一行(新开一行)插入

  • 插入模式- 命令模式

    • esc

  • 命令模式 -- 末行模式

  • 末行模式 -- 命令模式

    • esc esc

    • esc enter

2 关闭文件

  • 末行模式

    • :w 保存

    • :q 退出

    • :wq 保存并退出

    • :q! 强制退出

    • :wq!强制保存退出

    • :x 保存并退出

  • 命令模式

    • ZZ 保存退出

    • ZQ 不保存退出

3 扩展命令行模式

  • 按":" 来进入

  • w 写入

  • q 退出

  • wq 保存并退出

  • q! 强制退出

  • x 保存并退出

  • r file 读入文件

  • w file 另存为

  • !command 直接执行命令

  • r!command 直接把命令的结果写到文件中

4 命令模式跳转

  • 字符之间跳转

    • l 向右

    • h 向左

    • j 向下

    • k 向上

  • 单词间跳转

    • w 下一次的单词的词首

    • e 当前词的词尾或者下一个单词的词尾

    • b 当前词的词首或者上一词的词首

    • # command 直接跳转#个单词

  • 页面间跳转

    • H 页首

    • L 页尾

    • M 页中

    • zt 将光标所在行移动到屏幕的顶端

    • zb 将光标所在行移动到屏幕的底部

    • zz 将光标所在行移动到屏幕的中间

  • 行首行尾之间跳转

    • ^ 跳转到当前光标所在行的第一个非空字符

    • 0(数字) 跳转到行首

    • $ 跳转到行尾

  • 行间移动

    • #G 跳转到第#行 4G就是跳到4行

    • 在命令扩展模式下,直接:# 跳转到对应的#行

    • G 直接到最后一行

    • gg 跳转到第一行

    • 1G 跳转到第一行

  • 段落之间跳转(空行分割为一段)

    • { 上一段

    • } 下一段

  • 翻屏

    • ctrl+f 向文件尾部翻一屏

    • ctrl+b 向文件首部翻一屏

    • ctrl+d 向文件尾部翻半屏

    • ctrl+u 向文件首部翻半屏

5 命令模式编辑

  • 字符编辑

    • x 删除光标所在处的字符

    • #x 删除#个字符

    • xp 将光标所在处的字符和后面的字符互换位置

    • ~ 将光标所在的位置大小写互换

    • J 删除当前行的换行符

  • 替换

    • r 替换当前光标所在处的字符

    • R 进入替换模式

  • 删除

    • d 删除,需要跟字符跳转结合

    • d$ 删除到行尾,删除当前位置

    • d0 删除到行首,当前位置不删除

    • d^ 删除到非空字符

    • dw 删除一个单词

    • de 向后删除一个单词

    • db 向前删除一个单词

    • dd 删除正行

    • # dd 删除#行

    • dG 删除到结尾

    • dgg 删除到开头

    • D 相当于d$

  • 复制

    • y,也可以跟字符跳转结合

    • y$

    • y0

    • y^

    • yw

    • ye

    • yb

    • yy 一正行

    • #yy 复制#行

    • yG 复制到结尾

    • ygg 复制到开头

    • Y 复制整行

  • 粘贴

    • p 如果是整行的话,则粘贴到当前光标所在行的下一行,否则粘贴到光标的后面

    • P 如果是整行的话,则粘贴到当前光标所在行的上一行,否则粘贴到光标的前面

  • 改变,删除以后并将模式切换成插入模式

    • c 可以跟光标的跳转做结合

    • c$

    • c0

    • c^

    • cw

    • ce

    • cb

    • #command

    • cc 删除正行并插入

    • C 相当于c$

  • #[i|I|a|A|o|O]string esc 将string粘贴#次

  • 搜索

    • /pattern 从当前光标往下搜索

    • ?pattern 从当前光标往上搜索

    • n 同命令相同的方向

    • N 同命令相反的方向

  • 撤销

    • u 撤销最近的修改

    • # u 撤销最近的#次修改

    • ctrl +r 撤销之前的撤销动作

    • . 重复最后一次操作

    • #. 最后一次操作重复执行#次

6 命令扩展模式

地址定界

:start,end

# 具体到第#行

#,# 第#行到第#行

#,+n 从第#开始,到第#+n行结束 1,+2 ==>1,3

. 表示当前光标所在的行

$ 表示最后一行

$-1 表示倒数第二行

% 表示全文

/pat1/,/pat2/ 从第一个pat1匹配到的地方,到pat2第一次匹配到的地方

#,/pat/ 从第#行开始,到第一次被pat匹配到的地方

/pat/,$ 从第一次被pat匹配到的地方到结尾

可以使用的命令

  • d

  • y

  • w file 重新另存为文件

  • r file 将文件的内容写到匹配到的下一行

查找并替换

  • 要使用地址定界来进行查找

  • s 在扩展命令模式下使用为替换(替换光标出的字符)

  • 格式: %s/要查找的内容/要替换的内容/装饰器(加了%,就是全文查找)

  • 要查找的内容可以使用正则

  • 替换的内容不能为正则

    • 可以为分组:%s/(nfs.*)/#\1/

    • \1表示第一个分组内的内容

    • \2

    • \3

    • & 可以代表前面匹配到的内容

    %s/sshd/#&/      在匹配到的字符sshd前加#
  • 装饰器

    • i 忽略大小写

    • g 表示全部替换

    • gc 每一次替换之前都要询问是否替换

  • 分隔符的替换还可以使用

    • @

    • #

%s/@/etc/#    etc前面的/替换成#

7 可视化

  • v 面向字符

  • V 面向行的

  • ctrl +v 面向块

  • 可以结合所有的跳转键进行结合

  • 对突出显示部分可以使用删除、复制、变更、过滤、替换、另存为等等

ctrl+v  进入可视块模式,选中需要注释的行
1.插入:按shift+i进入编辑模式,输入#,结束按ESC键
2.删除:选中内容后,按x或者d键删除
3.替换:选中需要替换的内容, 按下r键,然后输入替换后的内容 shift+v 进入可视行模式,选中整行内容
1.复制:选中行内容后按y键及可复制。
2.删除:选中行内容后按d键删除。

8 打开多个文件

vim file1 file2 file3

:next 下一个

:prev 上一个

:first 第一个

:last 最后一个

:qall 退出全部

:wall 保存全部

:wqall 保存并退出全部

:xall 保存并退出全部

9 使用多个窗口

vim -o 水平分隔

vim -O 垂直分隔

切换ctrl+w 加上上下左右箭头

退出:qall

vim -o file2 passwd a   同时打开三个文件
vim -o file1 file2 #水平分割
vim -O file1 file2 #垂直分割 #ctrl+ww 文件间切换

10 相同文件之间差异对比,通常用于对比修改前后差异

# diff      #文件对比
# vimdiff #以vim方式打开两个文件对比,高亮显示不同的内容

11 单文件切割

ctrl+w,s 水平切割

ctrl+w,v 垂直切割

ctrl+w,q 取消相邻的窗口

ctrl+w,o 取消全部窗口

12 如果VIM非正常退出 (ctrl+z)挂起或强制退出终端没关闭VIM后

#假设打开filename文件被以外关闭,需要删除同文件名的.swp文件即可解决
# rm -f .filename.swp

3 vim工作特性

配置文件

  • 全局有效:/etc/vimrc

  • 对当前用户有效: ~/.vimrc

  • 行号:set nu 取消 set nonu

  • 忽略大小写(搜索) set ic 取消set noic

  • 自动缩进(同上一行) set ai 取消set noai(python中用的多)

  • 设置高亮显示(搜索到的内容) set hls 取消set nohls

  • 语法高亮 syntax on 取消 syntax off

  • 文件格式

    • windows格式 set fileformat=dos

    • unix set fileformat=unix

  • 添加标识线: set cul 取消标识线 set nocul

  • 获取帮助: set all

  • 获取帮助信息:

    • :help

    • :help topic

    • vimtutor

linux文件编辑的更多相关文章

  1. Linux系统运维笔记(二),Linux文件编辑命令

    Linux系统运维笔记 Linux文件编辑命令 首先我们使用命令 vi filename 打开一个文件,这个时候进入到的是命令模式 接下来我们按i,然后键盘随便输入写内容. 然后按ESC重新进入到命令 ...

  2. Linux文件编辑工具——VIM

    Linux文件编辑工具--VIM 1.VIM基本概述 1.1 什么是vim vi 和 vim 是 Linux 下的一个文本编辑工具.(可以理解为 windows 的记事本,或 Notepad++ 1. ...

  3. Linux文件编辑之sed命令

    文件编辑之sed命令 sed是一种流编辑器,它是文本处理中非常重要的工具,能够完美配合正则表达式使用,功能不同凡响.处理时,把当前处理的行存储在临时缓冲区中,称为模式空间 (pattern space ...

  4. Linux文件编辑命令详细整理

    刚接触Linux,前几天申请了个免费体验的阿里云服务器,选择的是Ubuntu系统,配置jdk环境变量的时候需要编辑文件. vi命令编辑文件,百度了一下,很多回答不是很全面,因此编辑文件话了一些时间. ...

  5. Linux文件编辑vi、mkdir等

    1.进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于 ...

  6. Linux文件编辑命令具体整理

    刚接触Linux,前几天申请了个免费体验的阿里云server,选择的是Ubuntu系统.配置jdk环境变量的时候须要编辑文件. vi命令编辑文件,百度了一下,非常多回答不是非常全面,因此编辑文件话了一 ...

  7. 7.Linux文件编辑之Vim

    1.VIM基本概述 1.什么是VIM? vi和vim是Linux下的一个文本编辑工具.(可以理解为windows的记事本,或word文档) 2.为什么要使用VIM? 因为Linux系统一切皆为文件,而 ...

  8. linux文件编辑VI命令详解

    vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令.由于对Unix及Linux系统的任何版本,vi编辑器是完全相 ...

  9. linux文件 编辑常用 inux手把手vi ---针对文件操作

    命令语法 说明 使用频率(1:常用;2一般:3:偶尔) 1.VI编辑器的启动与退出 VI编辑器的启动与退出 vi  file1 新建一个文本文件名为file1 :q 退出,如果对缓存去进行过修改,则提 ...

  10. Linux文件编辑时光标操作

    一.移动光标类命令 h :光标左移一个字符 l :光标右移一个字符 space:光标右移一个字符 Backspace:光标左移一个字符 k或Ctrl+p:光标上移一行 j或Ctrl+n :光标下移一行 ...

随机推荐

  1. Linux(Centos7)升级MySQL 5.7到8.0.31

    一.下载MySQL安装包 下载地址:https://downloads.mysql.com/archives/community/ 二.备份 mkdir /home/mysqlback mysqldu ...

  2. NC20115 [HNOI2015]菜肴制作

    题目链接 题目 题目描述 知名美食家小 A被邀请至ATM 大酒店,为其品评菜肴. ATM 酒店为小 A 准备了 N 道菜肴,酒店按照为菜肴预估的质量从高到低给予1到N的顺序编号,预估质量最高的菜肴编号 ...

  3. javascript 对http的get请求参数编码encodeURIComponent、encodeURI 和Java 解码

    JavaScript 代码encode functionfindNE(){ var nd = document.getElementById("NE").value; nd = e ...

  4. 【framework】Surface创建流程

    1 前言 View添加过程 中介绍了从 WindowManagerImpl 的 addView() 方法到 WindowState.SurfaceSession 的创建流程,本文将介绍 Surface ...

  5. python定义类模块之attr

    # attr可以简单理解为namedtuple的增强版 import attr @attr.s class Point(object): x = attr.ib(default=1) # 定义默认参数 ...

  6. SpringBoot与Thymeleaf入门级操作

    使用Thymeleaf 三大理由: 简洁漂亮 容易理解 完美支持HTML5 使用浏览器直接打开页面 不新增标签 只需增强属性 学习目标 快速掌握Thymeleaf的基本使用:五大基础语法,常用内置对象 ...

  7. 【Azure Data Lake Storage】如何才能保留Blob中的文件目录结构(即使文件夹中文件数量为0的情况下)?

    问题描述 在使用Azure Storage Account Blob时候,发现当文件夹中的Blob(文件)被全部输出后,文件夹也会消失? 为什么它不能像Windows系统中的文件夹一样,即使是一个空文 ...

  8. 探索Terraform实践:优化基础设施管理

    Terraform 是管理基础设施及代码(IaC)最常用的工具之一,它能使我们安全且可预测地对基础设施应用更改. Terraform作为一个强大的基础设施即代码工具,为开发人员和运维团队提供了一种简单 ...

  9. 使用C#和MemoryCache组件实现轮流调用APIKey以提高并发能力

    文章信息 标题:使用C#和MemoryCache组件实现轮流调用API Key以提高并发能力的技巧 摘要:本文介绍了如何利用C#语言中的MemoryCache组件,结合并发编程技巧,实现轮流调用多个A ...

  10. CSAPP:lab7 shell

    实验网站 课程网站:CSAPP 源码下载 源码下载 实验文档下载 我的实验环境:Ubuntu 20.04 lab7文档解读 ​ 查看 tsh.c (tiny shell) 文件,您会看到它包含一个简单 ...