Vim 常用操作

Wesley13
• 阅读 428

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的位置的行首
点赞
收藏
评论区
推荐文章
blmius blmius
2年前
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
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
2年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Stella981 Stella981
2年前
Dubbo爆出严重漏洞!可导致网站被控制、数据泄露!附解决方案
http://dy.163.com/v2/article/detail/F5FPIFRU0511Q1AF.html  !(http://dingyue.ws.126.net/2020/0216/125ec4c4p00q5rcrs0019d200ig009qg00ig009q.png)  来源:华为云  原文地址:https://w
Wesley13 Wesley13
2年前
VIM常用快捷命令(翻译)
自70年代起(哇,比我大很多哎),vi和vim就是程序员们最爱的文本编辑器。五年前我写了一篇文章《程序员应该知道的100条VIM命令》,现在升级版来了!基本命令:efilename打开filename用于编辑:w保存文件:q退出vim:q!退出并且不保存修改:x保存更改并退出:savfilenam
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
4个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这