【笔记】ubuntu下vim的基本用法

由于租了一台Ubuntu系统的云服务器来搭梯子,不免要用到vi来修改文档内容,此处为了方便查找特意从网上摘录了操作方便查找。

简介

vim 自带基础教程:在任意一台装有vim的机器上,命令行中输入 vimtutor 然后就可以看到教程了。

当想要对一个文件进行改写or阅读时只有输入 vi 文件路径 或者 vim 文件路径 就可以了。

三种模式

vim有3个模式:命令模式(Command/Normal)、插入模式(Insert)、末行模式(Last line mode)

  • 命令模式:vi 后初始模式,可以移动光标、删除字符等。按 i/a/o 进入插入模式。按 : 进入末行模式。
  • 插入模式:在此模式下可以输入字符,按 ESC 将回到命令模式。

  • 末行模式:以在最底一行输入命令。

命令模式

简单地移动的命令

  • h/j/k/l → 移动光标,同等于 (←↓↑→)

  • 空格键 → 向右、Backspace → 向左

  • Enter → 移动到下一行首、- → 移动到上一行首。

  • w → 到下一个单词的开头。

  • e → 到下一个单词的结尾。

    如果你认为单词是由默认方式,那么就用小写的e和w。默认上来说,一个单词由字母,数字和下划线组成;如果你认为单词是由blank字符分隔符,那么你需要使用大写的E和W。

  • 0 → 数字零,到行头

  • ^ → 到本行第一个不是blank字符的位置(所谓blank字符就是空格,tab,换行,回车等)
  • $ → 到本行行尾
  • g_ → 到本行最后一个不是blank字符的位置。
  • gg → 到第一行
  • n+ → 向下跳n行
  • n- → 向上跳n行
  • 3G → 到第 3 行
  • G → 到最后一行

删除与拷贝的命令

  • x → 删当前光标所在的一个字符
  • dd → 删除当前行,并把删除的行存到剪贴板里
  • yy → 拷贝当前行 相当行于 ddP
  • p → 粘贴剪贴板到当前位置之后
  • P → 粘贴剪贴板到当前位置之前
  • J → 合并光标所在行及下一行为一行

搜索的命令

  • fF 加上字符 → 移动光标到下(上)一个字符
  • tT 加上字符 → 移动到选定字符前的第一个字符

  • / 或者 ?加字符串 → 向下(上)搜索字符串,如果搜索出多个匹配,可按n键到下一个

  • % → 匹配光标当前所在的括号向对应反括号移动,包括 (, {, [
  • *# → 匹配光标当前所在的单词,移动光标到下一个(或上一个)匹配单词(*是下一个,#是上一个)
  • n → 向下搜索前一个搜素动作
  • N → 向上搜索前一个搜索动作

重复的命令

  • u → undo
  • ctrl r → redo
  • . → 重复上个操作

会进入插入模式的命令

  • i → 在当前光标位置的左边添加文本
  • I → 在当前行的开始处添加文本(非空字符的行首)
  • a → 在当前光标位置的右边添加文本
  • A → 在当前行的末尾位置添加文本
  • o → 在当前行的下面新建一行
  • O → 在当前行的上面新建一行
  • cw → 替换从光标所在位置后到一个单词结尾的字符

进入了奇怪的模式

  • R → 替换(覆盖)当前光标位置及后面的若干文本(进入替换模式)

末行模式

文件的打开与推出与保存

  • :w → 存盘
  • :q → 退出
  • :xZZ:wq → 保存并退出
  • :q! → 退出不保存 :qa! 强行退出所有的正在编辑的文件,就算别的文件有更改。
  • :e 文件路径 → 打开一个文件
  • :w 文件路径 → 保存至文件路径
  • :saveas 文件路径 → 另存至文件路径
  • :bn:n:bp:p → 你可以同时打开很多文件,使用这两个命令来切换下一个或上一个文件。

替换的命令

  • :s/old/new → 用new替换行中首次出现的old
  • :s/old/new/g → 用new替换行中所有的old
  • :n,m s/old/new/g → 用new替换从n到m行里所有的old
  • :%s/old/new/g → 用new替换当前文件里所有的old

其他功能

  • :set nu → 显示行号
  • :set nonu → 取消显示行号

更多玩法

命令前加上数字,可以令你的操作更加便捷

  • 100idesu [ESC] → 输入100次 idesu
  • 3fa → 在当前行查找第三个出现的a
  • nyy → 将当前行向下n行复制到缓冲区

或者利用命令的结合,很多命令都可以如下来干:

1
<start position><command><end position>

例如

  • yw → 复制从光标开始到词尾的字符
  • nyw → 复制从光标开始的n个单词
  • y^ → 复制从光标到行首的内容
  • y$ → 复制从光标到行尾的内容

  • 0y$ → 从行头开始拷贝到本行最后一个字符

  • dt" → 删除所有的内容,直到遇到双引号

References

Vim简明教程【CoolShell】

ubuntu下vi/vim 的基本用法


【笔记】ubuntu下vim的基本用法
http://achlier.github.io/2022/09/17/ubuntu下vim的基本用法/
Author
Hailey
Posted on
September 17, 2022
Licensed under