浅谈 Linux 下 vim 的使用
Vim 是从 vi 发展出来的一个文本编辑器,其代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
Vi 是老式的字处理器,功能虽然已经很齐全了,但还有可以进步的地方。Vim 可以说是程序开发者的一项很好用的工具。对于大多数用户来说,Vim 刚开始学习的时候可能会进展缓慢,但是一旦掌握一些基本操作之后,就能大幅度提高编辑效率。今天我们就来简单介绍下 Vim 及其基本操作。
Vim 的三种模式
从 vi 派生出来的 Vim 具有多种模式,这种独特的设计容易使初学者产生混淆。几乎所有的编辑器都会有插入和执行命令两种模式,并且大多数的编辑器使用了与 Vim 截然不同的方式:命令目录(鼠标或者键盘驱动),组合键(通常通过 ctrl 键和 alt 键组成)或者鼠标输入。Vim和vi一样,仅仅通过键盘来在这些模式之中切换。这就使得 Vim 可以不用进行菜单或者鼠标操作,并且最小化组合键的操作。对文字录入员或者程序员可以大大增强速度和效率。
基本上,Vim 可以分为命令模式、插入模式和底线模式三种模式,各模块的功能区分如下:
命令模式:
使用 vim 编辑文件时,默认处于命令模式。在此模式下可以使用上、下、左、右键或者k、j、h、l键进行光标的移动,还可以对文件内容进行复制、粘贴、替换、删除等操作。
插入模式:
在该模式下可以对文件进行写的操作,类似于 windows 的文档操作。进入插入模式的方法是在命令模式下按 "i"或者"a"或者"o",编写完成后按 Esc 即可回到命令模式。
i:从光标目前所在位置插入所输入的字符
a:从目前光标所在位置的下一个字符处插入所输入的字符
o:插入新的一行从行首开始输入
底线模式:
如果要保存、查找或者替换一些内容等,就需要进入底线模式。底线模式的进入方法为:在命令模式下按":"键,Vim 窗口的左下方会出现一个":"符号,这时就可以输入相关的指令进行操作了。指令执行后会自动返回命令模式。
Vim 的基本操作
一、打开文件或者新建文件
统一命令: vim 文件名
例子:vim 11.txt
然后在页面的左下角可以看到文件的信息,行数和字符数,例如上图:3行、426个字符。
二、光标的移动
以字符为单位移动,在命令模式中使用 h、j、k、l 这 4 个字符控制方向,分别表示向左、向下、向上、向左
- 按G:移动到文件最后
- 按 gg: 移动到文件的开头
- 按 0 或者^: 光标移动到所在行的行首
- 按 $: 光标移动到所在行的行尾
- 按 ctrl+f 往下翻一页
- 按 ctrl+b 往上翻一页
三、插入模式
当处于插入模式,左下角的状态如下图所示:
当编辑完成,就可以按 Esc 退出插入模式,进入到命令模式。可以使用Shift+zz命令保存退出,其他保存和退出命令见下文。
四、底线模式
【保存和退出】
字母"w":保存不退出;
字母"q":不保存退出;
字符"!":强制性操作;
也可以 wq 这样直接保存退出
【显示行号】
显示行号: set nu
不显示:set nonu
直接到某行:在底线模式下直接输入数字就可以到想到的行,如果输入的数字比文档的行数多就会到最后一行。
【搜索】
想要搜索某个词可以直接在底线模式输入:/要搜索的词,或者在命令模式里直接 /搜索的词也可以,
可以按 n 到搜索的下一个词的地方,按 N 就是往上找。搜索到的词就会以高亮显示,如下图:
如果要忽略大小写,可以先在底线模式输入: set ic , 反之:set noic 。
这个高亮如果不取消显示会一直有,可以用这个命令取消,底线模式下输入:nohlsearch 。
【字符替换】
在底线模式下:输入 1,$s/string/replace/g 会将全文的 string 字符串替换为 replace 字符串。
1,$ 表示从第一行到最后一行
s 表示替换
g 表示每行全部替换
此时 /w 已经搜索不到了。(此处没有忽略大小写)
替换某一行中的:5s/string/replace/g 。
5 表示行数
【操作其它文件】
写入到其它文件:可以直接 w 文件名,这样就会直接创建一个新的文件,并把当前文件的内容拷贝一份到里面。
直接打开另外一个文件: edit 文件名,如果这个时候想看有没有切换成功,可以输入 file 就可以查看当前打开的文件。
五、命令模式下的常用快捷键
【删除】
x :根据光标的位置删除,一次只能删除一个,想要删除多个,可以先按下 想删除的数量 然后再按 x 。
例子:先按300 后按 x,就是删除 300 个字符:300x 。
注:这里可以直接在键盘上按对应的数字,是没有显示的,按完数字再按 x 即可删除。
dw : 删除光标所在处到词尾的内容。
dd : 删除光标所在行, 3dd代表的意思就是删除光标所在位置向下的三行,包括光标所在的行(同 x 批量删除一样)。
【复制】
yy : 复制光标所在的行。
yw : 复制光标所在处到词尾的内容 。
p : 黏贴,此命令是在命令模式下,按照上面的命令复制后,然后光标移动到想要复制的位置,然后按 p 黏贴。
【取代替换】
r : 取代光标所在字符,按一下 r 再按 想要取代的字符。
R : 连续取代字符直到按 Esc 为止,按一下 R 然后依次按后面取代的字符,最后按 Esc 结束。
【撤销】
撤销键按:u 。
ctrl+r : 重做被撤销的操作,这个是如果你改好后不小心按了下 u ,再用这个命令就可以重新回到撤销前的界面。
本文只是简单介绍了下 vim 的常用命令,除了这些还有很多其它的命令,感兴趣的朋友可以更深入地去了解下。
浅谈 Linux 下 vim 的使用的更多相关文章
- []转帖] 浅谈Linux下的五种I/O模型
浅谈Linux下的五种I/O模型 https://www.cnblogs.com/chy2055/p/5220793.html 一.关于I/O模型的引出 我们都知道,为了OS的安全性等的考虑,进程是 ...
- 浅谈Linux下/etc/passwd文件
浅谈Linux 下/etc/passwd文件 看过了很多渗透测试的文章,发现在很多文章中都会有/etc/passwd这个文件,那么,这个文件中到底有些什么内容呢?下面我们来详细的介绍一下. 在Linu ...
- 浅谈Linux下如何修改IP
linux 下命令之浅谈//cd .. //返回上一级//创建文件夹touch test.txt//Linux不区分大小写//往一个文件中追加内容echo "****" > ...
- 浅谈linux 下,利用Nginx服务器代理实现ajax跨域请求。
ajax跨域请求对于前端开发者几乎在任何一个项目中都会用到,众所周知,跨域请求有三种方式: jsonp; XHR2 代理: jsonp: 这种应该是开发中是使用的最多的,最常见的跨域请求方法,其实aj ...
- 浅谈Linux下CPU利用率和CPU负载【转】
转自:https://blog.csdn.net/Alisa_xf/article/details/71430406 在Linux/Unix下,CPU利用率(CPU utilization)分为用户态 ...
- 浅谈Linux下的五种I/O模型 两篇别人的博客
http://blog.csdn.net/sinat_34990639/article/details/52778562 http://www.cnblogs.com/chy2055/p/5220 ...
- 浅谈Linux下各种压缩 解压命令和压缩比率对比
Linux下压缩.解压命令五花八门,不像在windows下一个winrar打遍天下无敌手,清一色的.rar .zip格式. 比如,Linux下常用的tar tar.gz tar.bz2 .Z等等不一而 ...
- 浅谈 Linux 下的 SSH1, SSH2
SSH:Secure Shell .是一种安全协议. 常见的应用场景是远程控制台登陆. SSH1免费,SSH2收费. 其实 SSH 并不只是在 Linux 和 Unix 下使用,他们同样在 Win ...
- 浅谈Linux下傻瓜式磁盘分区工具cfdisk的使用
对于新手来说,Linux环境下的磁盘分区可能还会存在一些困难.对于熟悉Linux的朋友来说,我们还有fdisk.parted(2TB以上的磁盘分区使用)等磁盘分区工具可以使用.在我们新增磁盘或者在原来 ...
- 浅谈Linux下的rpm
虽然现在很多人都使用yum去替代rpm了,但是rpm在一些特殊场合下还是有其作用的,比如查询跟验证已安装的rpm包,rpm全称Redhat Package Manager,是一种用于互联网下载包的 ...
随机推荐
- Selenium - 元素操作(2) - 页面滚动条
Selenium - 元素操作 函数滚动 一般元素定位,元素如果不在浏览器的可视位置(即可见只是不在可视位置),会自动把元素滚动到可视位置,但也有不会自己滚动的(比较少). 那我们就可以用seleni ...
- action装饰器
视图集中附加action的声明 from rest_framework.decorators import action # 追加action:返回书记的倒叙地0个书籍的信息 @action(meth ...
- LC19. 删除链表的倒数第 N 个结点
删除链表的倒数第N个结点(中等) Q:给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点. 示例: 示例一:输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3, ...
- 代码随想录算法训练营Day7哈希表| 454.四数相加II383. 赎金信15. 三数之和18. 四数之和 |总结
454.四数相加Ⅱ 题目链接:454.四数相加 给你四个整数数组 nums1.nums2.nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足:. ...
- 人工智能导论——口罩佩戴检测详解(附带MTCNN论文精读)
人工智能导论--口罩佩戴检测详解(附带MTCNN论文精读) 一.问题重述 随着人类的科技不断进步,病毒也在随之更新迭代:在19年席卷全球的新冠肺炎疫情给人们的生活带来了极大的灾难,造成了无数的人因此失 ...
- 百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 基于 Paddle Serving快速使用(服务化部署 - CentOS 7)
目录 Paddle Serving服务化部署实战 准备预测数据和部署环境 环境准备 安装 PaddlePaddle 2.0 安装 PaddleOCR 准备PaddleServing的运行环境, 模型转 ...
- R 数据可视化 : 热图
本文作者蒋刘一琦,自嘲是一个有艺术追求的生信狗,毕业于浙江大学生物信息学专业,目前在复旦大学就读研究生,研究方向为宏基因组. 在生物信息领域我们常常使用 R 语言对数据可视化.在对数据可视化的时候,我 ...
- 【Python&目标识别】labelimg报错IndexError: list index out of range
博主在使用labelimg选取深度学习样本时,命令行报错IndexError: list index out of range,几经周折终于解决了,所以跟大家分享一下. ...
- 18.详解AQS家族的成员:Semaphore
关注:王有志,一个分享硬核Java技术的互金摸鱼侠. 欢迎你加入Java人的提桶跑路群:共同富裕的Java人 今天我们来聊一聊AQS家族中另一个重要成员Semaphore,我只收集到了一道关于Sema ...
- 时隔多年,从新认识浮动float
开场白 随着css的发展,在加上各种优秀ui库的兴起. 我们在项目中浮动用的很少. 但并不意味着我们不使用浮动了. 曾几何时,浮动这个属性是那个遥远时代的'超级明星' 排版,布局,都需要使用他. 今不 ...