vim的使用方法

news2024/11/24 20:00:24

常见的命令可参考:

Linux vi/vim | 菜鸟教程​www.runoob.com/linux/linux-vim.html​编辑icon-default.png?t=O83Ahttps://link.zhihu.com/?target=https%3A//www.runoob.com/linux/linux-vim.html

1. vim的工作模式

vi/vim 共分为三种模式,命令模式、编辑输入模式和末行(命令行)模式。

1.1 命令模式

任何时候,不管用户处于何种模式,只要按一下ESC键,即可使vi进入命令模式。我们在shel环境(提示符为$)下输入启进入编辑器时,也是处于该模式下。

在命令模式下,用户可以输入各种合法的vi命令,用于管理自己的文档。此时从键盘上输入的任何字符都被当做编辑命令来解释,若输入的字符是合法的vi命令,则vi在接受用户命令之后完成相应的动作。但需注意的是,所输入的命令并不在屏幕上显示出来。若输入的字符不是vi的合法命令,vi会响铃报警。

用户刚刚启动 vi/vim,便进入了命令模式。

此状态下敲击键盘动作会被 Vim 识别为命令,而非输入字符,比如我们此时按下 i,并不会输入一个字符,i 被当作了一个命令。以下是普通模式常用的几个命令:

  • i -- 切换到输入模式,在光标当前位置开始输入文本。
  • x -- 删除当前光标所在处的字符。
  • : -- 切换到底线命令模式,以在最底一行输入命令。
  • a -- 进入插入模式,在光标下一个位置开始输入文本。
  • o:在当前行的下方插入一个新行,并进入插入模式。
  • O -- 在当前行的上方插入一个新行,并进入插入模式。
  • dd -- 剪切当前行。
  • yy -- 复制当前行。
  • p(小写) -- 粘贴剪贴板内容到光标下方。
  • P(大写)-- 粘贴剪贴板内容到光标上方。
  • u -- 撤销上一次操作。
  • Ctrl + r -- 重做上一次撤销的操作。
  • :w -- 保存文件。
  • :q -- 退出 Vim 编辑器。
  • :q! -- 强制退出Vim 编辑器,不保存修改。

命令模式只有一些最基本的命令,因此仍要依靠底线命令行模式输入更多命令。

1.2 编辑模式

在命令模式下按下 'i' ,'a','o' 都可以进入了输入模式,区别可参考上面的介绍,按 Esc 键可以返回到命令模式。

进入输入模式

在输入模式中,可以使用以下按键:

  • 字符按键以及Shift组合,输入字符
  • ENTER,回车键,换行
  • BACK SPACE,退格键,删除光标前一个字符
  • DEL,删除键,删除光标后一个字符
  • 方向键,在文本中移动光标
  • HOME/END,移动光标到行首/行尾
  • Page Up/Page Down,上/下翻页
  • Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
  • ESC,退出输入模式,切换到命令模式

1.3 末行模式

在命令模式下,输入冒号即可进入未行模式。此时窗口的状态行会显示出冒号,等待用户输入命令。用户输入完成后,按回车执行,之后vi编辑器又自动返回到命令模式下。常见的末行命令:

  • :w:保存文件。
  • :q:退出 Vim 编辑器。
  • :wq:保存文件并退出 Vim 编辑器。
    • 进入末行模式后(esc),直接按(小写状态)shift+zz或者(大写状态)ZZ ,也可以保存退出当前文件
  • :q!:强制退出Vim编辑器,不保存修改。
  • :%d:清空文件内容。
  • :nohl:取消由 Vim 内部命令(如搜索)引起的高亮显示。

按 ESC 键可随时退出底线命令模式。

2. VIM末行模式中分屏

按键功能
:sp当前文件水平分屏
:vsp当前文件垂直分屏
:sp 文件名当前文件和另一个文件水平分屏
:vsp 文件名当前文件和另一个文件垂直分屏
ctrl+w+w在多个窗口切换光标
:wall/:wqall//:qall保存/保存退出/退出所有分屏窗口
vim -O a.c b.c垂直分屏
vim -o a.c b.c水平分屏

3. vim其他用法

按键功能
:!man 3 printf在vim中执行自定义命令 ,我这里查看printf的用法(q退出)
:r !ls -l将ls -l执行的结果写入当前文件中
:r /etc/passwd将/etc/passwd文件中的内容写入到当前文件中
:w /tmp/txt将当前文件内容写入到/tmp/txt文件中
:w! /tmp/txt强制将当前文件内容写入到/tmp/txt文件中
:1,10s/^/\/\//将第1行到10行行首添加// (^表示行首) /\/\转移字符
:1,10s#^#//将第1行到10行行首添加//(#可以临时代替/ 分隔)
:%s/;/\r{\r\treturn0;\r}\r/g将 ; 替换成{ return 0; }
:1,10s#//##将第1行到10行行首去掉//(#可以临时代替/ 分隔)
  • :1,10s/^/\/\//
    • :1,10s:表示在第1行到第10行之间执行替换操作。
    • ^:表示行的开头。
    • //:表示替换为的内容,这里是//(注释符号)。
  • :1,10s#^#//
    • :1,10s:表示在第1行到第10行之间执行替换操作。
    • #^#:表示查找模式,这里的^表示行的开头。
    • //:表示替换为的内容,这里是//
  • :%s/;/\r{\r\treturn0;\r}\r/g
    • :%s:表示在整个文件范围内执行替换操作。
    • /;/:要查找的模式,这里是分号
    • \r:表示换行符。
    • {:表示替换为的内容的一部分。
    • \t:表示一个制表符(Tab)。
    • return0;:这是替换后插入的代码部分,表示return 0;
    • }:表示替换为的内容的一部分。
    • g:表示全局替换,即在每一行中替换所有匹配的分号。
  • :1,10s#//##
    • s:表示替换操作。
    • #:作为分隔符,指定要替换的模式。
    • //:要被替换的字符串。
    • ##:替换为的内容(这里是空字符串,表示删除//)。

如何删除自定义列:

使用 Visual Block 模式

  • 首先,将光标移动到你想删除的列的第一个字符上。
  • 按下 Ctrl-v 进入 Visual Block 模式。
  • 使用方向键(h, j, k, l)或者鼠标来选择你想要删除的列的范围。
  • 按下 d 来删除选中的块。

如何解决vim乱码?(中文不能正常显示)

打开用户目录下的vim配置文件

vim ~/.vimrc

输入

set termencoding=utf-8
set encoding=utf8
set fileencodings=utf8,ucs-bom,gbk,cp936,gb2312,gb18030

如图,中文显示正常

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2228887.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java jsoup解析豆瓣电影数据html实战教程

什么是Jsoup Jsoup 是一个开源 Java 库,它提供了一个直观的 API,可使用 DOM API 方法获取 URL 并提取和处理数据。 作为一个多功能库,Jsoup 支持 CSS 选择器和 XPath,它们是识别和选择 HTML 文档中元素的强大选项。 此外&#xf…

CSS 复习

复杂选择器可以通过(id的个数,class的个数,标签的个数)的形式,计算权重。 如果我们需要将某个选择器的某条属性提升权重,可以在属性后面写!important;注意!importent要写在;前面 很多公司不允许…

计算机毕业设计django+大模型租房推荐系统 租房可视化 租房大屏可视化 租房爬虫 spark 58同城租房爬虫 房源推荐系统

开题报告:《Django大模型租房推荐系统》 一、研究背景与意义 随着城市化进程的加快,房屋租赁市场日益繁荣。然而,传统的房屋租赁方式存在信息不对称、交易流程繁琐等问题,给租户和房主带来了诸多不便。因此,开发一套…

LLM之RAG实战(四十七)| GraphRAG:使用知识图谱改进 RAG 检索策略

在 Retrieval Augmented Generation (RAG) 技术中,检索是直接影响生成输出质量的关键步骤。然而,基础 RAG 中的向量检索技术通常不足以满足所有情况。例如,传统的检索方法在处理大型私有文档存储库时往往表现不佳。许多…

希亦内衣洗衣机Pro:18项核心数据硬核黑科技,爆发10倍洁净力!

随着人们卫生意识越来越强,小型洗衣机成为热门家电,尤其是对于女士和有婴儿的家庭。近日,洗护领域的佼佼者希亦正式推出了最新款的内衣洗衣机——希亦ACE Pro,为追求精致生活的人们,带来了新的选择,能提供更…

零基础学西班牙语,柯桥专业小语种培训泓畅学校

No te comas el coco, seguro que te ha salido bien la entrevista. Ya te llamarn. 别瞎想了!我保证你的面试很顺利。他们会给你打电话的。 这里的椰子是"头"的比喻。在西班牙的口语中,我们也可以听到其他同义表达,比如&#x…

【python】OpenCV—WaterShed Algorithm

文章目录 1、功能描述2、代码实现3、完整代码4、效果展示5、涉及到的库函数5.1、cv2.pyrMeanShiftFiltering5.2、cv2.morphologyEx5.3、cv2.distanceTransform5.4、cv2.normalize5.5、cv2.watershed 6、更多例子7、参考 1、功能描述 基于分水岭算法对图片进行分割 分水岭分割…

微服务设计模式 - 特性标志(Feature Flags)

微服务设计模式 - 特性标志(Feature Flags) 定义 特性标志(Feature Flags),又称特性开关(Feature Toggles),是一种常见的云计算设计模式,允许开发人员通过配置动态地打开…

WebStorm EsLint报红色波浪线

如图左侧。 这个错误是由于 ESLint 和 Prettier 的配置不一致导致的。它建议你移除多余的空格。以下是一些解决方法: 安装 Prettier 插件: 确保你在 WebStorm 中安装了 Prettier 插件,并确保它配置正确。 调整 ESLint 配置: 检查…

四、k8s快速入门之Kubernetes资源清单

kubernetes中的资源 ⭐️ k8s中所有的内容都抽象为资源,资源实列化之后,叫做对象 1️⃣名称空间级别 ⭐️ kubeadm在执行k8s的pod的时候会在kube-system这个名称空间下执行,所以说当你kubectl get pod 的时候是查看不到的查看的是默认的po…

数据库->数据库约束

目录 一、数据库约束 1.定义 2.约束类型 3.NOT NULL 非空约束 4. UNIQUE 唯一约束 5.PRIMARY KEY 主键约束 1.主键的使用 2.把表中的主键交给数据库自己维护 2.1主键列设置为null 则使用自增 2.2插入除了主键以外的所有非空列(推荐方法) 2.3自…

Kafka相关API开发

(一)引入依赖 用API直接去操作kafka(读写数据)在实际开发中用的并不多,学习它主要还是为了加深对Kafka功能的理解。kafka的读写操作,实际开发中,是通过各类更上层的组件去实现。而这些组件在读写kafka数据时,用的当然是kafka的jav…

【K8S系列】Kubernetes 中 NodePort 类型的 Service 无法访问的问题【已解决】

在 Kubernetes 中,NodePort 类型的 Service 允许用户通过每个节点的 IP 地址和指定的端口访问应用程序。如果 NodePort 类型的 Service 无法通过节点的 IP 地址和指定端口进行访问,可能会导致用户无法访问应用。本文将详细分析该问题的常见原因及其解决方…

如何使用AdsPower指纹浏览器克服爬虫技术限制,安全高效进行爬虫!

随着中国开发者日益成熟,应用质量明显提升,越来越多的开发者选择出海寻找机会扩大市场。但“应用出海”说起来容易,做起来难。其中,最大的困恼就是对海外市场缺乏了解。 很多开发者会选择使用网络爬虫(Web Crawling&a…

centos7之LVS-DR模式传统部署

介绍 优缺点以及适用场景 优点:能负载更多的Realserver减轻LB的压力,性能高于tun模式。 缺点:不支持端口转发(VIP:80必须代理RIP:80),Realserver和LVS需要在同一网段下。 适用:适用于大多数公司,也是大多数公司用的最多的模式。…

爬虫+数据保存2

爬取数据保存到MySQL数据库 这篇文章, 我们来讲解如何将我们爬虫爬取到的数据, 进行保存, 而且是把数据保存到MySQL数据库的方式去保存。 目录 1.使用pymysql连接数据库并执行插入数据sql代码(insert) 2.优化pymysql数据库连接以及插入功能代码 3.爬取双色球网站的数据并保…

什么样的工程项目管理软件适合中小施工企业?

工程行业是典型的传统行业,劳动密集,协作频繁,依赖经验传承。在工程项目施工过程中,常见的难题纷繁复杂,其中包括效率低下、材料浪费、数据不实、原材料成本上涨、工期延误、质量缺陷和安全风险等。这些问题不仅阻碍了…

机器学习中的嵌入是什么?

一、说明 嵌入是真实世界对象的数字表示,机器学习(ML)和人工智能(AI)系统利用它来像人类一样理解复杂的知识领域。例如,计算算法了解 2 和 3 之间的差为 1,这表明与 2 和 100 相比,2…

NVR设备ONVIF接入平台EasyCVR视频融合平台智慧小区视频监控系统建设方案

一、方案背景 智慧小区构成了“平安城市”建设的基石。随着社会的进步,社区安全问题逐渐成为公众关注的热点。诸如高空抛物、乱丢垃圾、破坏车辆、入室盗窃等不文明行为和违法行为频繁出现。目前,许多小区的物业管理和安全防护系统仍然较为简单和陈旧&a…

Typora一款极简Markdown文档编辑器和阅读器,实时预览,序列号生成!免费!最新可用!

文章目录 一、Typora下载和安装二、Typora序列号生成 Typora是一款Markdown编辑器和阅读器,风格极简,实时预览,所见即所得,支持MacOS、Windows、Linux操作系统,有图片和文字、代码块、数学公式、图表、目录大纲、文件管…