GVIM教程,GVIM使用心得

2023-11-20

目录

 

一、gvim的基础操作

1. 插入字符

2.移动光标或页面

3.查找内容

4.替换

5.删除文本

6.复制粘贴

7.对文件的操作

8. 多行编辑

9. 选中文本


 

一、gvim的基础操作

以下操作均在命令模式下进行,操作中需要输入冒号则进入末行模式,一般用来对整个文档的内容或对文档进行编辑。输入某些命令(例:i,a,o)可以进入编辑文档的模式,称为插入模式。

1. 插入字符

命令 结果
i(I) 进入插入模式,光标出现在字符前(段首)
a(A) 进入插入模式,光标出现在字符后(段尾)
o(O) 进入插入模式,在光标所处位置下(上)新起一行

i与a的区别:

          377eece18954483f8be278796b1b63c4.png

记忆:OP,paragraph,段落。add是在后面加,insert与add相反,在前面加

补充:如果已经按照格式将代码对齐,那么在修改时需要在行中间插入字符,这时候可以使用R,大写R进行替换,然后输入字符,这样后面的字符不会动,输入完毕后按esc退出,避免后面对齐的文本被移动。

2.移动光标或页面

命令 结果 记忆
移动一个字符位
h/j/k/l 朝着光标的左/下/上/右移动一个字符位 h,l分别处于左右的位置,所以是左移和右移,h和j一起记左下角,j和k一起记右上角,所以j和k分别是下移和上移
移动一个单词位
w(W) 光标移动到下一个单词首 word

e(E)

光标移动到下一个单词末尾 单词的end
b(B) 光标移动到上一个单词首 back回上一个单词
移动一个行(段)
shift + ^ 光标移动到行首  
shift + $ 光标移动到行尾  
 {( } )

光标移动到上一段(下一段)

(以空行来划分段落,见块引用)

 
gg( [[ ) 光标移动到文档首行  
G( ]] ) 光标移动到文档末行  
移动页面(翻页)

crtl+F/f

向下翻页 翻(fan)的拼写
ctrl+B/b 向上翻页 back回上一页

gvim中段落的移动:

178494abd4854d3b868481a61e850567.png

gvim将空行隔开的部分认为是一个段落

3.查找内容

命令 结果
:/abc 在文档中查找abc,用n/N将光标跳转至下一个/上一个查找的对象处
shift+* 直接查找光标所处位置的单词,用n/N将光标跳转至下一个/上一个查找的对象处
:noh 将高亮显示的查找结果取消高亮

4.替换

命令 结果
r(R) 光标所处字符的替换(进入替换模式连续替换,Esc退出)
:%s/a/b/g 将全局的a替换为b
:%s/a/b/gc 将全局的a替换为b,每次替换需要确认
:1,30s/a/b/g 将1到30行的a替换为b
:,30s/a/b/g 将光标所在位置到30行的a替换为b

5.删除文本

命令 结果
x(X) 删掉光标所处位置字符(删掉光标前字符)
s(S) 删掉光标所处位置字符(删除行全部内容且行保留),并且进入插入模式
d(D) d一般组合其他键使用(删除行全部内容且行保留,但不进入插入模式)
dd 删除行,行内容和行全部被删除
dw 删除光标所在单词

x和X的区别:

65197c6fc5064a0b8dfc465663778fc0.png

补充:在完成代码的对齐后,如果需要对中间部分进行删除,可以通过r替换,然后敲space,则可以在不动后面字符位置的情况下完成删除。

注意:任何删除的文本都会被放在剪贴板,也就是说后续操作接p,即可将删除的内容进行粘贴。

6.复制粘贴

命令 结果
y 复制选中的文本
yy 复制光标所在行的文本
p(P) 将复制的文本粘贴在光标后(光标前)

注意:选中文本进行粘贴时,会以光标所处位置进行粘贴,选中n行进行粘贴时,会在光标所处位置新起n行进行粘贴。

7.对文件的操作

命令 结果
文件保存与打开
:w 保存
:wq 保存后退出(q退出和q!强制退出一般不使用)
:e myfile 关闭该文件,且打开名称为myfile的文件
:e. 关闭该文件,打开目录,在目录窗口按R即可刷新目录
:new 不关闭该文件,分屏打开一个新文件,未命名
分屏操作
:sp 横开新窗口,split
:vsp 竖开新窗口,vertical split
ctrl+ww 在分屏窗口切换
                                                                   路径跳转(检查路径)
gf 光标处于路径上时,跳转至对应路径的文件夹(或文件)
ctrl+o 返回跳转前的文件中

8. 多行编辑

多行编辑用于批量删除或者批量插入字符,ctrl+v进入可视化编辑模式,通过j和k(或方向键)选中多行,按shift+i(或I)进入插入模式编辑单行,随后Esc退出,可以实现在选中的多行重现编辑的内容。

注意:多行编辑的有效性

2ce08c4aaa7144e7a5f24fbc6a383bf0.png

9. 选中文本

命令 结果
v 进入选中模式,常用于选中字符
可视化编辑选中 在选中文本中常用于选中块
V 进入多行选中模式,可以选中多行

可视化块选中粘贴和多行选中粘贴的区别:

71057a524eaf49528a53428b5a6b1460.png

V的行选中模式,常用于选中多行,多行复制粘贴,会新起多行实现粘贴;

多行编辑选中的内容块,不会新起行,常用于在空白处进行粘贴。

10. 组合键

表示操作的键可以和表示范围的键任意组合,以实现组合键操作

表示操作的键 表示范围的键
d   删除 ^  行首
$  行尾
y  复制

gg 首行

G  末行

w  单词

组合键操作示例
dw 删除光标处单词
dgg 删除光标处到首行全部内容
yw 复制光标处单词
y$ 复制光标处到行尾全部内容

11. 其他操作

命令 结果
:ab ti timer abstract表示缩写,可以实现在插入模式下插入ti后敲打space(或Esc)自动替换成timer
u 撤销
shift+r 恢复撤销
shift+u 大小写切换
ctrl+p(n) 插入模式下使用,启动自动补全选项
q 录制宏操作(详细操作见后文)
tabe 多开标签页(详细操作见后文)

多开标签页,方便文件管理

d789559b3104400fa2d71b8ddd165bf9.png

 

录制宏操作

be689b272976499f952de107c9eb2ca7.png

 更新目录:在冒号模式下,按N,然后table敲打出NERDTree就会自动更新目录(实习公司工作环 境下)

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GVIM教程,GVIM使用心得 的相关文章

  • 如何让“grep”从文件中读取模式?

    假设有一个很大的文本文件 我只想打印与某些模式不匹配的行 显然 我可以使用egrep v patter1 pattern2 pattern3 现在 如果所有这些模式都在一个文本文件中怎么办 最好的制作方法是什么egrep从文件中读取模式 g
  • :set 选项的显示值

    如果你不给 colorscheme一个参数 然后它显示 vim 当前使用的颜色方案的名称 vim 中是否有类似的方法来显示是否设置了选项或如果选项的值不是布尔值则设置为什么 例如 如果我想知道是否autoindent已设置或者我想知道的值t
  • Composer 安装要求

    我正在尝试将 Composer 安装到 Laravel 项目中 当我做的时候sudo composer install在项目目录中它显示了两个错误 Problem 1 Installation request for simplesoftw
  • Vim 脚本中的“reduce”函数

    Vim 脚本有一些非常基本的函数式编程工具 It has map and filter 但据我所知它缺乏reduce 功能 Reduce https en wikipedia org wiki Fold 28higher order fun
  • 在 /dev/input/eventX 中写入事件需要哪些命令?

    我正在开发一个android需要将触摸事件发送到 dev input eventX 的应用程序 我知道C执行此类操作的代码结构如下 struct input event struct timeval time unsigned short
  • 使 'n' 始终向前搜索,无论是否 / 或 ?用于搜索

    我几乎总是在 Vim 中搜索 然后继续向前搜索n并向后N 然而 有时我会使用 跳转到我当前所在行上方几行的项目 在这种情况下 如果我想向前搜索同一项目 我必须使用N代替n 令人烦恼的心理减速带 所以我的问题是 是否有可能使n永远向前走 并且
  • QFileDialog::getSaveFileName 和默认的 selectedFilter

    我有 getSaveFileName 和一些过滤器 我希望当用户打开 保存 对话框时选择其中之一 Qt 文档说明如下 可以通过将 selectedFilter 设置为所需的值来选择默认过滤器 我尝试以下变体 QString selFilte
  • 如何修复“iptables:没有该名称的链/目标/匹配”?

    我在我的 Linux 嵌入式系统上构建并安装了 iptables 如果我列出所有规则 则一切正常 iptables list Chain INPUT policy ACCEPT target prot opt source destinat
  • Unix 命令列出包含字符串但*不*包含另一个字符串的文件

    如何递归查看包含一个字符串且不包含另一个字符串的文件列表 另外 我的意思是评估文件的文本 而不是文件名 结论 根据评论 我最终使用了 find name html exec grep lR base maps xargs grep L ba
  • 修改linux下的路径

    虽然我认为我已经接近 Linux 专业人士 但显然我仍然是一个初学者 当我登录服务器时 我需要使用最新版本的R 统计软件 R 安装在 2 个地方 当我运行以下命令时 which R I get usr bin R 进而 R version
  • bluetoothctl 到 hcitool 等效命令

    在 Linux 中 我曾经使用 hidd connect mmac 来连接 BT 设备 但自 Bluez5 以来 这种情况已经消失了 我可以使用 bluetoothctl 手动建立连接 但我需要从我的应用程序使用这些命令 并且使用 blue
  • 为什么我收到“无法进行二进制日志记录”的信息。在我的 MySQL 服务器上?

    当我今天启动 MySQL 服务器并尝试使用以下命令进行一些更改时用于 MySQL 的 Toad http www quest com toad for mysql 我收到此消息 MySQL 数据库错误 无法进行二进制日志记录 消息 交易级别
  • Elasticsearch 无法写入日志文件

    我想激活 elasticsearch 的日志 当我运行 elasticsearch 二进制文件时 我意识到我在日志记录方面遇到问题 无法加载配置 这是输出 sudo usr share elasticsearch bin elasticse
  • 创建 jar 文件 - 保留文件权限

    我想知道如何创建一个保留其内容的文件权限的 jar 文件 我将源代码和可执行文件打包在一个 jar 文件中 该文件将在使用前提取 人们应该能够通过运行批处理 shell 脚本文件立即运行示例和演示 然后他们应该能够修改源代码并重新编译所有内
  • 跟踪 Linux 程序中活跃使用的内存

    我想跟踪各种程序在特定状态下接触了多少内存 例如 假设我有一个图形程序 最小化时 它可能会使用更少的内存 因为它不会重新绘制窗口 这需要读取图像和字体并执行大量库函数 这些对象仍然可以在内存中访问 但实际上并没有被使用 类似的工具top它们
  • C# 开发人员有什么理由应该学习 Emacs/Vim 吗?

    我在一家纯粹的 Microsoft 商店担任 C 开发人员 最近 我开始在工作之余的空闲时间使用 Gas 和 Linux 自学汇编 我喜欢摆弄 Linux 尽管我对它还很陌生 我一直听说我应该学习 VIM 或 Emacs 但事实是 我绝对不
  • 如何在VIM中设置文件的正确路径?

    每当我击中 pwd在 vim 中命令总是返回路径C Windows system32 即使我在桌面上的 Python 文件中 所以每当我跑步时 python 命令返回 python can t open file Users myname
  • Linux TUN/TAP:无法从 TAP 设备读回数据

    问题是关于如何正确配置想要使用 Tun Tap 模块的 Linux 主机 My Goal 利用现有的路由软件 以下为APP1和APP2 但拦截并修改其发送和接收的所有消息 由Mediator完成 我的场景 Ubuntu 10 04 Mach
  • 如何在bash中使用jq从变量中包含的json中提取值

    我正在编写一个 bash 脚本 其中存储了一个 json 值 现在我想使用 Jq 提取该 json 中的值 使用的代码是 json val code lyz1To6ZTWClDHSiaeXyxg redirect to http examp
  • 为什么 Linux perf 使用事件 l1d.replacement 来处理 x86 上的“L1 dcache misses”?

    在英特尔 x86 上 Linux用途 https stackoverflow com a 52172985 149138事件l1d replacements来实施其L1 dcache load misses event 该事件定义如下 计数

随机推荐

  • 数组的一些简单操作,列表改数组,数组合并,数组存取

    数组的简单操作 总用的一些操作 记录一下 要不总忘 1列表改数组 import numpy as np a 1 2 3 4 a np array a 输出a array 1 2 3 4 2数组合并 延竖轴拼接数组 aa np vstack
  • hive中取最大值最小值的函数

    max 和min 函数 select a max b from t group by a select a min b from t group by a max和min函数是取某一列中的最大或者最小值 greatest 和least 函数
  • R数据科学-第九章使用lubridate处理日期和时间

    本章将会使用以下三个包 gt library tidyverse gt library lubridate gt library nycflights13 一 创建日期或时间 表示日期或时间的数据有三种 日期 在tibble中显示为date
  • C#学习笔记 事件

    事件为委托提供了一种发布 订阅机制 声明事件的类被称为发行者类 其他类可以订阅发行者类中的事件 当发行者类触发其中的事件时 所有订阅该事件的类都会收到这个变化 在图形界面框架中 这种情况非常常见 事件发布者 首先需要创建一个事件发布者类 该
  • python自动化笔记(十一)——openpyxl之封装

    封装一个可以读取任意excel文件的方法 可以指定读取的表单 当我们多次从excel中读取数据时 就不用重复地写代码 只需调用封装的类即可 一 封装的excel类实现的需求是什么 1 读取表头数据 2 读取表头以外的所有数据 返回值 列表
  • DHCP的配置(以华为eNSP为例)

    如有错误 敬请谅解 此文章仅为本人学习笔记 仅供参考 如有冒犯 请联系作者删除 基础知识介绍 络组建步骤 1 拓扑设计 2 IP地址规划 按照拓扑中划分的 络范围 规划 络位不同的IP地址 3 配置 1 配置各个节点的IP地址 2 路由 全
  • qbytearray的append是浅拷贝还是深拷贝_前端深拷贝和浅拷贝

    在前端攻城狮的工作实际应用中 有很多情况下在处理数据的时候 会用到数据的深拷贝和浅拷贝 例如 vue中数据是双向绑定的 页面显示依赖于从后台获取到的数据 但要将这个数据当做参数发送给另外一个接口的时候 其中有几个字段是多余的 此时 如果将原
  • 时间序列 R 07 时间序列分解 Time series decomposition

    一个时间序列可以分解为多个模型的组合 1 1 时间序列的组成 1 1 1 时间序列组成模式 三种时间序列模式 不计剩余残差部分 1 趋势Tend 比如线性趋势 先增加后降低的整体趋势 2 季节性Seasonal 以时间为固定周期 呈现循环的
  • IT项目管理个人作业8

    质量标准 量度 学历 博士以上 教学经验 5年以上 论文发布 10篇以上 逻辑表达能力 思路清晰 讲话清楚 性格 耐心 热情 同行评价 良好及以上 画出QQ图 因为数据量太少 可以推测它是符合正态分布的
  • 我的图床解决方案,超详细!

    图床就是将你的本地图片上传到相关服务商或者个人服务器 然后获取图片对应的网络访问地址 使用者可以方便快速的将图片插入到文章中 后续图片二次使用 迁移 分享都会非常简单 我之前常用的图床方案是使用Gitee的仓库来实现 我的博客 1 周刊 2
  • yaml学习

    1 yaml是专门用来写配置文件的语言 非常强大和简洁 远比json格式方便 可用之作为自动化测试框架的配置文件或者用例文件 2 使用场景 做配置文件 做测试用例 3 语法基本规则 大小写敏感 使用缩进表示层级关系 缩进的空格数目不重要 只
  • MySql笔记

    全部案例sql语句 https blog csdn net weixin 46002478 article details 109158249 视频学习地址 https www bilibili com video BV1KW411u7vy
  • 大端模式和小端模式转化

    在工作中遇到一个问题 数据是以大端模式存储的 而机器是小端模式 必须进行转换 否则使用时会出问题 一 定义 大端模式 Big Endian 数据的高字节 保存在内存的低地址中 数据的低字节 保存在内存的高地址中 小端模式 Little En
  • cube例子自带的说明文档

    Qt 5 6 Qt OpenGL Cube OpenGL ES 2 0 example Qt 5 6 0 Reference Documentation Contents Initializing OpenGL ES 2 0 Loading
  • Hibernate 知识点总结

    HIbernate最佳实践 1 使用Configuration装载映射文件时 不要使用绝对路径装载 最好的方式是通过getResourceAsStream 装载映射文件 这样Hibernate会从classpath中寻找已配置的映射文件 2
  • IDEA 消除项目结构 0%classes,0% lines covered

    1 起因 启动的时候 误点了下面的图标 2 作用 经查 这个图标的作用 用于检测代码覆盖率 在单元测试中经常被用到 以后有时间可以详细了解一下 3 解决 方法一 点击 Coverage 会出现一个 Coverage 控制台 点击红叉 No
  • 基于MATLAB BP神经网络的水果识别

    基于MATLAB BP神经网络的水果识别 一 课题实现的功能 1 原理分析 由于数字图像是唯一的特征标识符号 在经营管理中具有不可替代的作用 因此数字图像识别系统应具有很高的识别正确率 对环境光照条件 拍摄位置等因素的影响应有较大的容阈 并
  • 【平差软件学习---科傻】四、科傻二等水准平差(参数设置和in1文件讲解)

    平差软件学习 科傻 四 科傻二等水准平差 参数设置和in1文件讲解 这个算是最后一集了 也可能不是如果我想到不足的地方我会在补上一集视频 或者是文章页 总感觉自己操作的很熟练 到自己真正讲的时候就没有头绪了 不知道看到的我讲的同事会不会笑话
  • python的爬虫代码_python爬虫代码

    encoding utf 8 importreimportrequestsimporturllib2importdatetimeimportMySQLdbfrom bs4 importBeautifulSoupimportsys reloa
  • GVIM教程,GVIM使用心得

    目录 一 gvim的基础操作 1 插入字符 2 移动光标或页面 3 查找内容 4 替换 5 删除文本 6 复制粘贴 7 对文件的操作 8 多行编辑 9 选中文本 一 gvim的基础操作 以下操作均在命令模式下进行 操作中需要输入冒号则进入末