vim光速开发,你值得拥有

2023-11-03

vim设计哲学

在这里插入图片描述
vim被称为编辑器之神。它的成名就是因为文本操作非常的高效。

vim通过划分不同的模式,使按键在不同的模式下有不同的作用。这样的好处就是可以使用更少的键完成同样的操作。

操作符就是说告诉vim我们要干什么,而动作就是告诉vim怎么干。

在这两个因素的作用下就使我们的开发变得非常高效!

vim的模式

vim有如下四种模式:
在这里插入图片描述

这几种模式之间可以相互转换,例如在普通模式和插入模式之间有如下几种转换的方法
在这里插入图片描述

o代表的是open a new line
i代表的是insert
a代表的是append

在这里插入图片描述

注意这里的jj和CapsLock需要在配置文件中进行映射,否则不一定会生效
在这里插入图片描述

在普通模式和可视模式之间进行转化的途径如下:
在这里插入图片描述
在这里插入图片描述

普通模式和命令模式的转换途径如下:
在这里插入图片描述

什么是可视模式

这里我们多提一句什么是可视模式:

在 Vim 中,可视模式用于选择文本,这与在 GUI 文本编辑器中通过鼠标单击并拖动以选择文本操作来选择文本的 Vim 等效。

Vim 中的可视模式允许您选择文本,但可视模式的不同子集将很有用,具体取决于您要如何选择文本。

Vim 中有 3 个可视模式子集:

  • Visual [Character] 模式:用于选择单个字符
  • 视觉线模式:用于一次选择整条线
  • 可视块模式:用于选择块状矩形形状的文本

如果要切换到可视模式,则需要先进入普通模式:

  • 视觉模式:(v小写’v’)
  • 视觉线模式:(V大写“V”)
  • 视觉块模式:Ctrl + v

当你切换到可视模式时,Vim 会给你一些细节,它将显示您处于哪种模式以及您选择的文本数量。

进入可视模式后,选择从光标点开始,您可以使用导航键 h/j/k/l 移动它,w/e/b 键跳过单词。

当您对选择感到满意时,您可以执行删除、拉取和替换等操作。

光标移动

以字母为单位

在普通模式下光标向上下左右移动的按键如下:
在这里插入图片描述

这个不用记,自己多用几遍就熟了

以单词为单位

在这里插入图片描述

这里我们一般b、e用的多:

  • b代表begin
  • e代表end

行首、行尾的跳跃

在这里插入图片描述

字符间的跳跃
在这里插入图片描述
;,我们可以简单地理解为前一个、后一个

动作(motion)

首先我们来区分一下i(insert)和a(around)的区别,我们可以通过如下几个例子来理解:
在这里插入图片描述

然后我们来看一下一些基本的动作(motion):
在这里插入图片描述

操作符(operator)

操作符就是告诉vim我们要干什么,这里我们说说最常用的几个操作符;
在这里插入图片描述

操作符(operator)+动作(motion)实际使用

下面我们举几个例子:

在这里插入图片描述
如果我们要修改HelloWorld,我们可以使用:c iw

在这里插入图片描述

如果我们要修改泛型,可以使用c iw 或者 c i<
如果我们要删除泛型,可以使用d i<,d iw或者d a<

在这里插入图片描述
如果我们要删除返回值,可以使用d i{或者d iB

B是bracket的缩写

在这里插入图片描述
删除两行,使用2dd

在这里插入图片描述

  • 删除到s:d fs
  • 修改到s:c fs
  • 复制到s:y fs

在这里插入图片描述
也就是操作符配合我们的^$使用

如果要删除、修改、复制整个文件,就是操作符配合e使用:

  • d ie
  • c ie
  • y ie

如果要对html中的标签进行操作,我们可以动作t,例如现在我们想删除并编辑div内的所有内容:
在这里插入图片描述
我们可以把光标移到div中,然后按c it即可

在这里插入图片描述
我们将当前单词进行选中然后复制:v iw y

大小写转换

相关操作如下图:
在这里插入图片描述

easymotion

在这里插入图片描述
leader在这里我们设定为空格space键

vim-surround

在这里插入图片描述

TIPS

测试环境:vscode

在这里插入图片描述
我们要查看当前函数的定义:g d(go to definition)
调回来使用:ctrl -

在这里插入图片描述
有些方法上鼠标悬浮会有注释,如果你想看的话可以使用:g h

跳转标签页:
往前跳:g T
往后跳:g t

往后跳四个:4 g t

跳转到左边的项目栏:
command 1

如果是分页的跳转则使用:
command 2
或者在命令行使用:
tabntabp

ideavim的使用

ideavim是一个基于IntelliJ平台的vim插件

我们第一次使用的时候除了安装ideavim插件之外,可以把easymotion这个插件也下载了。

然后我们点击右下角的那个绿色的V字,再点击open打开我们的ideavimrc配置文件。

一开始打开是空的,我们可以自己进行配置,也可以使用如下的配置文件;

"==========================================
" Author:  hank.zhao
" Version: 0.1
" Email: hxzhenu@gmai.com
" Desc: my ideavim config file
"==========================================
" set leader key
nnoremap <SPACE> <Nop>
let mapleader = " "

" search
set hlsearch
set incsearch
set smartcase
set ignorecase
set showmode
set de=on
set scrolloff=5

" plugins
set ideamarks
set easymotion
set surround
set argtextobj
set multiple-cursors
" Remap multiple-cursors shortcuts for Mac
nmap <C-n> <Plug>NextWholeOccurrence
xmap <C-n> <Plug>NextWholeOccurrence
nmap <C-x> <Plug>SkipOccurrence
xmap <C-x> <Plug>SkipOccurrence
nmap <C-p> <Plug>RemoveOccurrence
xmap <C-p> <Plug>RemoveOccurrence
nmap <S-C-n> <Plug>AllWholeOccurrences
xmap <S-C-n> <Plug>AllWholeOccurrences

set exchange
set highlightedyank
set textobj-entire
set keep-english-in-normal-and-restore-in-insert
set NERDTree
set ReplaceWithRegister
" basic key mapping
nnoremap L $
vnoremap H ^
nnoremap H ^
vnoremap L $
nnoremap ; :
nnoremap ` ,

inoremap jk <esc>
" nerdtre
map <leader>e :action SelectInProjectView<CR>
nnoremap <leader>d :NERDTreeFocus<CR>


""" Idea specific settings ------------------
set ideajoin
set idearefactormode=keep

" clear the highlighted search result
nnoremap <Leader>sc :nohlsearch<CR>

" easymotion
map <leader>f <Plug>(easymotion-s)


" Window operation

nnoremap <leader>ww <C-W>w
nnoremap <leader>wd <C-W>c
nnoremap <leader>wj <C-W>j
nnoremap <leader>wk <C-W>k
nnoremap <leader>wh <C-W>h
nnoremap <leader>wl <C-W>l
nnoremap <leader>ws <C-W>s
nnoremap <leader>w- <C-W>s
noremap <leader>wv <C-W>v
nnoremap <leader>w\| <C-W>v

" copy and paste
noremap <Leader>y "*y
noremap <Leader>p "*p
noremap <Leader>P "0p
vnoremap Y "+y

" Tab operation
nnoremap tn gt
nnoremap tp gT

" Insert mode shortcut
inoremap <C-h> <Left>
inoremap <C-j> <Down>
inoremap <C-k> <Up>
inoremap <C-l> <Right>
inoremap <C-a> <Home>
inoremap <C-e> <End>
inoremap <C-d> <Delete>

" Quit normal mode
nnoremap <Space>q  :action CloseProject<CR>
nnoremap <Space>Q  :qa!<CR>

" edit vimrc
nnoremap <leader>ve :e ~/.ideavimrc<CR>
nnoremap <leader>vw :w!<CR>
nnoremap <leader>vs :source ~/.ideavimrc<CR>

" intellij built in key map

nnoremap <leader>a :action GotoAction<CR>
nnoremap <leader>b :action Bookmarks<CR>
nnoremap <leader>c :action GotoClass<CR>
"nnoremap <leader>e :action SearchEverywhere<CR>
"nnoremap <leader>f :action FindInPath<CR>
nnoremap <leader>gc :action Git.CompareWithBranch<CR>
nnoremap <leader>ga :action Annotate<CR>
nnoremap <leader>gh :action Vcs.ShowTabbedFileHistory<CR>
nnoremap <leader>nj :action NewClass<CR>
nnoremap <leader>nt :action Kotlin.NewFile<CR>
nnoremap <leader>r :action RecentFiles<CR>

" build and compile code
nnoremap <leader>mr :action Maven.Reimport<CR>

"toggle something
"toggle track vim action Id
nnoremap ta :action VimFindActionIdAction<CR>

" run and debug
nnoremap ,d :action Debug<CR>
nnoremap ,r :action Run<CR>
nnoremap ,c :action CompileDirty<CR>
nnoremap ,b :action ToggleLineBreakpoint<CR>
nnoremap ,v :action ViewBreakpoints<CR>
nnoremap ,s :action Stop<CR>
" navigation
nnoremap gs :action GotoSuperMethod<CR>
nnoremap gb :action JumpToLastChange<CR>
nnoremap gi :action GotoImplementation<CR>
nnoremap gd :action GotoDeclaration<CR>
nnoremap gf :action FileStructurePopup<CR>

" code actions
nnoremap U :action FindUsages<CR>
nnoremap R :action RenameElement<CR>
nnoremap == :action ReformatCode<CR>
vnoremap = :action ReformatCode<CR>
nnoremap -- :action OptimizeImports<CR>
nnoremap cc :action CommentByLineComment<CR>
vnoremap cc :action CommentByLineComment<CR>

接下来我们稍微解释一下这个配置文件;
在这里插入图片描述
这里配置的是搜索的一些内容,例如什么高亮搜索,模糊搜索,忽略大小写搜索等,我们可以来试一下:

我们搜索leader默认是忽略大小写的,但是我们如果使用的是驼峰那就可以严格匹配:

在这里插入图片描述
在这里插入图片描述
然后进行了插件的配置:
在这里插入图片描述
这个easy是让我们快速抵达想要到的地方,例如我们现在想快速到达下图位置:
在这里插入图片描述

两个空格+ f + 相关字符 然后按照提示选择即可

surround插件的作用就是让你快速在某一部分的周围做出操作,这里不做出具体介绍,可以自行在网上查看教程。

接下来是一些基础按键的映射;
在这里插入图片描述

  • nnoremap代表normal模式
  • vnoremap代表visual模式

在这里插入图片描述
这里配置的是取消高亮 空格+sc 也就是searchclear

在这里插入图片描述
然后是一些窗口操作;
在这里插入图片描述
这里是复制粘贴到剪切板的操作

在这里插入图片描述
切换导航栏的操作

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

vim光速开发,你值得拥有 的相关文章

随机推荐

  • WINXP优化详解

    WinXP的启动会有许多影响速度的功能 尽管ms说已经作最优化处理过 但对我们来说还是有许多可定制之处 我一般是这样来做的 1 修改注册表的run键 取消那几个不常用的东西 比如Windows Messenger 启用注册表管理器 开始 运
  • 问题解决:windows未能启动,原因可能是最近更改了硬件或软件

    开机出现如下画面 电脑原先是win7旗舰版 没用几天 不知道怎么出现了这样的问题 网上查了很多 也用了几种方法 有些方法不知道是不是不行 总之没有解决我这里的问题 最终我用下面的方法解决了这个问题 解决方法 以下是重装系统的过程 1 首先制
  • For与while时间的对比

    本文首发于cartoon的博客 转载请注明出处 https cartoonyu github io cartoon blog post java for E4 B8 8Ewhile E6 97 B6 E9 97 B4 E7 9A 84 E5
  • Mac OS X 文件夹本地化方法(汉化)

    为避免中文编码问题 建议以后无论是操作系统语言还是文件夹 文件语言还有软件语言 一律用英文来代替 经常看到 OS X 中的一些文件夹名称会随系统语言的更改而自动改变 有时候你想要某个英文的文件夹名称显示成对应的中文 但是又不想改文件夹名 可
  • C++中IO类的基本解析

    文件输入输出 缓冲区 上图展示了C 中文件IO设计类的基本关系 从中我们可以看出 标准输入与文件输入类继承于同一个基类 标准输出与文件输出类继承于同一个基类 下面针对C 中IO类的一些特性进行介绍 c 的输入与输出包括以下三个部分 对系统制
  • 华为华三40G带宽互通连接测试

    郁闷了几天了 今天竟然做了件爽事 慢慢说来 今天下雨 下午娃上学 我送老婆去学校上课 之后到实验室 今年申请买的两台交换机正好送到 S5500V2 54S EI 48个10 100 1000TX以太网端口 2个SFP千兆端口 2 1 10G
  • Python代码解蓝桥杯第十三届省赛(C/C++大学B组)赛题

    Python代码解蓝桥杯第十三届省赛 C C 大学B组 赛题 学习的细节是欢悦的历程 Python 官网 https www python org Free 大咖免费 圣经 教程 python 完全自学教程 不仅仅是基础那么简单 地址 ht
  • 第七届蓝桥杯 第十题 最大比例

    先去重排序 求相邻比例 辗转相除法 得到 q a1 q a2 q a3 再求以最小公比 q 为底时 幂 a1 a2 a3 的最大公约数 辗转相减法 即将前面的相邻比例相除 得到幂的相减 q a1 q a2 q a1 a2 include
  • vue中render的常见用法(渲染按钮禁用/隐藏等状态)

    简介 在vue开发前端页面的过程中 对于一些较复杂的嵌套样式 用template不太方便的 一般要用到render函数来进行渲染 render本身是一个函数 它的参数也是一个函数 render h gt return h div 数据对象或
  • ConnectionString属性详解(连接字串)

    NET SQL Server连接字符串句法 在对象实例化或者建立期间 数据库连接字符串通过属性或方法被传递到必要的对象 连接字符串的格式是一个以分号为界 划分键 值参数对的列表 列表A中包括了一个C 中的例子 说明了怎样用创建SqlConn
  • SCConv:用于特征冗余的空间和通道重构卷积

    文章目录 摘要 1 简介 2 方法 2 1 SRU用于空间冗余 2 2 CRU用于通道冗余 2 3 复杂性分析 3 实验 3 1 实验设置 3 3 基于CIFAR的图像分类 3 4 基于ImageNet的图像分类 3 5 物体检测 4 结论
  • Java继承

    各位朋友们 大家好 今天我为大家分享的是Java上面一个很重要的知识点 继承 继承也被称为Java的灵魂之一 文章目录 为什么要使用继承 子类怎样继承父类 在子类中如何访问父类的成员 super关键字 当父类中有构造方法时 this关键字
  • 【python】2019CA-C-最大降雨量

    问题描述 由于沙之国长年干旱 法师小明准备施展自己的一个神秘法术来求雨 这个法术需要用到他手中的49张法术符 上面分别写着1至49这49个数字 法术一共持续7周 每天小明都要使用一张法术符 法术符不能重复使用 每周 小明施展法术产生的能量为
  • JUnit4

    1 JUnit4全面引入Annotation来执行我们编写的测试 2 JUnit4并不要求测试类继承TestCase父类 3 在一个测试类中 所有被 Test注解所修饰的public void方法都是test case 可以被JUnit所执
  • 关于this指针

    一个类的对象中实际只包含了该对象的数据成员信息 当我们创建了多个类的对象时 使对象1调用该类的成员函数 为什么可以改变对象1中的信息 而不去设置其他对象的信息 成员函数在类中只有一份 所有该类的对象共同使用 编译器是如何识别并处理的呢 编译
  • 关于二叉树二叉堆的一些基本概念

    文章转载自 http blog csdn net include u article details 48092129 在看到算法导论的堆排序的时候 对于二叉树 二叉堆概念不是很清楚 所以查阅了一些资料和博客 将相关的基本概念总结在博客里面
  • 计算机网络教程网线制作,如何制作网线 进来看看你就会【图文教程】

    随着计算机的快速发展 现代 社会人们已经离不开网络 网络拉近了人们的距离 给人们提供了一个无需面对面就能够进行交流的平台 如今 网络已经渗透到生活的方方面面 购物 聊天 谈工作等 都会使用网络来进行 构建出如此庞大的网络并将大家连在一起的是
  • 如何赚钱比较快副业?这三个副业让你慢慢变有钱!

    一般来讲上班族 都会有充分的休息时间 如何利用好下班这点时间 去搞点副业赚点钱 我相信这是很多人都会有这种想法 现在有很多兼职行业 就是在自己空闲的时间 可以去做点兼职 赚一点生活费 当然这样也是挺好的 但是兼职的话 很多就需要自己出门去做
  • 使用逻辑回归预测患者是否患有特定疾病:R语言机器学习实战

    目录 引言 基础知识 准备工作 数据预处理 数据探索 模型训练
  • vim光速开发,你值得拥有

    文章目录 vim设计哲学 vim的模式 什么是可视模式 光标移动 动作 motion 操作符 operator 操作符 operator 动作 motion 实际使用 大小写转换 easymotion vim surround TIPS i