vim编辑器的使用详解
在Linux江湖,最常用到的编辑器非vim莫属,vim的功能很强大。
1. vim简介
在Linux世界中,最长用到的而且功能比较强大的是Vim编辑器。Vim编辑器是在内存缓冲区中处理数据。
vim 文件名 or vi 文件名
都可以通过vim打开文件
一般vim打开文件功能更多一些,特别是对于shell脚本这种文本,会有不同字符的高亮显示。
如果启动vim时未指定文件名,或者指定的文件名不存在,vim会开辟一段新的缓冲区域来编辑。
vim /etc/passwd

vim tt

2 vim模式介绍
vim编辑器有两种模式:
- 普通模式
- 插入模式
2.1 普通模式
当刚打开要编辑的文件或新建一个文件时,vim首先进入的是普通模式。在普通模式中,vim会将案件解释程命令。
在普通模式下,可以用方向键在文本区域移动光标。vim有用来移动光标的命令:
h:左移一个字符
j:下移一行(文本的下一行)
k:上移一行(文本的上一行)
l:右移一个字符
PageDown(或Ctrl+F):下翻一屏
PageUp(或Ctrl+B):上翻一屏
G:移动到缓冲区的最后一行
num G:移动到缓冲区的第num行
gg:移动到缓冲区的第一行
2.2 普通模式的命令行模式
Vim编辑器在普通模式下有个特特别的功能叫命令行模式。命令行模式提供了一个交互式命令行,可以输入额外的命令来控制vim的行为。要进入命令行模式,在普通模式下按下冒号键”:”,光标会移动到消息航,然后出现冒号,等待输入命令。
在命令行模式下有几个命令时可以退出缓冲区:
:q 如果未修改缓冲区数据,退出。
:q! 取消所有对缓冲区数据的修改并退出。
:w filename 将文件保存到另一个文件中。
:wq 将缓冲区数据保存到文件中并退出
3 编辑数据
在普通模式,输入i,就会进入到插入模式,然后就可以编辑和数据的插入。如图:

在普通模式下,vim提供了一些命令来编辑缓冲区中的数据。
|
命令 |
描述 |
|
x |
删除当前光标所在位置的字符 |
|
dd |
删除光标所在的行 |
|
dw |
删除当前光标所在的单词 |
|
d$ |
删除当前光标所在位置至行尾的内容 |
|
J |
删除当前光标所在行行尾的换行符(拼接符) |
|
u |
撤销前一编辑命令 |
|
a |
在当前光标后追加数据 |
|
A |
在当前光标所在行尾追加数据 |
|
r char |
用char替换当前光标所在位置的单个字符 |
|
R text |
用text覆盖当前光标所在位置的数据,知道按下ESC键 |
4 复制和粘贴
vim在删除数据时,实际上会将数据保存在单独的一个寄存器中。可以用p命令取回数据。而复制操作在vim中是y(代表yank),可以在y后面使用和d命令相同的第二字符(yw代表复制一个单词,y$代表复制到行尾)。复制文本后,把光标移动到希望放置文本的地方,输入p命令,复制的文件就会出现在该位置。
复制的过程你无法知道自己到底复制了多少内容,知道粘贴后才明白复制的内容是什么,可视模式可以解决这个问题,可视模式会在你移动光标时就高亮显示需要复制的文本的内容。要进入可视模式,将光标移动到开始复制的位置,然后按下v键,你会注意到光标所在位置的文本已经被高亮显示。下一步,移动光标来覆盖希望复制的文本,高亮显示会覆盖所有你移动的行文本,然后按下y键进行复制,寄存器中已经有了要复制的文本,将光标移动到希望放置文本的位置,使用p键来粘贴,这样就完成了复制粘贴操作。

选中后输入 y复制,然后选择需要粘贴的地方,输入p粘贴
如图:

然后就复制成功粘贴了!
5 查找和替换
5.1 查找
在vim中可以通过按下斜线(/)键。光标会跑到消息航,然后vim会显示出斜线,然后输入需要查找的关键字符,按下回车键,vim会在文本中查找要查找的文本。
通常会出现三种回应:
- 如果要查找的文本出现在光标当前位置之后,则光标会跳转到该文本出现的第一个位置。
- 如果要查找的文本未在光标当前位置之后出现,而且在之前出现,则光标会染过文件末尾,出现在该文本所在的第一个位置(并用一条消息指明)
- 输出一条错误消息,说明在文件中没有找到要查找的文本。
如果要继续查找同一个单词,按下斜线,然后按回车,挥着使用n键,表示下一个(next).

5.2 替换
替换命令允许你快速的用一个单词来替换文本中的另一个单词。必须进入命令模式才能使用替换命令。替换命令的格式:
:s/old/new
Vim会跳到old第一次出现的地方,并用new来替换。
对这个命令进行一些修改可以替换多处文本:
:s/old/new/g 可以替换掉第一行出现的所有old,替换成new.
:n,ms/old/new/g 替换行号n和m之间的所有old
:%s/old/new/g 替换整个文件中的所有old 最常用到
:%s/old/new/gc 替换整个文件中的所有old,但在每次出现时提示。

vim编辑器的使用详解的更多相关文章
- [转帖]Vim编辑器使用方法详解
Vim编辑器使用方法详解 程序员小新人学习 2018-12-16 12:26:23 转载于https://www.cnblogs.com/libaoliang/articles/6961676.htm ...
- vi/vim编辑器使用方法详解
vi编辑器是所有Unix及Linux系统下标准的编辑器,他就相当于windows系统中的记事本一样,它的强大不逊色于任何最新的文本编辑器.他是我们使用Linux系统不能缺少的工具.由于对Unix及li ...
- vi和vim区别及命令详解
vi和vim都是Linux中的编辑器,不同的是vim比较高级,可以视为vi的升级版本.vi使用于文本编辑,但是vim更适用于coding. 现将vim的命令行收集于下: vi有3个模式:插入模 ...
- [转帖]基于VIM漏洞CVE-2019-12735的VIM宏后门病毒详解
基于VIM漏洞CVE-2019-12735的VIM宏后门病毒详解 不明觉厉 只要是人做的东西 就会有bug 就会有安全问题 就看发现bug 或者是发现安全问题 有没有收益了 会用linux的都是比较熟 ...
- Vim 命令常用功能详解
Vim编辑器 文本编辑器 , 字处理器ASCIIvi:Visual Interface vim :VI iMproved 全屏编辑器,模式化编辑器vim 模式:编辑模式(命令模式)输入模式末行模式 模 ...
- Linux中vi编辑器的使用详解
vi编辑器是Linux系统下标准的编辑器.而且不逊色于其他任何最新的编辑器.可是会用的有多少呢.下面介绍一下vi编辑器的简单用法和部分命令.让你在Linux系统中畅行无阻. 基本上vi可以分为三种状态 ...
- Vim编辑器的注释,解注,删除与恢复
1. 注释: 将光标移动到注释首部 命令模式下 Ctrl+V,进入列模式 上下移动,选中待注释内容 按大写I,进入插入模式 输入 // or # 按两次退出 2 解注 将光标移动到待解注首部 命令模式 ...
- vi编辑器快捷键使用详解
文本编辑器是所有计算机系统中最常用的一种工具.UNIX下的编辑器有ex,sed和vi等,其中,使用最为广泛的是vi,而vi命令繁多,论坛里好像这方面的总结不多,以下稍做总结,以资共享!渴望更正和补充! ...
- PyQt(Python+Qt)学习随笔:纯文本编辑器QPlainTextEdit功能详解
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.概述 QPlainTextEdit是用于纯文本的一个高级文档编辑器 ...
随机推荐
- 【linux】【qt5界面】【系统托盘图标的实现】
前言: 博主最近在做一个聊天软件,虽然技术不咋滴,但遇到点干货肯定是要跟大家分享的啦.下面就给大家分享一个qt实现程序隐藏才系统托盘的技巧. 装备: 系统:linux, qt版本:5.9.2,GCC: ...
- springboot集成redis实现消息发布订阅模式-双通道(跨多服务器)
基础配置参考https://blog.csdn.net/llll234/article/details/80966952 查看了基础配置那么会遇到一下几个问题: 1.实际应用中可能会订阅多个通道,而一 ...
- spark源码阅读---Utils.getCallSite
1 作用 当该方法在spark内部代码中调用时,会返回当前调用spark代码的用户类的名称,以及其所调用的spark方法.所谓用户类,就是我们这些用户使用spark api的类. 2 内部实现 2.1 ...
- 帝国CMS(EmpireCMS) v7.5后台getshell分析(CVE-2018-18086)
帝国CMS(EmpireCMS) v7.5后台getshell分析(CVE-2018-18086) 一.漏洞描述 EmpireCMS 7.5版本及之前版本在后台备份数据库时,未对数据库表名做验证,通过 ...
- react native https
1. ios解决方案 1.1 Xcode打开工程,Libraries -> RCTNetworking -> RCTHTTPRequestHandler.mm -> #pragma ...
- 使用MTA HTML5统计API来分析数据
使用MTA HTML5统计API来分析数据 在开发个人博客的时候,用到了腾讯移动分析(MTA),相比其他数据统计平台来说我喜欢她的简洁高效,易上手,同时文档也比较全面,提供了数据接口供用户调用. 在看 ...
- 纯数据结构Java实现(6/11)(二叉堆&优先队列)
堆其实也是树结构(或者说基于树结构),一般可以用堆实现优先队列. 二叉堆 堆可以用于实现其他高层数据结构,比如优先队列 而要实现一个堆,可以借助二叉树,其实现称为: 二叉堆 (使用二叉树表示的堆). ...
- 微信小程序, 解析↵换行
获取到json中的数据,通过“\n”转义,此时我们需要通过正则表达式来替换一下 replace(/↵/g, '\n'); 在页面中可以这样 <text class="test-ti ...
- Rest构建分布式 SpringCloud微服务架构项目
一.开发环境:jdk 1.8.Maven 3.x.IDEA 2019.1.4.SpringBoot 2.0.7.spring Cloud 最新的稳定版 Finchley SR2 搭配 ...
- 分清<url-pattern>/</url-pattern>与<url-pattern>/*</url-pattern>的不同
在写springMVC配置web.xml的时候会碰到下面有时候写/,有的时候又写/: 那么这两者有什么区别呢?我现在进行一些讲解: 1.当配置<url-pattern>/</url- ...