计算机工具基础(五)——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

相关推荐
酉鬼女又兒6 小时前
零基础入门Linux指南:每天一个Linux命令_pwd
linux·运维·服务器
云飞云共享云桌面6 小时前
高性能图形工作站的资源如何共享给10个SolidWorks研发设计用
linux·运维·服务器·前端·网络·数据库·人工智能
zl_dfq6 小时前
Linux 之 【多线程】(pthread_xxx、轻量级进程、原生线程库、线程ID、__thread、线程栈、线程与信号、线程与程序替换)
linux
choke2336 小时前
Python 基础语法精讲:数据类型、运算符与输入输出
java·linux·服务器
AZ996ZA6 小时前
自学linux的第二十一天【DHCP 服务从入门到实战】
linux·运维·服务器·php
_OP_CHEN6 小时前
【Linux系统编程】(二十八)深入 ELF 文件原理:从目标文件到程序加载的完整揭秘
linux·操作系统·编译·c/c++·目标文件·elf文件
Fleshy数模6 小时前
MySQL 表创建全攻略:Navicat 图形化与 Xshell 命令行双模式实践
linux·mysql
神梦流7 小时前
GE 引擎的非标准数据流处理:稀疏张量与自定义算子在图优化中的语义保持
linux·运维·服务器
嵌入小生0078 小时前
标准IO---核心函数接口延续(嵌入式Linux)
c语言·vscode·vim·嵌入式·小白·标准io·函数接口
.小墨迹8 小时前
apollo学习之借道超车的速度规划
linux·c++·学习·算法·ubuntu