vim

2023-10-31

three basic mode of vim

  1. command mode, also is default mode. all the alphanumeric keys are bound to commands. Typing dd will delete an entire line.
  2. insert mode: type i (for insert) to enter the insert mode and the keys will behave what u expect. Hit the Escape key to get out.
  3. last-line mode: type :when you`re at command mode and vim will switch to last-line mode. u can use :w to write a file or :q to exit the editor.

basics of moving in vim

20201213194746

prefacing a movement command with a number will execute that movement multiple times

editing vim style

xto delete the character that the cursor was on

20201213194804

several commands combine a text operation and movement key.

you may combine something together like verb+noun. and the answer of vim is often yes

searching and replacing

20201213194821

about how to clear last searching highlighting in vim

20201213194839

:nohreally helps a lot

copying and pasting

if you`ve run dd and delete an entire line, you can now hit p and paste it back into the document.

20201213194851

a usual paste operation might look like this: hit v or V to highlight some text, then hit y to yank(put) it into the buffer, then move the cursor where u want to it, and hit p in command mode. There you go.

saving and quiting

:w to write the file to the existing file.

if u want to write out to a different filename or u don`t have the file, use :w filename

use :q to quit vim and :q!to quit without being nagged

ZZalso can be used to saving and quiting.

vim会在原始文件的目录下生成.swp文件,称为交换文件,用于由于意外退出vim时恢复文件内容

使用set directory=$HOME/.vim/swap//来将交换文件存于统一目录中,防止污染系统

或者使用set noswapfile禁止交换文件

we用于逐个狭义单词的移动 e for end

W E用于广义单词的移动,即以空格分割的非空字符序列视为单词

b B用于移动到狭义或广义单词的开头

{ } 用于向后或向前移动段落,其中段落以空行分割

c用于删除一部分文字后立即进入插入模式,比如cw删除一个单词并进入插入模式 c for change?

缓冲区

使用:ls查看当前缓冲区列表

含义分别为缓冲区编号 \%表示该缓冲区位于当前窗口中 \\a表示该缓冲区处于活动状态,他已被加载并可见 \\文件名 \\当前光标位置

使用:e <filename>打开另一个文件

使用:b <num>来在缓冲区之间进行切换 其中空格可以省略

缓冲区还可以用文件名来标识,所以可以使用文件名的一部分来切换缓冲区,但是当出现多个匹配的时候会报错

也可以使用:bn(bnext)或者bp(bprevious)来循环遍历缓冲区

当不需要某个缓冲区的时候,可以将其删除:bd

使用umimpaired插件来 使用[b]b来遍历缓冲区

[f]f来循环遍历同一目录中的文件

:split <filename>来将窗口分割成两个,其中一个显示新的文件

:vsplit <filename>来按照水平方向分割窗口

可以使用简写:vs :sp

使用Ctrl + w 再输入一个方向键h j k l来进行光标在窗口间的移动

使用Ctrl + w, q来关闭当前窗口

使用Ctrl + w, o来关闭除当前窗口之外的所有窗口

使用Ctrl + w 再输入一个大写的方向键H J K L来移动当前的窗口

有关窗口的大小

使用Ctrl + w, =将打开窗口的宽高调为一致

resize +N/-N将当前窗口的高度增加/减少N行

vertical resize +N/-N 将当前窗口的宽度增加/减少N列

同时可以简写为res vert res

Ctrl + w, +/-用来调整高度

Ctrl + w, </>用来调整宽度

也可以直接设置为具体的行数/列数

resize N vertical resize N

标签页

tabnew <filename>表示新建一个标签页,如果没有文件名就是新建一个空的标签页

在标签页中可以通过:e来加载文件,也可以用:b在不同缓冲区间切换

在不同标签页间跳转,可以使用

  • 快捷键gt 或tabnext用于切换到下一个标签
  • 快捷键gT或tabprevious切换到上一个标签

标签页可以使用:tabclose来关闭,也可以使用:q

:tabmove N用于将当前标签页移动到第N个标签页之后

NERDTree

使用:Bookmark来收藏当前光标在NERDTree中选择的目录,在NERDTree中按B可以列出所有的书签

文本浏览

t (until) 后接一个字母 用于在当前行内搜索该字符,并将光标置于该字符前 T用于反向搜索

f (find) 后接一个字母 用于在当前行内搜索该字符,并将光标置于该字符上 F用于反向搜索

_用于将光标放到行首 0也可以

切换到插入模式

i表示在当前光标处进入插入模式

a表示在当前光标后面

A表示在当前行尾

I表示在行首

o表示在下面新增一行,进入插入模式

O表示在上面新增一行,进入插入模式

easymotion

\\表示前导符号 easymotion的指令都要先加上前导符号

\\w表示逐个单词的移动方式

\\f 表示向右查找字符 F表示向左

同样的还有t 和T

和之前相同,wbe都可以用于单词的跳动

w ge表示向后跳 一个开头 一个末尾

b e表示向前 一个开头 一个末尾

寄存器

y 和 p就是从寄存器中进行的复制粘贴,但是是无名寄存器 用"表示

寄存器的访问方式是",后接寄存器的标识符

a~z所标识的寄存器用于手动复制数据

数字编号的寄存器表示最后10次删除操作的历史记录

%表示当前文件名 :储存最后的命令等

使用reg <name>来访问寄存器的内容

+寄存器(针对linux)表示粘贴板选择器,即ctrl+c操作

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

vim 的相关文章

随机推荐

  • 阿里云ECS(CentOS 7.3)的搭建过程

    一 安装JDK和配置环境变量 1 创建jdk安装目录 创建过则跳转即可 mkdir p usr local src 2 使用wget命令下载jdk包 wget no check certificate no cookies header C
  • 数组中常用的方法

    一 push 方法和 pop 方法 push 方法用于向数组末尾添加一个或多个元素 并返回修改后的数组的新长度 const fruits 苹果 香蕉 const res fruits push 橘子 西瓜 console log fruit
  • Vue + Element UI+Scss + Vuex一键换肤 , 一键换字体大小 ,动态替换全局主题颜色

    一 前言 其实我这个写法每个UI库都通用 不局限于ElementUI 看明白思路就知道怎么写了 一键换肤 动态替换全局主题颜色功能已经实现很久了 在项目验收的时候出现了一个小问题 想改动一下 于是来记录一下 前段时间公司项目里需要实现一键换
  • get 和 post 的区别

    使用场景 GET请求一般用于向服务器请求数据 POST请求一般用于向服务器提交数据 请求参数的位置 GET请求通常将参数放在URL的 query 中 POST 请求通常会将数据放在请求体 body 中 GET请求通常将参数放在URL的 qu
  • unity 2D中,实现点击按钮可以游戏暂停的效果

    在Unity 2D中 可以通过以下步骤和代码来设置一个按钮 实现游戏暂停的效果 创建一个空对象 命名为 GameManager 用于管理游戏状态 在GameManager对象上添加一个脚本 命名为 PauseManager 在脚本中添加以下
  • 简述“自顶向下,逐步求精”——面向过程程序设计方法

    引入 所谓 自顶向下 逐步求精 的程序设计方法 网络上有着如下的说法 一者是百度百科所述 另一者则为维基百科的说法 自顶向下设计 一种逐步求精的设计程序的过程和方法 对要完成的任务进行分解 先对最高层次中的问题进行定义 设计 编程和测试 而
  • C# 联合Halcon开发的完整项目案例(三套完整源码)附下载连接

    C 联合Halcon开发的完整项目案例 三套完整源码 点我下载三套项目源码 1 C 联合Halcon开发的程序 一整套源码 相机点胶定位 图像采集 数据查询相机间通讯具体情况如下图所示 案例注释详细 方便二次开发 2 C Halcon Vi
  • 从零开发校园商铺平台(SSM到SpringBoot)一.开发准备,实体类设计与表创建

    依山傍水房树间 行也安然 住也安然 一条耕牛半顷田 收也凭天 荒也凭天 雨过天晴驾小船 鱼在一边 酒在一边 夜晚妻子话灯前 今也谈谈 古也谈谈 日上三竿犹在眠 不是神仙 胜似神仙 一 开发准备 创建maven项目 解决项目报错 新增pom
  • Chrome插件(扩展)开发全攻略

    目录 写在前面 仓库说明 前言 什么是Chrome插件 学习Chrome插件开发有什么意义 为什么是Chrome插件而不是Firefox插件 开发与调试 核心介绍 manifest json content scripts backgrou
  • qRegisterMetaType

    如果要在Qt信号槽中使用自定义类型 需要注意使用qRegisterMetaType对自定义类型进行注册 当然在不跨线程时使用自定义类型signal slot来传递 可能不会出现什么问题 一旦涉及跨线程就很容易出错 回想下信号槽的作用就是用来
  • 机器学习——朴素贝叶斯分类器及sklearn实现

    前言 参考 机器学习 简单介绍朴素贝叶斯分类器 机器学习专栏 机器学习专栏 文章目录 一 贝叶斯定理 二 贝叶斯分类法 三 sklearn实现贝叶斯分类 一 贝叶斯定理 贝叶斯定理 Bayes theorem 是概率论中的一个定理 描述在已
  • Metasploit search参数

    msfvenom 参数 q快速启动msf 不显示banner信息 x加载模块代码 p payload lt payload gt 指定需要使用的payload 攻击荷载 也可以使用自定义payload 几乎是支持全平台的 l list mo
  • ThinkPHP3.2.3关闭调试模式及做些修改

    1 首先在入口文件中关闭调试模式 开启调试模式 建议开发阶段开启True 部署阶段注释或者设为false define APP DEBUG false 2 修改 Conf config php 异常页面的模板文件 TMPL EXCEPTIO
  • Cookie与Session深入理解(一)——Cookie

    基本操作 HttpServletRequest request HttpServletResponse response 1 获取cookies Cookie cookieList request getCookies 2 根据cookie
  • 力扣312题:戳气球

    力扣312题 戳气球 题目描述 有 n 个气球 编号为0 到 n 1 每个气球上都标有一个数字 这些数字存在数组 nums 中 现在要求你戳破所有的气球 戳破第 i 个气球 你可以获得 nums i 1 nums i nums i 1 枚硬
  • 机器学习深度学习数据集大汇总

    寻找一个好用的数据集需要注意一下几点 数据集不混乱 否则要花费大量时间来清理数据 数据集不应包含太多行或列 否则会难以使用 数据越干净越好 清理大型数据集可能非常耗时 应该预设一个有趣的问题 而这个问题又可以用数据来回答 数据集发布平台 A
  • linux安装pycharm详细步骤

    一 用xftp远程根据把解压后的安装包文件上传到指定目录 opt module 然后 cd opt module pycharm community linux 2018 1 4 bin 执行以代码 chmod u x pycharm sh
  • C++小游戏---坦克大战(二)(加入传送门)--附完整代码

    目录 素材整理 穿越草地 坦克穿越草地 子弹穿越草地 传送门 判定形式 生成传送门 传送坦克 关卡模式 效果展示 总结 完整代码 上一篇坦克大战居然意外获得了一些关注 正好最近也完善了一些功能 同时也加入了一些自己想到的新元素 主要是关于穿
  • 基于Matlab实现图像去噪技术(附上完整源码+图像+程序运行说明)

    图像去噪是数字图像处理中一个重要的问题 它的目标是恢复由于噪声引起的图像质量下降 噪声可以由各种原因引起 如图像传感器的不完美性能 图像传输过程中的干扰等 在实际应用中 图像去噪技术被广泛应用于医学图像处理 计算机视觉 图像识别等领域 本文
  • vim

    three basic mode of vim command mode also is default mode all the alphanumeric keys are bound to commands Typing dd will