当前位置: 首页 > news >正文

编辑器Vim基本模式和指令 --【Linux基础开发工具】

文章目录

  • 一、编辑器Vim 键盘布局
  • 二、Linux编辑器-vim使用
  • 三、vim的基本概念
    • 正常/普通/命令模式(Normal mode)
    • 插入模式(Insert mode)
    • 末行模式(last line mode)
  • 四、vim的基本操作
  • 五、vim正常模式命令集
    • 插入模式
    • 从插入模式切换为命令模式
    • 移动光标
    • 删除文字
    • 复制
    • 替换
    • 撤销上一次操作
    • 更改
    • 跳至指定的行
  • 六、vim末行模式命令集
    • 列出行号
    • 跳到文件中的某一行
    • 查找字符
    • 保存文件
    • 离开vim
  • 七、vim操作总结
    • 三种模式
    • vim操作
  • 八、简单vim配置[了解]
    • 配置文件的位置
    • 常用配置选项,用来测试
    • 使用插件
  • 九、关于vim超级配置

一、编辑器Vim 键盘布局

在这里插入图片描述

二、Linux编辑器-vim使用

vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在 里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window、 mac os、 windows。我们统一按照vim来进行讲解。

下图为HJKL做方向键的历史原因(最开始键盘没有单独的方向键)
HJKL

三、vim的基本概念

我们讲解vim的三种模式(其实有好多模式,目前掌握这3种即可),分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:

正常/普通/命令模式(Normal mode)

控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode

插入模式(Insert mode)

只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。

末行模式(last line mode)

文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。
在命令模式下,shift+: 即可进入该模式。
要查看你的所有模式:打开 vim,底行模式直接输入 :help vim-modes

我这里一共有12种模式:six BASIC modes和six ADDITIONAL modes.
在这里插入图片描述

四、vim的基本操作

进入vim,在系统提示符号输入vim及文件名称后,就进入vim全屏幕编辑画面:

  1. $ vim test.c
  2. 不过有一点要特别注意,就是你进入vim之后,是处于[正常模式],你要切换到[插入模式]才能够输入文字。

[正常模式]切换至[插入模式]

  1. 输入 a ===//光标后移一位
  2. 输入 i ===//光标位置
  3. 输入 o ===//光标换行位置

[插入模式]切换至[正常模式]
• 目前处于[插入模式],就只能一直输入文字,如果发现输错了字,想用光标键往回移动,将该字删除,可以先按一下「ESC」键转到[正常模式]再删除文字。当然,也可以直接删除。

[正常模式]切换至[末行模式]
• 「shift + ;」, 其实就是输入「:」

退出vim及保存文件,在[正常模式]下,按一下「:」冒号键进入「Last line mode」,例如:

  1. : w (保存当前文件)
  2. : wq (输入「wq」,存盘并退出vim)
  3. : q! (输入q!,不存盘强制退出vim)

五、vim正常模式命令集

插入模式

  1. 按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件;
  2. 按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
  3. 按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。

从插入模式切换为命令模式

• 按「ESC」键。

移动光标

  1. vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格
  2. 按「G」:移动到文章的最后
  3. 按「 $ 」:移动到光标所在行的“行尾”
  4. 按「^」:移动到光标所在行的“行首”
  5. 按「w」:光标跳到下个字的开头
  6. 按「e」:光标跳到下个字的字尾
  7. 按「b」:光标回到上个字的开头
  8. 按「#l」:光标移到该行的第#个位置,如:5l,56l
  9. 按[gg]:进入到文本开始
  10. 按[shift+g]:进入文本末端
  11. 按「ctrl」+「b」:屏幕往“后”移动一页
  12. 按「ctrl」+「f」:屏幕往“前”移动一页
  13. 按「ctrl」+「u」:屏幕往“后”移动半页
  14. 按「ctrl」+「d」:屏幕往“前”移动半页

删除文字

  1. 「x」:每按一次,删除光标所在位置的一个字符
  2. 「#x」:例如,「6x」表示删除光标所在位置的“后面(包含自己在内)”6个字符
  3. 「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符
  4. 「#X」:例如,「20X」表示删除光标所在位置的“前面”20个字符
  5. 「dd」:删除光标所在行
  6. 「#dd」:从光标所在行开始删除#行

复制

  1. 「yw」:将光标所在之处到字尾的字符复制到缓冲区中。
  2. 「#yw」:复制#个字到缓冲区
  3. 「yy」:复制光标所在行到缓冲区。
  4. 「#yy」:例如,「6yy」表示拷⻉从光标所在的该行“往下数”6行文字。
  5. 「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。

替换

  1. 「r」:替换光标所在处的字符。
  2. 「R」:替换光标所到之处的字符,直到按下「ESC」键为止。

撤销上一次操作

  1. 「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回复。
  2. 「ctrl + r」: 撤销的恢复

更改

  1. 「cw」:更改光标所在处的字到字尾处
  2. 「c#w」:例如,「c3w」表示更改3个字

跳至指定的行

  1. 「ctrl」+「g」列出光标所在行的行号。
  2. 「#G」:例如,「15G」,表示移动光标至文章的第15行行首。

六、vim末行模式命令集

在使用末行模式之前,请记住先按「ESC」键确定您已经处于正常模式,再按「:」冒号即可进入末行模式。

列出行号

  1. 「set nu」: 输入「set nu」后,会在文件中的每一行前面列出行号。

跳到文件中的某一行

  1. 「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。

查找字符

  1. 「/关键字」: 先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止。
  2. 「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。
  3. 问题:∕ 和 ?查找有和区别?操作实验一下

保存文件

  1. 「w」: 在冒号输入字⺟「w」就可以将文件保存起来

离开vim

  1. 「q」:按「q」就是退出,如果无法离开vim,可以在「q」后跟一个「!」强制离开vim。
  2. 「wq」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。

七、vim操作总结

三种模式

• 正常模式
• 插入模式
• 底行模式

我们一共有12种总模式,大家下来可以研究一下

vim操作

• 打开,关闭,查看,查询,插入,删除,替换,撤销,复制等等操作。• 练习:当堂口头模式切换练习

八、简单vim配置[了解]

配置文件的位置

  1. 在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。
  2. 而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:“.vimrc”。例如,/root目录下,通常已经存在一个.vimrc文件,如果不存在,则创建之。
  3. 切换用户成为自己执行 su ,进入自己的主工作目录,执行 cd ~
  4. 打开自己目录下的.vimrc文件,执行 vim .vimrc

常用配置选项,用来测试

  1. 设置语法高亮: syntax on
  2. 显示行号: set nu
  3. 设置缩进的空格数为4: set shiftwidth=4

使用插件

要配置好看的vim,原生的配置可能功能不全,可以选择安装插件来完善配置,保证用户是你要配置的用户,接下来:

  1. 安装TagList插件,下载taglist_xx.zip ,解压完成,将解压出来的doc的内容放到〜/.vim/doc, 将解压出来的plugin下的内容拷⻉到〜/.vim/plugin
  2. 在〜/.vimrc 中添加: let Tlist_Show_One_File=1 let Tlist_Exit_OnlyWindow=1 let Tlist_Use_Right_Window=1
  3. 安装文件浏览器和窗⼝管理器插件: WinManager
  4. 下载winmanager.zip,2.X版本以上的
  5. 解压winmanager.zip,将解压出来的doc的内容放到〜/.vim/doc, 将解压出来的plugin下的内容拷贝到〜/.vim/plugin
  6. 在〜/.vimrc 中添加 let g:winManagerWindowLayout=‘FileExplorer|TagList nmap wm :WMToggle
  7. 然后重启vim,打开~/XXX.c或〜/XXX.cpp, 在normal状态下输入"wm", 你将看到界面效果。更具体移步:点我, 其他手册,请执行vimtutor 命令。
    参考资料
    Vim从入门到牛逼(vim from zero to hero)

九、关于vim超级配置

GitHub/Gitee上搜索vim配置,Ubuntu可以搜索vim plus也可以直接点击。

相关文章:

编辑器Vim基本模式和指令 --【Linux基础开发工具】

文章目录 一、编辑器Vim 键盘布局二、Linux编辑器-vim使用三、vim的基本概念正常/普通/命令模式(Normal mode)插入模式(Insert mode)末行模式(last line mode) 四、vim的基本操作五、vim正常模式命令集插入模式从插入模式切换为命令模式移动光标删除文字复制替换撤销上一次操作…...

云计算如何与物联网(IoT)结合?

今天我们来聊一个既酷炫又实用的话题:云计算如何给物联网插上腾飞的翅膀。 智能时代的技术密码 想象一下,你家的冰箱会自动帮你订购即将用完的牛奶,工厂的机器能预测何时需要维修,城市的路灯会根据实时交通流量调整亮度。这些看…...

C#面试常考随笔4:int? 和 int的区别,以及int?的运用场景?

可空性 int?&#xff1a;它是int的可空类型&#xff0c;允许将null赋值给该变量。int?实际上是Nullable<int>的缩写形式&#xff0c;是一个可以为null的整数类型。例如&#xff1a;int? num2 null;或者int? num3 10;都是合法的。 内存分配与存储 int?&#xff…...

DeepSeek-R1试用

最近DeepSeek太火了&#xff0c;对配置要求不高。刚好放假&#xff0c;下载试试。发现开源大模型的生态做的挺好的&#xff0c;几分钟就能在本地部署一个大模型。 配置 NVIDIA RTX 2060 6GB&#xff08;最低要求 NVIDIA GTX 1060 6GB &#xff09; 下载Ollama Ollama是一个…...

Vue 3 30天精进之旅:Day 06 - 表单输入绑定

引言 在前几天的学习中&#xff0c;我们探讨了事件处理的基本概念及其在Vue中的应用。今天&#xff0c;我们将进一步了解Vue的表单输入绑定。这是构建用户交互式应用的核心部分&#xff0c;使得我们能够方便地处理用户输入并实时更新数据。本文将介绍如何在Vue中实现单向和双向…...

[创业之路-269]:《创业讨论会》- 系统之韵:从麻雀到5G系统的共通性探索

关键词&#xff1a; 从系统的角度&#xff0c;麻雀、人体系统、企业系统、软硬件系统、软件系统、通信系统、5G系统是类似的&#xff1a; 都有&#xff1a;内在看不见的规律、外在显性各种现象 都是&#xff1a;输入、处理、输出 都是&#xff1a;静态、要素、组成、结构、组织…...

使用C#对指定的MYSQL数据库进行备份以及常见问题

最近在开发过程中&#xff0c;需要做个MYSQL数据库的备份&#xff0c;大致总结了一下代码&#xff0c;以及常见的坑 string bakName "database" DateTime.Now.ToString("yyyyMMddHHmmss") ".sql";//备份后的数据库文件名var bakupFilePath &q…...

探索人工智能在计算机视觉领域的创新应用与挑战

一、引言 1.1 研究背景与意义 在科技飞速发展的当下&#xff0c;人工智能&#xff08;Artificial Intelligence, AI&#xff09;已然成为引领新一轮科技革命和产业变革的重要驱动力。作为 AI 领域的关键分支&#xff0c;计算机视觉&#xff08;Computer Vision, CV&#xff0…...

Charles 4.6.7 浏览器网络调试指南:HTTPS抓包(三)

概述 在现代互联网应用中&#xff0c;网络请求和响应是服务交互的核心。对于开发者和测试人员来说&#xff0c;能够准确捕获并分析这些请求&#xff0c;是保证系统稳定性和性能的关键。Charles作为一个强大的网络调试工具&#xff0c;不仅可以捕获普通的HTTP请求&#xff0c;还…...

STM32 对射式红外传感器配置

这次用的是STM32F103的开发板&#xff08;这里面的exti.c文件没有how to use this driver 配置说明&#xff09; 对射式红外传感器 由一个红外发光二极管和NPN光电三极管组成&#xff0c;M3固定安装孔&#xff0c;有输出状态指示灯&#xff0c;输出高电平灯灭&#xff0c;输出…...

12 款开源OCR发 PDF 识别框架

2024 年 12 款开源文档解析框架的选型对比评测&#xff1a;PDF解析、OCR识别功能解读、应用场景分析及优缺点比较 这是该系列的第二篇文章&#xff0c;聚焦于智能文档处理&#xff08;特别是 PDF 解析&#xff09;。无论是在模型预训练的数据收集阶段&#xff0c;还是基于 RAG…...

危机13小时:追踪一场GitHub投毒事件

事件概要 自北京时间 2024.12.4 晚间6点起&#xff0c; GitHub 上不断出现“幽灵仓库”&#xff0c;仓库中没有任何代码&#xff0c;只有诱导性的病毒文件。当天&#xff0c;他们成为了 GitHub 上 star 增速最快的仓库。超过 180 个虚假僵尸账户正在传播病毒&#xff0c;等待不…...

CVE-2020-0796永恒之蓝2.0(漏洞复现)

目录 前言 产生原因 影响范围 漏洞复现 复现环境 复现步骤 防御措施 总结 前言 在网络安全的战场上&#xff0c;漏洞一直是攻防双方关注的焦点。CVE-2020-0796&#xff0c;这个被称为 “永恒之蓝 2.0” 的漏洞&#xff0c;一度引起了广泛的关注与担忧。它究竟是怎样的…...

游戏策划的分类

P3游戏策划分类 1.程序2.美术3.策划 程序&#xff1a;一般分为客户端程序和服务器程序 客户端程序一般负责游戏的前端画面表现 服务器程序负责游戏的后端运算 美术&#xff1a;角色原画&#xff0c;角色模型动作&#xff0c;场景原画&#xff0c;场景模型&#xff0c;UI设计&a…...

单片机基础模块学习——PCF8591芯片

一、A/D、D/A模块 A——Analog 模拟信号&#xff1a;连续变化的信号&#xff08;很多传感器原始输出的信号都为此类信号&#xff09;D——Digital 数字信号&#xff1a;只有高电平和低电平两种变化&#xff08;单片机芯片、微控制芯片所能处理的都是数字信号&#xff09; 下面…...

深入探索 HTML5 拖拽效果 API:打造流畅交互体验

在现代的 Web 开发中&#xff0c;交互性和用户体验一直是开发者关注的重点。HTML5 的拖拽效果 API (Drag and Drop API) 提供了一种非常直观的方式来让网页元素或文件能够被拖动并放置到页面的指定位置&#xff0c;极大提升了用户的交互体验。本篇文章将深入探讨如何使用 HTML5…...

【Healpix】python一种用于将球面划分为均匀区域的技术

Healpix 1、简介2、Healpix的基本原理3、Healpix的优点4、安装及使用4.1 安装healpy4.2 创建Healpix地图4.3 读取和写入Healpix数据4.4 数据插值 5、案例5.1 案例一&#xff1a;宇宙微波背景辐射&#xff08;CMB&#xff09;分析5.2 案例二&#xff1a;星系分布分析5.3 案例三&…...

Go:基于Go实现一个压测工具

文章目录 写在前面整体架构通用数据处理模块Http请求响应数据处理Curl参数解析处理 客户端模块Http客户端处理Grpc客户端处理Websocket客户端处理 连接处理模块GrpcHttp 统计数据模块统计原理实现过程 写在前面 本篇主要是基于Go来实现一个压测的工具&#xff0c;关于压测的内…...

算法-加油站问题

hello 大家好&#xff01;今天开写一个新章节&#xff0c;每一天一道算法题。让我们一起来学习算法思维吧&#xff01; function canCompleteCircuit(gas, cost) {// 加油站的总数const n gas.length;// 记录总剩余油量&#xff0c;若总剩余油量小于 0&#xff0c;说明无法绕环…...

UART ,IIC 和SPI三种总线协议

1.UART 1.1 简介 UART&#xff08;Universal Asynchronous Receiver/Transmitter&#xff09;即通用异步收发器。 常见的串行、异步通信总线&#xff0c;两条数据线Tx、Rx&#xff0c;实现全双工通信&#xff0c;常用于主机与外设的通信&#xff0c;点对点。 1.2 硬件连接 交叉…...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站&#xff0c;会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后&#xff0c;网站没有变化的情况。 不熟悉siteground主机的新手&#xff0c;遇到这个问题&#xff0c;就很抓狂&#xff0c;明明是哪都没操作错误&#x…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中&#xff0c;可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行&#xff0c;可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令&#xff0c;并忽略错误 rm somefile…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

OpenLayers 分屏对比(地图联动)

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能&#xff0c;和卷帘图层不一样的是&#xff0c;分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...