Vim常用快捷键

断断续续接触Vim也有几年了,从刚开始的用的很不习惯,到现在用不惯其它编辑器,真心觉得Vim你用的时间越久越能感觉到它的好,快捷,方便,简洁,功能强大 Vim由于功能太多,太强,已经脱离单纯的文本编辑器的范畴了,比如可以把Vim打造成一个IDE环境,但是对于大多数的人,Vim恐怕还仅仅是个普通的文本编辑器,甚至连趁手都说不上,所以这篇博客就说下最常用的Vim的快捷键,不常用的就不说了

打开与关闭

  1. vim /path/to/file
  2. vim +12 /path/to/file(打开文件后处于第12行上)
  3. vim $ /path/to/file(打开文件后处于最后一行上)
  4. q(直接退出不保存)
  5. wq(保存并退出)
  6. q!(强制退出,不保存)
  7. shift+z+z(保存退出)
  8. shift+z+q(不保存退出)

移动光标

字符移动

1.h: 左 2. j: 下 3. k: 上 4. l: 右 5. 3h: 左移3个 6. 4k: 下移4行(其它类推)

行内移动

  1. 0: 绝对行首
  2. ^: 行首的第一个非空字符处
  3. $: 绝对行尾
  4. w: 下个单词词首
  5. e: 下个单词词尾
  6. b: 上个单词词首
  7. 3w: 下3个单词词首
  8. 5b: 上5个单词词首(其它类推)

行间移动

  1. H: 文件头
  2. M: 文件中间
  3. L: 文件末尾
  4. 10G: 第10行
  5. 4+: 下4行=4j
  6. 5-: 上5行=5k
  7. {: 上一段
  8. }: 下一段

翻屏

  1. ctrl+d(向下翻半屏)
  2. ctrl+u(向上翻半屏)
  3. ctrl+f(向下翻一屏)
  4. ctrl+b(向上翻一屏)

删除

单字符删除

  1. x: 向后删除一个字符
  2. X: 向前删除一个字符

多个字符删除

  1. d0: 删除从当前字符到行首的所有
  2. d$: 删除从当前字符到行尾的所有
  3. d^: 删除从当前字符到行首第一个非空字符的所有
  4. 3dh: 删除从当前字符向左的3个字符
  5. 5dk: 删除当前行以上的5行(其余类推)
  6. dd: 删除当前行
  7. dw: 删除从当前向后的一个单词的词首
  8. de: 删除从当前向后的一个单词词尾
  9. db: 删除从当前向前的一个单词词首

复制

  1. y0: 复制从当前字符到行首的所有
  2. y$: 复制从当前字符到行尾的所有
  3. y^: 复制从当前字符到行首第一个非空字符的所有
  4. ydh: 复制从当前字符向左的3个字符
  5. ydk: 复制当前行以上的5行(其余类推)
  6. yy: 复制当前行
  7. yw: 复制从当前向后的一个单词的词首
  8. ye: 复制从当前向后的一个单词词尾
  9. yb: 复制从当前向前的一个单词词首

替换

  1. r: 替换当前的单个字符
  2. R: 从当前开始一直替换,直到ESC按下

粘贴

  1. p: 粘贴最近一次复制/删除的内容(非整行粘贴至光标所在字符之后, 整行粘贴至光标所在字符下一行)
  2. P: 粘贴最近一次复制/删除的内容(非整行粘贴至光标所在字符之前, 整行粘贴至光标所在字符上一行)

撤销

  1. u: 撤销所做的更改(比如删除等)
  2. ctrl+r: 撤销上一次撤销的(比如你撤销错了)

重复

  1. .: 重复上一次编辑(比如重复删除,粘贴之类的)

模式

模式切换

  1. 编辑模式 —-> 命令模式 (ESC)
  2. 命令模式 —-> 末行模式 (:)
  3. 末行模式 —-> 命令模式(ESC)

末行模式

  1. 10,20d:删除10-20行
  2. ., +5y: 复制当前行和向下5行的内容
  3. .,$-1d: 删除当前行和直到倒数第二行的内容

查找

  1. /patten: 按照匹配的模式,从当前行向后查找
  2. ?pattern: 按照匹配的模式,从当前行向前查找
  3. 查找到之后,n: 下个匹配内容,N: 上个匹配内容

替换

sed一样 1. 10, $-1s/he/HE/g(从当前行到倒数第二行,把所有的he替换为HE)

我常用的基本就这些,其它的大家自己去网上照资料吧,个人感觉应该够用!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Linux运维学习之路

day5、文件乱码怎么解决

1.1 Linux下,如何将一个乱码的文件进行重命名 方法一: 命令格式:mv $(ls   |egrep "[^a-zA-Z0-9.-]") tandao.t...

1709
来自专栏蓝天

C/C++常见gcc编译链接错误解决方法

用“-Wl,-Bstatic”指定链接静态库,使用“-Wl,-Bdynamic”指定链接共享库,使用示例: -Wl,-Bstatic -lmysq...

913
来自专栏杨建荣的学习笔记

Python基础之os和数据结构

今天总结了下Python的基础,发现还是有很多基础需要巩固,直接把学习的内容放上来。 >>> import os 得到当前的所在的路径 >>> os.getcw...

3396
来自专栏北京马哥教育

20 分钟 Shell 入门深度教程

作者:aron1992 来源:https://my.oschina.net/FEEDFACF/blog/1789695 0. 背景 之前写了系列的shell实...

4576
来自专栏程序员八阿哥

Python从入门到摔门(4):Python中 sys.argv[]的用法简明解释

sys.argv[]说白了就是一个从程序外部获取参数的桥梁,这个“外部”很关键,所以那些试图从代码来说明它作用的解释一直没看明白。因为我们从外部取得的参数可以是...

552
来自专栏IT技术精选文摘

Shell入门指南

1143
来自专栏linux运维学习

linux学习第二十五篇:cut,sort,wc,uniq,tee,tr,split命令,shell特殊符号

* 任意个任意字符 ? 任意一个字符 # 注释字符 \ 脱义字符 | 管道符 find /etc/ -type f -name “*conf” -exec ca...

1877
来自专栏LanceToBigData

linux(四)之元字符

一直觉得linux是一个非常高深的东西,但是慢慢学过来其实就是一堆一堆的命令执行,让一个程序运行的结果。 只有你有毅力去学习,并且系统的去学习我相信没有什么恶...

1917
来自专栏IT派

怎么给 Python 写 C 扩展?

其中,静态函数 calc_add 以python的C接口方式封装了add函数,命名方式 模块名_函数名

1125
来自专栏练小习的专栏

条件注释

下面是条件注释的语法 gt /Greater than/大于/<!--[if gt IE 5.5]> gte /Greater than or equal t...

17010

扫码关注云+社区