README

2023-05-16

EasyVim

简单易用的vim配置,熟练后可大大提高开发效率(VS Code的两倍以上)。
EasyVim

安装

安装过程需要从github下载很多插件,国内尽量挂VPN

git clone https://github.com/yuesong-feng/EasyVim
cd EasyVim/
sh ./install.sh 
vim
:PlugInstall

tagbar显示和CTRL-]跳转需要安装ctags
C/C++查找相关功能需要安装gtags
强烈推荐将ctags、gtags结合使用,即使用–with-universal-ctags来编译安装gtags。
LSP相关功能需要安装每种语言的LSP服务器,如ccls、clangd等,还需要配置compile_commands.json路径。
开发C/C++时,ctags+gtags和LSP选一种使用即可,也可同时使用,默认都开启了,如果使用卡顿可以禁用LSP相关插件。

下列快捷键可能随时有变动,以github主页上为准。

模式

快捷键原指令描述
ESC或CTRL-[返回到命令模式
i在光标位置插入
a在光标后一个位置插入
I在行首插入
A在行尾插入
o在下方新建一行并插入
O在上方新建一行并插入
s删除光标字符并插入
S或cc删除光标所在行并插入
v进入可视模式
V进入可视行模式,此时会整行选中
CTRL-V进入可视块模式,此时会竖行选中,按I进入列插入模式
R进入替换模式
gi在上一次插入模式的位置插入

光标

快捷键原指令描述
[n]k或j或h或l上下左右移动,前面的n表示移动多少单位
[n]w右移到下一个单词的开头
[n]e右移到当前或下一个单词的词尾
[n]b左移到当前或上一个单词的词头
[n]ge左移到上一个单词的词尾
[n]W或E或B或gE同上面四行,但单词仅以空格分割,小写则以标点和空格分割
;h^移动到行首第一个非空白字符
;l$移动到行尾
0移动到行首
n向前(后)移动一个(n个)句子(标点符号分割)
[n]{或}向前(后)移动一个(n个)段落(空行分割)
+或<enter>移动到下一行的首个非空字符
-移动到上一行的首个非空字符
gg或G移动到文件首(或文件尾)
{n}gg或{n}G或:{n}移动到第n行
{n}%移动到文件的 n% 处
{n}|移动到当前行的第n列
gm移动到当前行的中间
M或H或L光标移动到屏幕中间一行/第一行/最后一行
zz或zt或zb将当前行居中/显示为顶行/显示为底行
[n]zh或[n]zl或z[n]h或z[n]l向左(右)滚动一行(n行)
zH或zL向左(右)滚动半屏
CTRL-E或CTRL-Y向下(上)滚动一行
;j或;kCTRL-D或CTRL-U向下(上)滚动半屏
CTRL-F或CTRL-B向下(上)滚动整屏

搜索

快捷键原指令描述
[n]f{char}移动到行内下一个char字符处,前面加n表示到下n个
[n]F{char}移动到行内上一个char字符处,前面加n表示到上n个
[n]t{char}移动到行内下一个char字符前,前面加n表示到下n个
[n]T{char}移动到行内上一个char字符后,前面加n表示到上n个
;或,移动到下(上)一个行内搜索的结果(f/F/t/T),由于;被设置为leader键,按下后要等一秒才会执行跳转
/或?正向(或反向)搜索,输入回车重复上一次搜索
n或N下一个(或上一个)搜索结果
*或#向后(前)搜索当前光标下的单词
gd搜索当前光标下的单词
;/:noh取消搜索结果高亮
CTRL-P模糊搜索当前目录下的文件

编辑

快捷键原指令描述
u或CTRL-R撤销(反撤销)
x或X删除当前(向前删除)字符
[n]r{char}替换(n个)字符为char
J删除当前行尾的换行符
d;lD或d$剪切当前行到行尾
[n]dd剪切n行,没有n表示剪切一行
[n]yy复制n行,没有n表示复制当前行
[n]cc改写n行,没有n表示复制当前行,同S
p在当前位置后粘贴
P在当前位置前粘贴
;c<space>注释/反注释当前行或选中内容
;w:w保存
;q:q退出
c{}或d{}或v{}或y{}更改、删除、选中、拷贝{ }作用域中的内容,作用域在下方表格中

c,d,v,y命令后的作用域

快捷键指令描述
[n]k或j或h或l上下左右,前面的n表示移动多少单位
[n]w到下一个单词的开头
[n]e到当前或下一个单词的词尾
[n]b到当前或上一个单词的词头
[n]ge到上一个单词的词尾
[n]W或E或B或gE同上面四行,但单词仅以空格分割,小写则以标点和空格分割
;h^到行首第一个非空白字符
;l$到行尾
0到行首
(或)向前(后)一个句子(标点符号分割)
{或}向前(后)一个段落(空行分割)
gg或G移动到文件首(或文件尾)
{n}gg或{n}G或:{n}移动到第n行
f{char}或t{char}光标位置到char 之处(之前)
iw整个单词(不包括分隔符)
aw整个单词(包括分隔符)
iW整个空格分割的单词(不包括分隔符)
aW整个空格分割的单词(包括分隔符)
is整个句子(不包括分隔符)
as整个句子(包括分隔符)
ip整个段落(不包括前后空白行)
ap整个段落(包括前后空白行)
ib或i)或i(小括号内
ab或a)或a(小括号内(包含小括号本身)
iB或i}或i{大括号内
aB或a}或a{大括号内(包含大括号本身)
i]或i[中括号内
a]或a[中括号内(包含中括号本身)
i’单引号内
a’单引号内(包含单引号本身)
i"双引号内
a"双引号内(包含双引号本身)
[n]i)往外n层小括号内
[n]a)往外n层小括号内(包含小括号本身)
[n]f)到第n个小括号处
[n]t)到第n个小括号前

窗口与跳转

快捷键指令描述
CTRL-O或CTRL-I返回光标上一个/下一个所在位置
;n:NERDTreeToggle打开目录
;m:TagbarToggle打开tag列表
;[1-9]转到第n个buffer
;bd:bd关闭当前buffer
;bn:bn下一个buffer
;bp:bp上一个buffer
gt跳转到下一个tab
gT跳转到上一个tab
;t:terminal打开新终端,在终端中使用CTRL-W使用vim窗口控制
CTRL {h或j或k或l}CTRL-W {h/j/k/l}在多个窗口跳转
CTRL-W {H/J/K/L}将当前窗口移动到某一方向
CTRL-W o仅保留当前窗口,关闭其他所有窗口
CTRL-W =将所有窗口的高度宽度设置为与当前窗口一样
CTRL-W [n]+或-增加或减少[n]单位的当前窗口高度
CTRL-W _将当前窗口的高度设置为尽可能最高
CTRL-W [n]<或>增加或减少[n]单位的当前窗口宽度
CTRL-W |将当前窗口的宽度设置为尽可能最宽

C/C++开发、gtags

快捷键原指令描述
CTRL-]跳转到定义,需要ctag生成tags文件
gf跳转到头文件,找不到则需要在.vimrc中设置path
;gsFind this symbol
;ggFind this definition
;gdFind functions called by this function
;gcFind functions calling this function
;gtFind this text string
;geFind this egrep pattern
;gfFind this file
;giFind files #including this file
;gaFind places where this symbol is assigned a value
;gzFind current word in ctags database

C/C++、LSP、代码提示补全等

快捷键原指令描述
;ag:ALEGoToDefinition跳转到定义
;af:ALEFindReferences查找引用
;as:ALESymbolSearch查找系统符号
;ah:ALEHover显示详细信息
;ar:ALERename重命名
;aa:ALECodeAction代码自动优化

rust

快捷键原指令描述
;rf:RustFmt代码格式化
;rr:RustRun运行rust代码
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

README 的相关文章

  • HTTP协议简介

    HTTP HyperText Transfer Protocol 超文本传输协议 xff1a 是一种用于分布式 协作式和超媒体信息系统的应用层协议 HTTP是万维网的数据通信的基础 设计HTTP最初的目的是为了提供一种发布和接收HTML页面
  • HTTPS协议简介

    HTTPS HyperText Transfer Protocol Secure 超文本传输安全协议 xff1a 是一种透过计算机网络进行安全通信的传输协议 HTTPS经由HTTP进行通信 xff0c 但利用SSL TLS来加密数据包 HT
  • base64开源库介绍及使用

    网上有一些开源的base64编解码库的实现 xff0c 下面介绍几个 xff1a cppcodec是一个仅包括头文件的C 43 43 11库 xff0c 用于编解码RFC 4648中指定的base64 base64url base32 ba
  • Ubuntu下使用CMake编译OpenSSL源码操作步骤(C语言)

    OpenSSL的版本为1 0 1g xff0c 在ubuntu下通过CMake仅编译c代码不包括汇编代码 xff0c 脚本内容如下 xff1a build sh内容 xff1a bin bash real path 61 realpath
  • ImageNet图像数据集介绍

    ImageNet图像数据集始于2009年 xff0c 当时李飞飞教授等在CVPR2009上发表了一篇名为 ImageNet A Large Scale Hierarchical Image Database 的论文 xff0c 之后就是基于

随机推荐

  • 网络文件系统(NFS)简介

    网络文件系统 Network File System NFS 是一种分布式文件系统协议 xff0c 最初由Sun Microsystems公司开发 xff0c 并于1984年发布 其功能旨在允许客户端主机可以像访问本地存储一样通过网络访问服
  • 实时流协议(RTSP)简介

    RTSP Real Time Streaming Protocol xff0c RFC2326 xff0c 实时流传输协议 xff0c 是TCP IP协议体系中的一个应用层协议 xff0c 由哥伦比亚大学 网景 Netscape 和Real
  • 远程过程调用RPC简介

    RPC Remote Procedure Call 远程过程调用 xff1a 是一种通过网络从远程计算机程序上请求服务 xff0c 而不需要了解底层网络技术的思想 RPC是一种技术思想而非一种规范或协议 xff0c 常见RPC技术和框架有
  • C语言中头文件包含的处理原则

    很多事不深入以为自己懂了 xff0c 但真正用到项目上 xff0c 才发现了问题 曾以为自己写C语言已经轻车熟路了 xff0c 特别是对软件文件的工程管理上 xff0c 因为心里对自己的代码编写风格还是有自信的 毕竟刚毕业时老大对我最初的训
  • Unity3D物体自动躲避障碍物

    Unity版本 2017 4 4f1 基本思路 物体向前发射一个射线 xff0c 检测到碰撞后 xff0c 根据碰撞信息选择新的方向 最终结果如下 具体实现步骤代码 1 物体添加胶囊体碰撞组件CapsuleCollider 通过发射虚拟胶囊
  • nginx的请求接收流程(二)

    在ngx http process request line函数中 xff0c 解析完请求行之后 xff0c 如果请求行的uri里面包含了域名部分 xff0c 则将其保持在请求结构的headers in成员的server字段 xff0c h
  • C++学习_udp协议(socket)的封装

    C 43 43 学习笔记 xff0c UDP socket 协议的封装实现 1 配置QT下的pro文件 1 TEMPLATE 61 app 2 CONFIG 43 61 console 3 CONFIG 61 app bundle 4 CO
  • 西门子PLC学习笔记一(S7-300简介)

    使用了Step7有几天了 xff0c 现在系统的学习一下 xff0c 现记录一下学习的内容 1 S7 300硬件结构 S7 300或者S7 400的PLC是模块式的PLC xff0c 各种模块式相互独立的 xff0c 分别安装在机架上 硬件
  • 外网访问树莓派服务器(自购域名+Sakura Frp内网穿透)

    首先在域名代理商 xff08 如腾讯云 xff09 购买一个喜欢的域名 注册Sakura Frp账号 xff0c 进入管理面板后 xff0c 创建隧道 xff0c 服务器选择可建站类型的 xff0c 隧道类型为HTTP xff0c 本地地址
  • Python删除全部已安装的pip包

    pip freeze span class token operator gt span allpackages txt pip uninstall r allpackages txt y
  • Vue父组件主动获取子组件的值和方法

    在父组件使用子组件的代码中 xff0c 为子组件加上ref 61 34 name 自己设置一个名称 34 然后在代码中 xff1a span class token keyword this span span class token pu
  • 动态规划详解

    动态规划的入门 xff0c 一般是从斐波拉契数列开始 该数列由0和1开始 xff0c 后面的每一项数字都是前面两项数字的和 xff0c 定义如下 xff1a F 0 61 0 F 1 61 1 F n 61 F n 1 43 F n 2 其
  • Concept Whitening(for Interpretable Image Recognition)

    和BatchNorm相比有很多优点 xff0c 并且可以直接替换BatchNorm 有更好的interpretability xff08 可解释性 xff09 xff0c 可以可视化得解释神经网络层的含义 xff08 这是最突出的特点 xf
  • homebrew安装、换源

    首先确认你的Mac已经安装了命令行工具 xff1a Command Line Tools CLT for Xcode 打开终端 xff0c 输入git version xff0c 命令 xff0c 如果没有安装 xff0c macOS会跳出
  • macOS查看磁盘读写数据总量、磁盘健康、磁盘启动次数等信息

    首先确保安装了homebrew xff0c 如果没有安装可以按照这篇文章的教程安装 xff1a homebrew安装 换源 然后安装磁盘工具smartmontools brew span class token function insta
  • 30天自制C++服务器

    30天自制C 43 43 服务器 如访问慢 xff0c 可以到这里观看 xff1a csblog 教程的配套网络库 xff1a pine xff0c star and fork 先说结论 xff1a 不管使用什么语言 xff0c 一切后台开
  • 【C语言】之实现 printf 函数功能

    span class token comment 文件名 myPrintf c 文件功能 使用putchar函数模拟printf函数的功能 编辑人 王廷云 编辑时间 2017 10 14 修改时间 2018 1 12 span span c
  • 30天自制C++服务器day05-epoll高级用法-Channel登场

    在上一天 xff0c 我们已经完整地开发了一个echo服务器 xff0c 并且引入面向对象编程的思想 xff0c 初步封装了Socket InetAddress和Epoll xff0c 大大精简了主程序 xff0c 隐藏了底层语言实现细节
  • EasyVim:简单强大的VIM配置

    EasyVim 简单易用的vim配置 xff0c 熟练后可大大提高开发效率 xff08 VS Code的两倍以上 xff09 安装 安装过程需要从github下载很多插件 xff0c 国内尽量挂VPN span class token fu
  • README

    EasyVim 简单易用的vim配置 xff0c 熟练后可大大提高开发效率 xff08 VS Code的两倍以上 xff09 安装 安装过程需要从github下载很多插件 xff0c 国内尽量挂VPN span class token fu