Vim 常用操作

1 退出

  • :qa 关闭所有文件
  • :qa! 关闭所有文件,放弃更改
  • :w 保存
  • :wq:x 保存和关闭文件
  • :q关闭文件
  • :q! 关闭文件,放弃更改
  • ZZ 保存退出
  • ZQ 退出,放弃更改

2 编辑

  • a 追加
  • A 行尾追加
  • i 插入
  • I 行首插入
  • o 插入行
  • O 上方插入行
  • s 删除插入当前字符
  • S 删除行同时插入
  • C 删除到行尾同时插入
  • r 替换单个字符
  • R 替换模式
  • u 撤销
  • Ctrl+R 重做

3 退出插入模式

  • Esc
  • Ctrl+[
  • Ctrl+C 退出插入模式同时终止当前命令

4 剪贴板

  • x 剪切字符
  • dd 剪切行
  • yy 复制行
  • p 粘贴,对于复制行在下方粘贴,对于字符后方粘贴
  • P 粘贴,对于复制行在上方粘贴,对于字符前方粘贴
  • "*p"*P 从系统剪贴板粘贴,*+是与系统剪贴板交互的寄存器,若"*p不行可以尝试"+p,需要确保vim支持剪贴板,可以使用vim --version | grep clipboard查看,出现+clipboard即为支持
  • ”*y+y 复制到系统剪贴板

5 导航

  • h/j/k/l 左/下/上/右
  • Ctrl+E/Y 滚动上/下一行
  • Ctrl+U/D 滚动上/下半页
  • Ctrl+F/B 滚动上/下一页
  • b/w 前/后一个单词首字母
  • ge/e 前/后一个单词尾字母
  • 0 绝对行首(忽略空白)
  • ^ 相对行首
  • $ 行尾
  • fcFc 向前/后跳转到字符c
  • gg 首行
  • G 末行
  • :nnGn
  • Ctlr+O/I 上一次位置/撤回
  • [(/[{ 前一个(/{
  • ])/]} 后一个)/}
  • [m 方法前一个开始/结束处
  • ]m 方法后一个开始/结束处
  • zz 滚动窗口让当前行居中
  • zt 滚动窗口让当前行置顶
  • H/M/L 移动到屏幕顶部/中部/底部
  • :tabedit file 打开一个新tab编辑文件file
  • :tabclose 关闭当前tab
  • :tabs 列出所有tab
  • :tabfirst/:tablast 跳转到第一个/最后一个tab
  • :tabn/:tabp 下一个/上一个tab

6 可视化模式

  • v 可视化模式
  • V 行可视化模式
  • Ctrl+V 块可视化模式

7 操作符+动作

形式如下:

操作符 动作

例子:

  • dw d是操作符代表删除,w是移动到下一个单词首 ,所以就是删除到下一个单词首
  • db 删除到上一个单词首
  • 2dd 删除两行
  • dip 删除一个文本对象(下面有说)

操作符列表:

  • d 删除
  • y 复制(也叫yank)
  • c 修改
  • > 右缩进
  • < 左缩进
  • g~ 变换大小写
  • gU 大写
  • gu 小写

8 文本对象

形式如下:

操作符 i/a 文本对象

其中操作符是上面提到的,i/a表示:

  • i inside,仅选择文本,比如文本对象是一个字符串,仅选择字符串内容,不包括包围的单/双引号
  • a around,选择包括文本,包围的字符与周围的空白,比如文本对象是一个[]块,会选择[]里面的内容,同时选中包围的[],如果[]周围有空白也会进行选中

文本对象:

  • p 段落
  • w 单词
  • s 句子
  • [/(/{/< 一个[]/()/{}/<>
  • '/"/反引号 单/双/反引号字符串
  • t 一个xml标签块

例子:

  • vip 选择段落
  • vipipip 选择更多段落
  • yit 复制一个xml标签块
  • ya" 复制一个"字符串以及包围的"
  • di[ 删除一个[]块的内容
  • ca{ 修改一个{}块以及周围空白

9 杂项

9.1 数字增减

  • Ctrl+A 数字加1
  • Ctrl+X 数字减1

默认识别十进制,使用:set nrformats=bin,octal,hex后,能识别2/8/16进制。

  • 二进制:0b0B开头
  • 八进制:0开头
  • 十六进制:0x0X开头

9.2 大小写

  • g~ 切换大小写
  • gU 大写
  • gu 小写
  • g~~ 整行切换大小写
  • gUU 整行大写
  • guu 整行小写

9.3 计算器

插入模式下,输入Ctrl+R,接着输入=,再输入式子即可计算。Enter获取计算结果,会将计算结果插入到当前光标所在位置。

9.4 标记

  • 反引号^ 插入模式的上一次位置
  • 反引号. 上一次修改位置
  • 反引号反引号 上一次跳转的位置
  • ma 标记当前位置为标记a
  • 反引号a 跳转到标记a的位置
  • 'a 跳转到标记a的位置的行首
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

FLV文件格式

1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.