美文网首页
vim 常用命令

vim 常用命令

作者: OurNote | 来源:发表于2019-02-03 18:04 被阅读0次

    引言

    一般情况下, vs code 是我的首选文本编辑器,主要是因为上手容易,界面友好,对各种编程语言支持比较好,配置也简单。可是在有些情况下,vim 是唯一的选择,例如 ssh 登录到远程计算机,没有图形界面,只能用命令行工具,这时 vs code 和 ubuntu 自带的 gedit 都不能用,只能用 vim;再例如不能用鼠标的时候,纯键盘操作下 vim 是比较高效的。

    vim 有很多命令和快捷键,当长期使用 vs code,在迫不得已的情况下转到 vim,总是要花一些时间重温那些按键对应的命令。本文收集了一些常用的 vim 命令,供自己、也供读者查阅。

    如果要系统的学习 vim,还是推荐 vimtutor 这个交互式的学习环境。如果已经安装了 vim,那么在命令行中输入 vimtutor 即可进入。
    另外,这本免费的电子书也不错 https://www.barbarianmeetscoding.com/boost-your-coding-fu-with-vscode-and-vim/dedication

    模式简介

    vim 主要有3 种模式:normal, insert 和 visual mode。

    • normal mode: 控制模式,这也是打开 vim 之后的默认模式。在这种模式下,键盘按键会有一些特殊功能,包括控制光标移动,复制粘贴,删除,搜索替换等;
    • insert mode: 就是普通的书写模式,在这种模式下,按键就对应了文本的输入;
    • visual mode: 在这种模式可以大块的选取文本,然后进行特定操作。

    insert mode

    在默认的控制模式中,按如下按键可以进入 insert 模式:

    • 按键i 在当前光标位置前进入 insert 模式,即随后输入的文字是在当前光标位置之前
    • I(大写的 i,即 shift + i ): 在当前行的开头进入 insert 模式
    • a 在当前光标位置后进入 insert 模式
    • A 在当前行的末尾进入 insert 模式
    • o 在下一行进入 insert
    • O 在上一行进入 insert

    insert mode 可说的不多,进入之后书写就好了。vim 的核心和难点在 normal mode,这里包含了文本编辑过程中的大部分控制操作。

    normal mode (控制模式)

    在 insert mode 中按 ESC 键即可进入控制模式。
    在控制模式中最常用的就是光标的移动

    • h
    • j
    • k
    • l

    还有基于 word 和 WORD 的移动,这里一个 word 就是普通意义上的 word,以标点符号和空格分割, 而 WORD 则是一个连续的字符串,包括文字和紧挨着的符号,以空格分割。

    • w 移动光标下一个 word 开头,遇到符号就认为新的 word
    • W 下一个 WORD 开头,遇到空格才认为是新 WORD
    • e 下一个 word 结尾,如果当前位置是在 word 中部,则就是当前 word 的结尾
    • E 下一个 WORD 结尾,遇到空格才认为是新 WORD
    • b 本 word 的开头,如果已经在开头,则到前一个 word 的开头

    number + 上述移动操作(number 为某一数字),就相当于按了 number 次那个键。也可以输入 number 次某个字符串,例如 3igo ESC,就输入了 3 次 go

    • 0 移动光标到本行头部第一个字符

    • $ 到本行末尾最后一个字符

    • gg 到整篇文档的开头

    • G 到整篇文档的结尾

    • number + G 到文章的第 number 行

    • ctrl + b 上翻页,back

    • ctrl + f 下翻页,forward

    • :w 保存

    • :q 退出

    • :q! 强制退出,不保存

    • f + <字符> 向后查找某个字符

    • F + <字符> 向前查找某个字符

    • number + 上边的命令 向前/向后查找第 number 个字符

    • / search forward

    • ? search backward
      上述两个查找命令可以通过 nN 不断地进行下一次查找和反方向查找

    • 在程序中,可以用 % 查找配对的括号

    • * 当前光标所在 word 下一次出现的位置

    • # 当前光标所在 word 上一次出现的位置

    • r 替换一个字符

    • R 替换当前位置开始的多个字符

    • c + 前边的光标移动命令 删除从当前位置到给定位置的字符,并进入 insert 模式

    • C 删除从当前位置到行尾的字符,并进入 insert 模式

    • x 等价于普通的 delete —— 删除当前位置字符

    • X 等价于普通的 backspace —— 删除前一字符

      相比于 x, 按键 d 的功能更丰富,可以指定删除的范围

    • d + 光标移动命令 删除从当前位置到给定位置的字符

    • dw 删除从当前位置到本 word 结束,光标放在下一个 word 开头

    • dedw 类似,删除之后放在本 word 的结尾
      上边这两个删除命令,比较容易记的方式是,we 原本要跳到哪里,删除之后光标就会落到哪里。例如:
      原本 w 是到下一个 word 开头,所以删除的时候,就一直删到下一个 word 开头,光标停在那里;
      原本 e 是到下一个结尾,由于整个 word 都删了,要往后挪一个,到了下一个 word 前边的一个位置。

    • D 删除从当前位置到行尾的字符
      dc 的区别似乎仅仅是删除之后是否进入 insert 模式

    • y + 光标移动命令 复制从当前位置到给定位置的字符

    • Y == yy 复制整行

    • p 粘贴到当前位置后边,如果是整行内容,则粘贴到下一行

    • P 粘贴到当前位置的前边,如果是整行内容,则张贴到上一行
      vim 有自己独立的剪贴板,而不是采用系统的剪贴板。因此在 vim 中复制的内容不能粘贴到 vim 之外的应用程序中,同样的,在 vim 之外复制的内容也不能粘贴到 vim 中。
      可以通过如下设置,让 vim 使用系统的剪贴板:

      1. 首先确认当前安装的 vim 是否带有 clipboard 扩展功能:在 vim 中输入 :echo has('clipboard'),如果返回 1 则说明可以用 clipboard,跳到第 3 步;如果返回 0,则需要安装 clipboard。
      2. 一般 ubuntu 自带的 vim 是最简安装,不带 clipboard,可以安装功能更全的 vim-gtk:sudo apt install vim-gtk。安装之后再次确认具有 clipboard 功能。
      3. 当要使用系统剪贴板时,在原本的复制/粘贴命令之前添加 "+ 即可。例如复制某一行到系统剪贴板 "+yy;从系统剪贴板中粘贴内容 "+p
    • :1,4s/word1/word2/g : 1,4 是指明搜索的行号,从第1行到第4行,/g 是指明每行如果有多个搜索结果,则都要替换掉

    • :%s/word1/word2/g: % 是指明全文搜索

    • ~ 改变当前位置字母的大小写

    • u undo

    • ctrl + r redo

    • . 重复之前的操作

    visual mode

    除了前边的 normal mode 和 insert mode,还有一个 visual mode,允许选取一定范围的文字,然后进行操作

    • v 进入 visual mode

    选取之后可以进行删除,复制等操作,命令与 normal mode 中相同。

    相关文章

      网友评论

          本文标题:vim 常用命令

          本文链接:https://www.haomeiwen.com/subject/qfaysqtx.html