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使用心得 的相关文章

  • 何时用引号将 shell 变量括起来?

    我应该或不应该在 shell 脚本中用引号括住变量吗 例如 下列说法正确的是 xdg open URL eq 2 or xdg open URL eq 2 如果是这样 为什么 一般规则 如果它可以为空或包含空格 或实际上任何空格 或特殊字符
  • Qt 嵌入式触摸屏 QMouseEvents 在收到 MouseButtonRelease 之前未收到

    我在带有触摸屏的小型 ARM 嵌入式 Linux 设备上使用 Qt 4 8 3 我的触摸屏配置了 tslib 并对其进行了校准 因此 etc 中有一个 pointcal 文件 我的触摸事件的位置工作得很好 但无论如何我都会在鼠标按下或鼠标释
  • 如何通过ssh获取远程命令的退出代码

    我正在通过 ssh 从远程计算机运行脚本 ssh some cmd my script 现在 我想在本地计算机上存储 shell 脚本的退出状态 我该怎么做 假设没有任何问题ssh其本身 其退出状态是在远程主机上执行的最后一个命令的退出状态
  • 选择fasta文件中氨基酸超过300个且“C”出现至少4次的序列

    我有一个包含蛋白质序列的 fasta 文件 我想选择超过 300 个氨基酸且半胱氨酸 C 氨基酸出现超过 4 次的序列 我使用此命令来选择具有超过 300 个 aa 的序列 cat 72hDOWN fasta fasta bioawk c
  • Linux 内核使用的设备树文件 (dtb) 可视化工具? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个可以图形化表示Linux内核中使用的硬件设备树的工具 我正在尝试了解特定 Arm 芯片组
  • 使用脚本检查 git 分支是否领先于另一个分支

    I have branch1 and branch2我想要某种 git branch1 isahead branch2 这将显示如果branch1已承诺branch2没有 也可能指定这些提交 我无法检查差异原因branch2 is在之前br
  • vim 脚本“input()”函数不需要用户按 Enter 键

    我想让用户调用我的函数 然后让该函数请求用户输入 但我不希望用户在输入 input 函数所需的字母后必须输入 enter 例如 用户应该能够键入 h j k l 等单字母命令 并且键入的每个字母都会在我的函数中循环 直到用户键入 x 退出
  • 如何在 NERDTree 中显示隐藏文件(以句点开头)?

    我怎样才能使NERDTree https github com scrooloose nerdtree显示以 a 开头的文件 时期 我有一个名为 hgignore在项目目录中 如果我使用 NERDTree 浏览到该目录 该文件不会显示在树中
  • 如何连接行并添加分隔符?

    命令J连接线 命令gJ连接线删除空格 是否还有连接行的命令 在行之间添加分隔符 Example Input text other text more text text 我想做的事 选择这4行 如果开始和 或 EOL 处有空格 请将其删除
  • 链接错误:命令行中缺少 DSO

    我对 Linux 使用 Ubuntu 14 04 LTS 64 位 相当陌生 来自 Windows 并且正在尝试移植我现有的 CUDA 项目 当通过链接时 usr local cuda bin nvcc arch compute 30 co
  • 为什么此 NASM 代码会打印我的环境变量?

    本学期我刚刚完成计算机体系结构课程 除其他外 我们一直在涉足 MIPS 汇编并在 MARS 模拟器中运行它 今天 出于好奇 我开始在我的 Ubuntu 机器上摆弄 NASM 基本上只是将教程中的内容拼凑起来 并感受一下 NASM 与 MIP
  • 在 x86 汇编语言中获取文件大小的简单方法

    假设我已经在汇编中打开了一个文件 并且在寄存器 eax 中有该文件的文件句柄 我将如何获取文件的大小 以便为其分配足够的缓冲区空间 我在这里研究了另一个讨论 建议使用sys fstat 28 系统调用来获取文件统计信息但无法实现它 My a
  • 使用 libusb 输出不正确

    我用libusb编写了一个程序 我怀疑输出是否正确 因为所有条目都显示相同的供应商和产品 ID 以下是代码 include
  • LINUX:如何锁定内存中进程的页面

    我有一个 LINUX 服务器 运行一个具有大量内存占用的进程 某种数据库引擎 该进程分配的内存太大 需要将其中一部分换出 换出 我想做的是将所有其他进程 或正在运行的进程的子集 的内存页面锁定在内存中 以便只有数据库进程的页面被换出 例如
  • 为 Linux 编译 Objective-C 应用程序(API 覆盖范围)

    我可能在这里问一些奇怪的问题 但我不确定从哪里开始 问题是我正在考虑使用 Obj C 和 Foundation 类在 Mac 上编写一个命令行工具 但存在一个非常大的风险 那就是我希望能够为不同的 Linux 发行版编译它 以便将来作为服务
  • 来自守护程序的错误响应:加入会话密钥环:创建会话密钥:超出磁盘配额

    我尝试在我的服务器上安装 docker 使用本教程 https docs docker com install linux docker ce ubuntu 我想远程运行 docker 镜像并使用 portainer Web 界面来管理一切
  • Ubuntu Python shebang 线不工作

    无法让 shebang 线在 Ubuntu 中为 python 脚本工作 我每次只收到命令未找到错误 test py usr bin env python print Ran which python usr bin python 在 sh
  • 如何使用 vim 作为“git show”编辑器?

    全部如所述如何使用 vim 作为 git log 编辑器 https stackoverflow com questions 16666009 how do i use vim as git log editor不适用于 git show
  • ssh 连接超时

    我无法在 git 中 ssh 到 github bitbucket 或 gitlab 我通常会收到以下错误消息 如何避免它 输出 ssh T email protected cdn cgi l email protection i ssh
  • 如何使用 JSch 将多行命令输出存储到变量中

    所以 我有一段很好的代码 我很难理解 它允许我向我的服务器发送命令 并获得一行响应 该代码有效 但我想从服务器返回多行 主要类是 JSch jSch new JSch MyUserInfo ui new MyUserInfo String

随机推荐

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

    数组的简单操作 总用的一些操作 记录一下 要不总忘 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的基础操作 以下操作均在命令模式下进行 操作中需要输入冒号则进入末