记录一些IdeaVim的使用命令。
如无特殊声明,均是在命令模式Command mode)下。

1、移动光标

移动光标可以使用方向箭头,但更“正宗”的做法是:

  • h:控制光标向左移动
  • j:控制光标向下移动
  • k:控制光标向上移动
  • l:控制光标向右移动
  • G:移动至文件的最后一行
  • gg:移动至文件的第一行
  • b:移动至当前单词的开始字符
  • e:移动至当前单词的结束字符

2、删除成对标点间的内容

di{char}:删除一对对称标点中间的所有内容。例如,di"表示删除""中的全部内容,di{表示删除{}中的全部内容,类似地,还可以有di<di(di<di'等。

ci{char}:如果希望删除之后进入编辑模式,则用ci{char}

注意:光标必须放在待删除的标点上或其内部的某个字符上。

3、进入插入模式的不同方式

  • i(insert):在光标所在位置之前,进入插入模式
  • I:在本行第一个字符之前,进入插入模式
  • a:在光标之后(append),进入插入模式
  • A:在本行最后一个字符之后,进入插入模式
  • o:在本行之后新增一行,并进入插入模式
  • O:在本行之前新增一行,并进入插入模式
  • s:删除当前字符,并进入插入模式
  • S:删除当前行的所有字符,并进入插入模式

4、行内查找字符

  • f{char}:从光标开始向右查找当前行内的某个字符char并将光标移动至第一个char
  • F{char}:从光标开始向左查找当前行内的某个字符char并将光标移动至第一个char
  • t{char}:从光标开始向右查找当前行内的某个字符char并将光标移动至第一个char的左边一个字符处
  • T{char}:从光标开始向左查找当前行内的某个字符char并将光标移动至第一个char的右边一个字符处
  • ;:重复上一个f/F/t/T命令
  • ,:重复上一个f/F/t/T命令的反命令(fF互为反命令,tT互为反命令)

5、复制粘贴

5.1基础操作

  • yy:复制当前行
  • p:从光标后粘贴复制的内容
  • P:从光标前粘贴复制的内容
  • {n}yy:复制从当前行开始直至向下n行内容
  • yw:复制光标所在处的单词
  • y$:从当前位置复制至行尾
  • y0:从当前位置复制至行头
  • v{方向键}:选择字符
  • V{方向键}:按行选择字符

5.2高阶操作

有时我会想复制一个很长的字符串并到别处粘贴,例如,从如下sql中复制表名:

insert into AVeryVeryVeryLongTableName (field1) values (123)

首先需要将目标字符串选中才行。

采用基础操作时,可以将光标移动至字符A处,然后按一下v,再控制方向键选中整个AVeryVeryVeryLongTableName——这样需要按许多次方向键,未免太低效了。

一种高效的做法是,利用vim中的word的概念。

简而言之,vim中的word指仅由字母数字下划线组成的连续字符串。因此,将光标移动至AVeryVeryVeryLongTableName的任一字符上,然后按vaw就可以选中整个字符串了。

aw的意思是“a word”,类似地还有iw(“inner word”),它们的区别就在于前者会包含word前面或后面的空格,而后者只包含word本身。

注意:

vim文档已经指出,“word”要么指仅由字母数字下划线组成的连续字符串,要么指代其他的非空字符(non-blank characters)组成的字符串,这取决于当前光标所指的字符是什么。

举个例子,对于字符串abc_23&^()[]78ed_而言:

  • 如果光标放在abc_23的任一位置上,那么viw将会选中abc_23;类似地,如果光标放在78ed_的任一位置上,那么viw则会选中78ed_
  • 如果光标放在&^()[]的任一位置上,那么viw将会选中&^()[]

这个例子说明,如果word指代由字母数字下划线组成的字符串,那么其他种类的字符都是word的边界符;如果word指代由非空字符(字母数字下划线除外)组成的字符串,那么空字符以及字母数字下划线都是word的边界符。

6、全文查找与替换

本部分内容全部来自:https://harttle.land/2016/08/08/vim-search-in-file.html

6.1 常用查找

输入/即可进入查找模式,输入想要查找的字符串,按下回车,即可跳转到(当前光标所在位置后的)第一个匹配的字符串处。再按n则查找下一个匹配;按N则查找上一个匹配。

如果想要从当前光标位置开始向上查询,则输入?,然后输入字符并按回车。

上述查找方式默认是大小写敏感的,如果想要进行大小写不敏感查询,则在查找的字符串末尾输入\c再按回车:

例如,/foo\c会匹配fooFooFOO等字符串。

6.2 快速查找当前单词

将光标移至想要查找的单词上,然后按*就可以快速查找下文中出现的单词。

这里说的「单词」,指的是5.2中说的第一种情况,即只由数字、字母及下划线组成的连续字符串。

这种方式只能匹配独立的单词,而不会匹配那些包含该单词的长字符串。例如,如果当前词为foo,则不会匹配foobar中的foo——要想实现这种效果,则按g*

6.3 查找替换

:s命令用于查找与替换,用法如下:

:{作用范围}s/{查找目标}/{替换后的内容}/{替换标志}

例如,:%s/foo/bar/g表示在全局范围(%)查找foo并替换成bar,要求所有的foo均要替换(g)。

6.3.1 作用范围

作用范围可以分为以下三类:

  • 当前行
  • 全文
  • 部分区域

不指定作用范围时即为当前行:

:s/foo/bar/g

%表示全文

:%s/foo/bar/g

可以通过行号来指定作用范围:

:5,12s/foo/bar/g

表示在5-12行进行查找替换。

:.,+5s/foo/bar/g

表示从当前行至后续的5行内进行查找替换。

6.3.2 替换标志

g表示作用范围内的所有出现均被替换。

如果不指定标志符,则默认替换第一次出现。

IdeaVim插件使用记录相关推荐

  1. IdeaVim插件使用技巧

    在  IDEA Intellij小技巧和插件  一文中简单介绍了一下IdeaVim插件.在这里详细总结一下这个插件在日常编程中的一些常用小技巧.供有兴趣使用这个插件,但对Vim还不十分熟悉的朋友参考. ...

  2. 关于IdeaVim插件 导致 复制按键不可用

    IdeaVIm Using the Ctrl+D shortcut for Vim emulation alt+ctrl+s  然后plugins 搜索这个插件 unistall即可 . IdeaVi ...

  3. pdf.js插件使用记录,在线打开pdf

    pdf.js插件使用记录,在线打开pdf 原文:pdf.js插件使用记录,在线打开pdf 天记录一个js库:pdf.js.主要是实现在线打开pdf功能.因为项目需求需要能在线查看pdf文档,所以就研究 ...

  4. slick轮播插件操作 记录

    slick轮播插件操作 记录 插件说明文档 官方文档 https://kenwheeler.github.io/slick/ 中文文档 https://www.cnblogs.com/chalkbox ...

  5. idea IdeaVim 插件搜索中文字符会乱码

    IdeaVim 插件搜索中文字符会乱码 Editor -> Font -> Fallback Font 修改为支持中文字体即可 在Terminal 插入后怎么退出来 ctrl-e / al ...

  6. vim常用配置及ideavim插件静音

    更多详细内容见文章:http://www.shanxing.top/?p=188http://www.shanxing.top/?p=188 "提示音静音 set noerrorbells ...

  7. Android黄油刀插件使用记录

    之前一直使用的findViewById,感觉写业务的时候逻辑比较清晰一点,时间久了其实非常烦,低版本的AS还要强转view的类型,后来想把find方法放到base类里面避免繁琐的强转,但是流程其实还是 ...

  8. vue3TS+Jsplumb+vuedraggable拖拽插件使用记录

    安装拖拽插件 vue3需下载-@next此版本,否则会出现错误 npm i -S vuedraggable@next npm install sortablejs --save //拖拽组件依赖sor ...

  9. bootstrap File Input 多文件上传插件使用记录(二)删除原文件

    在上一篇文章中,主要介绍了file input插件的初始化和多文件同步上传到服务器的相关配置等.这篇主要介绍file input插件的编辑等. 使用场景: 在后台管理框架中,一条数据中包含不固定的多张 ...

最新文章

  1. Oracle删除window服务
  2. Android日期对话框NumberPicker的用法教程
  3. cudnn下载_记录新电脑安装Ubuntu18.04,CUDA, cuDNN全过程
  4. springMVC分析-2
  5. 06-图1 列出连通集 (25 分)
  6. 一篇文章带你了解Cloud Native
  7. c语言dp算法,C++动态规划dp算法题
  8. python 学生管理系统 文件版
  9. linux ora -03113,ORA-03113解决方法
  10. 网络面试100道(路由交换)
  11. jmail的使用说明
  12. 用html代码写一个表白语言,HTML写代码表白 – 爱心
  13. java instrument_JAVA Instrument技术实战以及在QTrace中的应用
  14. 移动端H5页面在ios设备上软键盘顶起页面后隐藏,页面不回弹的解决方案
  15. js跟php增加删除信息,JavaScript动态增加节点和删除节点
  16. filters过滤器的简单使用
  17. 蜂窝网通信平台建模说明
  18. 简历中使用STAR法则
  19. 用CSS实现一个抽奖转盘(附详细代码+思路)
  20. 我们期望的NFC手机方案

热门文章

  1. python怎样设置全局变量_Python教程之全局变量用法
  2. Expert C Programming 阅读笔记(~CH1)
  3. Python循环语句(while)(for)经典简单练习题
  4. Java常用的修饰符关键字
  5. 【人工智能的数学基础】圆周率(Ratio of Circumference to Diameter)的计算
  6. 华为新一代关键业务云存储FusionStorage加速关键业务云化
  7. 联想k27装debian
  8. 【电子取证篇】电子数据鉴定基本原则
  9. C# 状态机 Stateless 3.0
  10. android 暗刷 流量,暗刷流量,刷点击,手机访问的一些小见解