vim使用基础
vi/vim编辑器使用
前言
There is an old joke about a visitor to New York City asking a passerby for directions to the city’s famous classical
music venue:
Visitor: Excuse me, how do I get to Carnegie Hall?
Passerby: Practice, practice, practice!
译文:有⼀个古⽼的笑话,说是⼀个在纽约的游客向⾏⼈打听这座城市中著名古典⾳乐场馆的⽅向:
游客: 请问⼀下,我怎样去卡内基⾳乐⼤厅?
⾏⼈: 练习,练习,练习!
学习 Linux 命令⾏,就像要成为⼀名造诣很深的钢琴家⼀样,它不是我们⼀下午就能学会的技能。这需要 经历⼏年的勤苦练习。在这⼀章中,我们将介绍 vi(发⾳“vee eye”)⽂本编辑器,它是 Unix 传统中核⼼程序之⼀。 vi 因它难⽤的⽤户界⾯⽽有点声名狼藉,但是当我们看到⼀位⼤师坐在钢琴前开始演奏时,我们的确成了 伟⼤艺术的⻅证⼈。虽然我们在这⾥不能成为 vi ⼤师,但是当我们学完这⼀章后, 我们会知道怎样在 vi 中弹奏像“Chopsticks”那样的钢琴⼩品。
首先我们在terminal输入vi或者vim进入编辑器,此时可以看到如图界面:

接着,我们按照提示按下键盘上的F1进入帮助界面:

emmm,看不懂,算了,本博文放弃!!!
哈哈,开个玩笑,学习还是要继续的,下面跟着我的步伐一起探究一下vim的强大吧!
新手上路
虽然vim的帮助文档看起来很高大上(看不懂)的样子,但是我们同样也可以发现一个问题,vim支持
高亮!
高亮!
高亮!
嗯,没错,vim凭借着优秀的显示效果以及可拓展性获得了广泛程序员的青睐,对于部分编程语言来说,抛弃耗存较大的ide,采用vim也是不错的选择。那么今天,我们一起来谈论一下vim的基本使用方法。
vim filename可以打开浏览并编辑文件若打开的文件不存在,则会看到:
"not.txt" [New File]
其中的"not.txt"即为我所打开的 文件,因为并不存在此文件,所以会显示[new file]字样,若编辑输入文字后保存,则会看到:
"not.txt" [New] 4L, 36C written
此时代表你的文字已写入文件,退出后将会在本目录下看到not.txt文件
那么问题来了,你说的倒是简单,可是我一个新手你让我如何保存、退出啊!!!

哈哈,不要着急,这个环节咱们接下来会说
初窥门径
在这个环节,我们将一起讨论vim的三大模式,以及各种模式下的操作

- 命令模式
- 编辑模式
- 底线命令模式(底行模式)
通过图示我们可以很清晰的看出,vim的三种模式之间的切换,当使用vim打开文件时,默认处于命令模式,此时我们可以使用命令快速定位、查找到我们想要的内容区域,通过i、a、o命令进入编辑模式,从而对文本进行编辑修改,当确认无误后,按ESC键退回命令模式,并使用:进入底行模式,对修改的文件进行保存退出。
接下来,我们一起探讨一下三种模式的相关操作:
1. 命令模式
在命令模式下可以控制光标的移动,对文本进行复制粘贴、删除、查找
控制光标:
| 按键 | 说明 |
|---|---|
| l或右箭头 | 向右移动一个字符 |
| h或左箭头 | 向左移动一个字符 |
| j或下箭头 | 向下移动⼀⾏ |
| k或上箭头 | 向上移动⼀⾏ |
| 0 (零按键) | 移动到当前⾏的⾏⾸ |
| ^ | 移动到当前⾏的第⼀个⾮空字符 |
| $ | 移动到当前⾏的末尾 |
gg:移动光标到顶部
G:移动光标到底部
复制:先使用命令v,后移动光标选择文本域,选中后使用y、x、d可分别进行复制、剪切、删除操作,p可对复制/剪切的数据进行粘贴,注意粘贴的位置从当前光标所在位置开始
查找:在命令模式下使用/str或者?str(str为预查找的连续字符串,如使用/小姐姐,会匹配到所有小姐姐相关部分)来分别进行从上至下、从下至上查找,匹配文本会被高亮显示,此时使用n、N命令可以分别执行向下、向上查询
删除:dd命令可以删除光标当前行,先输入一个数字后再使用dd命令可以删除向下删除输入数字的行数
u:撤销
ctrl + z:撤销 撤销操作
下面我们来看一个ndd(n代表输入的数字,dd即敲击两次d键)删除操作的实例:
假设我有一个文件并已写如入以下内容:
1
2
3
4
5
6
7
8
~ ~
若此时光标在首行,此时处于命令模式,则当我输入数字3后再输入dd命令后:
4
5
6
7
8
~ ~
2. 编辑模式
- 字符按键以及Shift组合,输入字符
- ENTER,回车键,换行
- BACK SPACE,退格键,删除光标前一个字符
- DEL,删除键,删除光标后一个字符
- 方向键,在文本中移动光标
- HOME/END,移动光标到行首/行尾
- Page Up/Page Down,上/下翻页
- Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
- ESC,退出输入模式,切换到命令模式
3. 底行模式
博主第一次使用vim编辑器的时,辛辛苦苦将文本修改成想要的内容时,却发现不知道怎么保存!!!

底行模式下的常用参数
| :w | 将编辑的数据写入文件中(常用) |
|---|---|
| :w! | 若文件属性为(只读)时,强制写入该文件。不过,到底能不能写入, 还是跟你对该文件的文件权限有关啊! |
| :q | 退出 vim |
| :q! | 若曾修改过文件,又不想保存,使用强制离开不保存文件。 |
| :set nu | 显示行号,设定之后,会在每一行的前缀显示该行的行号 |
| :set nonu | 与 set nu 相反,为取消行号 |
| :noh | 取消查找文本的高亮 |
vim中的替换操作
:1,3 s/aa/cc 替换1至3行之间的aa,替换成cc
:s/aa/cc 替换当前光标所在行的aa,替换成cc
:%s/aa/cc 替换全局每一行出现的第一个匹配字符串,aa替换成cc
:s/aa/cc/g 替换当前行出现的所有含aa的,替换成cc
牛刀小试
任务目标,使用vim创建一个名为demo.txt的文件,并向其写入:
小哥哥
小姐姐
按G进入坦克
乔碧罗
操作:
1.使用查找命令定位到小姐姐,定位到之后取消文本的高亮
/小姐姐/noh
2.在命令模式下使用相关命令删除最后一行内容
- 在命令模式下使用
G命令定位到文档底部 - 使用
dd命令删除光标当前行
3.使用替换命令将文件中的G*替换成F,将小姐姐替换成如花**(光标移到起始位置)
- :%s/小G/F
- :%s/小姐姐/如花 或 :%s/小姐姐/如花/g
注意此步操作,光标处于起始位置,所以我们的替换要工作在全局操作下
操作完成后:
小哥哥
如花
按F进入坦克
渐入佳境
技术的学习需要大量的实践和练习,熟能生巧,只有经常使用才能掌握其用法,本博文仅介绍部分基础使用方法,vim的底蕴远不止如此,博主也会在今后的学习中慢慢积累、学习,大家一起努力、加油!
本文部分参考:菜鸟教程
vim使用基础的更多相关文章
- Vim入门基础
公司新员工学习有用到,Vim官网的手册又太大而全,而网上各方资料要么不全面,要么不够基础.在网上搜集各方资料,按照自己的框架整理一份Vim入门基础教程,分享出来.特点是偏向基础,但对入门者来说足够全面 ...
- VIM操作基础命令
VIM操作基础命令 1 文件操作 1.1 打开文件 VIM 使用 –o 或 –O 选项打开多个文件,其中 –o 表示垂直并排,例如 vim -o lesson4 lesson5 lesson6.大O表 ...
- Vim编辑器基础
Vim编辑器基础 vi:Visual Interface vim:VI iMproved Vim模式 1.编辑模式(命令模式) 只能下达命令,不能键入字符 2.输入模式 键入字符 3.末行模式 左下角 ...
- Vim入门基础知识集锦
1. 简介 Vim(Vi[Improved])编辑器是功能强大的跨平台文本文件编辑工具,继承自Unix系统的Vi编辑器,支持Linux/Mac OS X/Windows系统,利用它可以建立.修 ...
- vim 模式基础操作
作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 前言 虽然Emacs已经可以完成大部分的编辑操作,但有时候为了方便也会用到vim.所以记录了 ...
- vim文本基础
p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; text-align: justify; f ...
- vim的基础操作
- vim 编辑基础使用-----linux编程
Linux系统编程: VIM编辑器 | VIM Introduce 学习 vim 并且其会成为你最后一个使用的文本编辑器.没有比这个更好的文本编辑器了,非常地难学,但是却不可思议地好用. 我建议下面这 ...
- Vim:基础
Normal模式 即是command “vim test.txt” 时进入的界面. 常用command: :help<Enter> 查看命令. :wq<Enter> ...
随机推荐
- Azure DevOps 跨账号连接 Azure 服务
一,引言 由于新申请的 Azure DevOps 账号中的私有项目不在享受托管代理提供的1800分钟的免费时间,又不想花钱付费,那我们只能另想版本解决没有并行作业的问题. -------------- ...
- 201871010113-贾荣娟 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告
项目 内容 课程班级博客链接 18级卓越班 这个作业要求链接 实验三-软件工程结对项目 这个课程学习目标 掌握软件开发流程,提高自身能力 这个作业在哪些方面帮助我实现了学习目标 本次实验让我对软件工程 ...
- Tree Recovery UVA - 536
Little Valentine liked playing with binary trees very much. Her favorite game was constructing rando ...
- [源码分析]并行分布式任务队列 Celery 之 子进程处理消息
[源码分析]并行分布式任务队列 Celery 之 子进程处理消息 0x00 摘要 Celery是一个简单.灵活且可靠的,处理大量消息的分布式系统,专注于实时处理的异步任务队列,同时也支持任务调度.在前 ...
- 趁五一撸个纯Flutter版的心情日记App
前言 最近真的是太忙了,只能趁着五一期间把之前Android版的心情日记App移植到Flutter平台,并且已经上架华为应用市场以及苹果App Store. 整体框架沿用了两个星期,用Flutter撸 ...
- 1.4.15- HTML标签之链接标签
代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- 基于C++简单Windows API的socket编程(阻塞模式)
1. 概述:简单的基于Windows API的socket点对点聊天程序,为了方便初学者,本文代码均采用阻塞原理编写. 2. 代码样例 Server.cpp(服务端) #include <cst ...
- POJ2296二分2sat
题意: 给n个点,每个点必须在一个正方形上,可以在正方向上面边的中点或者是下面边的中点,正方形是和x,y轴平行的,而且所有的点的正方形的边长一样,并且正方形不能相互重叠(边相邻可以),问满 ...
- POJ3070矩阵快速幂简单题
题意: 求斐波那契后四位,n <= 1,000,000,000. 思路: 简单矩阵快速幂,好久没刷矩阵题了,先找个最简单的练练手,总结下矩阵推理过程,其实比较简单,关键 ...
- 手动添加导入表修改EXE功能
目标: 改动PE导入表,手工给HelloWorld增加一个功能,就是启动的时候写入一条开机启动项,C:\cmd0000000000000000000000000000.exe 实现方法: 直接在注册相 ...