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 的使用的更多相关文章

  1. []转帖] 浅谈Linux下的五种I/O模型

    浅谈Linux下的五种I/O模型 https://www.cnblogs.com/chy2055/p/5220793.html  一.关于I/O模型的引出 我们都知道,为了OS的安全性等的考虑,进程是 ...

  2. 浅谈Linux下/etc/passwd文件

    浅谈Linux 下/etc/passwd文件 看过了很多渗透测试的文章,发现在很多文章中都会有/etc/passwd这个文件,那么,这个文件中到底有些什么内容呢?下面我们来详细的介绍一下. 在Linu ...

  3. 浅谈Linux下如何修改IP

    linux 下命令之浅谈//cd ..  //返回上一级//创建文件夹touch test.txt//Linux不区分大小写//往一个文件中追加内容echo "****" > ...

  4. 浅谈linux 下,利用Nginx服务器代理实现ajax跨域请求。

    ajax跨域请求对于前端开发者几乎在任何一个项目中都会用到,众所周知,跨域请求有三种方式: jsonp; XHR2 代理: jsonp: 这种应该是开发中是使用的最多的,最常见的跨域请求方法,其实aj ...

  5. 浅谈Linux下CPU利用率和CPU负载【转】

    转自:https://blog.csdn.net/Alisa_xf/article/details/71430406 在Linux/Unix下,CPU利用率(CPU utilization)分为用户态 ...

  6. 浅谈Linux下的五种I/O模型 两篇别人的博客

     http://blog.csdn.net/sinat_34990639/article/details/52778562  http://www.cnblogs.com/chy2055/p/5220 ...

  7. 浅谈Linux下各种压缩 解压命令和压缩比率对比

    Linux下压缩.解压命令五花八门,不像在windows下一个winrar打遍天下无敌手,清一色的.rar .zip格式. 比如,Linux下常用的tar tar.gz tar.bz2 .Z等等不一而 ...

  8. 浅谈 Linux 下的 SSH1, SSH2

    SSH:Secure Shell .是一种安全协议. 常见的应用场景是远程控制台登陆. SSH1免费,SSH2收费.  其实 SSH 并不只是在 Linux 和 Unix  下使用,他们同样在 Win ...

  9. 浅谈Linux下傻瓜式磁盘分区工具cfdisk的使用

    对于新手来说,Linux环境下的磁盘分区可能还会存在一些困难.对于熟悉Linux的朋友来说,我们还有fdisk.parted(2TB以上的磁盘分区使用)等磁盘分区工具可以使用.在我们新增磁盘或者在原来 ...

  10. 浅谈Linux下的rpm

      虽然现在很多人都使用yum去替代rpm了,但是rpm在一些特殊场合下还是有其作用的,比如查询跟验证已安装的rpm包,rpm全称Redhat Package Manager,是一种用于互联网下载包的 ...

随机推荐

  1. 使用 MRKL 系统跨越神经符号鸿沟

    本文展示了自然语言处理的下一步发展--模块化推理.知识和语言( the Modular Reasoning, Knowledge and Language,简称为MRKL)系统以及LangChain和 ...

  2. Jenkins - 安装部署

    Jenkins安装部署 简介 Jenkins是一个开源的软件项目,是基于java开发的一种持续集成工具,用于监控持续重复的工作,提供一个开放易用的软件平台,使软件的持续集成变成可能. 主要用于: 持续 ...

  3. vue之关闭eslint及vue/require-v-for-key 、vue/no-unsed-vars报错解决方法

    报错:Page1组件已经注册但是没有被使用.  vue/no-unused-components 如果报错以下: 解决方法: 首先打开项目中的package,json 找到eslint-config ...

  4. webpack Dev Server Invalid Options options should NOT have additional prop

    今日npm run serve时提示ERROR ValidationError: webpack Dev Server Invalid Options options should NOT have ...

  5. 泰裤辣!!!手摸手教学,如何训练一个你的专属AI歌姬~

    最近在做AIGC的项目,不过是与图片相关的,现在的模型效果可比前几年图片替换效果好多了.之前尝试过用 faceswap 工具来进行人脸替换的,具体可以参看下我之前的这篇文章:https://blog. ...

  6. https 原理与实践

    https 原理与实践 经典三问,是什么,为什么,怎么做? 是什么 是一种http的安全协议,在tcp ip网络模型里,http应用层是在tcp 传输层之上的,https协议规定了在tcp传输层之上还 ...

  7. # 代码随想录算法训练营Day28 回溯算法|93.复原IP地址 78.子集 90.子集II

    代码随想录算法训练营 93.复原IP地址 题目链接:93.复原IP地址 给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式. 有效的 IP 地址 正好由四个整数(每个整数位于 0 到 ...

  8. 代码随想录算法训练营Day16二叉树|104.二叉树的最大深度 559.n叉树的最大深度 111.二叉树的最小深度  222.完全二叉树的节点个数

    代码随想录算法训练营 代码随想录算法训练营Day16二叉树|104.二叉树的最大深度 559.n叉树的最大深度 111.二叉树的最小深度  222.完全二叉树的节点个数 104.二叉树的最大深度 题目 ...

  9. 资源高效搜索方法,你 Get 到了吗?

      随手转发给好友和朋友圈  编辑:办公小通 百度搜索谁都会,但是搜出来的资料往往良莠不齐.搜索速度是快了,但是还要花大量的时间去筛选. 通过下面的两个最常用的栗子,小通强烈推荐大家用高级搜索. 高级 ...

  10. CSI架构和原理

    CSI CSI简介 CSI的诞生背景 K8s 原生支持一些存储类型的 PV,如 iSCSI.NFS.CephFS 等等,这些 in-tree 类型的存储代码放在 Kubernetes 代码仓库中.这里 ...