计算机工具基础(五)——Vim

Vim

本系列博客为MIT《Missing in CS Class(2020)》课程笔记

Vim是终端环境中常用的纯文本编辑器。

模式

Vim有如下5种模式:

  • 常规模式(Normal):进入Vim后的默认模式,用于阅读文件。以Esc自其他模式中退至此模式
  • 插入模式(Insert):用于插入文本,以i进入
  • 替换模式(Replace):用于替换文本,以r进入
  • 可视模式(Visual):用于选中文本,与在其他编辑器中按Shift+方向键选中文本等效。分为普通可视模式(以字符为单位,以v进入)、行可视模式(以行为单位,以V进入)、块可视模式(纵向选择,以Ctrl-v进入)。
  • 命令模式(Command):用于执行某些命令,以:进入

会话、缓存、标签、窗口

  • 会话(Session):保存了vim的完整工作状态,包括缓存、窗口、标签、选项等。
  • 缓存(Buffer):缓存是加载进内存中的文件,每个文件对应一个缓存。关闭窗口不会清除缓存。
  • 标签(Tab):标签负责组织窗口,每个标签包含独立的窗口布局。类似于桌面操作系统的一个桌面。Vim默认打开一个标签页,仅包含一个窗口。
  • 窗口(Window):标签页内的视图,显示缓存内容。一个标签可分割出多个窗口。

命令

以下命令适用于命令模式,不要与常规模式中的操作混淆。

  • q退出所在窗口(但不退出缓存)

    qa:退出所有窗口(但不退出缓存)
    q!:强制退出所在窗口(在缓存未写入文件的情形下)

  • w保存缓存内容至文件

  • wq保存 缓存内容并退出窗口

  • e <file_name>:在此窗口 覆盖的打开文件<file_name>

  • help <command>:查阅<command>的帮助手册。注意若为命令,需为:<command>

  • set <options>:用于设置选项

  • sp <file_name>:将<file_name>加载进缓存,在同一标签页内,在此窗口的下方 分离出新窗口,显示内容为<file_name>。若不指定<file_name>,则分离当前窗口所显示的缓存。

    vsp <file_name>:将<file_name>加载进缓存,在同一标签页内,在此窗口的右方 分离出新窗口,显示内容为<file_name>。若不指定<file_name>,则分离当前窗口所显示的缓存。

  • tabnew <file_name>:将<file_name>加载进缓存,新建一个tab,显示内容为<file_name>

  • tabn:切换到下一个(next)标签
    tabp:切换到上一个(previous)标签

快捷键

常规模式

  • G:跳到文尾 gg:跳到文首
  • H:左 J:下 K:上 L:右
  • w:word,跳至下个词首 b:begin,跳至上个词首 e:end,跳至下个词尾
  • 0:移动至行首 $:移动至行尾 ^:移动至本行首个非空字符
  • Ctrl-f:向上翻一页 Ctrl-b:向下翻一页
  • Ctrl-u:向上翻半页 Ctrl-d:向下翻半页
  • /<pattern>向后 匹配模式串<pattern> ?<pattern>向前 匹配字符串<pattern>
  • n:当前匹配方向的下个匹配 N:当前匹配方向的上个匹配
  • u:撤销 Ctrl-r:重做
  • y:复制(默认复制当前光标字符,可通过进入可视模式选中内容) p:粘贴

命令模式

  • Ctrl-w + 方向键:切换窗口

格式化代码

常规模式下:gg=G

相关推荐
七歌杜金房10 小时前
我终于又有了自己的 Linux 电脑
linux·debian·mac
tntxia1 天前
linux curl命令详解_curl详解
linux
扛枪的书生2 天前
Linux 网络管理器用法速查
linux
顺风尿一寸2 天前
Java Socket 内核之旅:从 SocketChannel.read() 到 tcp_recvmsg 与 epoll 的完整调用链路
linux
XIAOHEZIcode2 天前
Ubuntu 终端美化全栈指南:Bash 到 Kitty 踩坑实录
linux·ubuntu·命令行
唐青枫2 天前
别再只会用 cron:Linux systemd Timer 定时任务实战详解
linux
AlfredZhao4 天前
生产环境里,为什么不建议把普通端口直接暴露到公网?
linux·https·443·80
戴为沐5 天前
Linux内存扩容指南
linux
zylyehuo5 天前
Linux 彻底且安全地删除文件
linux
用户805533698036 天前
主线 U-Boot 上 RK3506:和闭源 rkbin 拔河的三个隐性契约
linux·嵌入式