FantasticMao 技术笔记
BlogGitHub
  • README
  • C & Unix
    • C
      • 《C 程序设计语言》笔记
      • C 语言中的陷阱
      • CMake 示例
      • GNU make
      • LLVM Clang
      • Nginx 常用模块
      • Vim 常用命令
    • Unix-like
      • 《深入理解计算机系统》笔记
      • 《UNIX 环境高级编程》笔记 - UNIX 基础知识
      • 《UNIX 环境高级编程》笔记 - 文件 IO
      • 《UNIX 环境高级编程》笔记 - 标准 IO 库
      • 《鳥哥的 Linux 私房菜》笔记 - 目录配置
      • 《鳥哥的 Linux 私房菜》笔记 - 认识与学习 bash
      • 《鳥哥的 Linux 私房菜》笔记 - 任务管理
      • OpenWrt 中的陷阱
      • iptables 工作机制
  • Go
    • 《A Tour of Go》笔记
    • Go vs C vsJava
    • Go 常用命令
    • Go 语言中的陷阱
  • Java
    • JDK
      • 《Java 并发编程实战》笔记 - 线程池的使用
      • 设计模式概览
      • 集合概览
      • HashMap 内部算法
      • ThreadLocal 工作机制
      • Java Agent
    • JVM
      • 《深入理解 Java 虚拟机》笔记 - Java 内存模型与线程
      • JVM 运行时数据区
      • 类加载机制
      • 垃圾回收算法
      • 引用类型
      • 垃圾收集算法
      • 垃圾收集器
    • Spring
      • Spring IoC 容器扩展点
      • Spring Transaction 声明式事务管理
      • Spring Web MVC DispatcherServlet 工作机制
      • Spring Security Servlet 实现原理
    • 其它
      • 《Netty - One Framework to rule them all》演讲笔记
      • Hystrix 设计与实现
  • JavaScript
    • 《写给大家看的设计书》笔记 - 设计原则
    • 《JavaScript 权威指南》笔记 - jQuery 类库
  • 数据库
    • ElasticSearch
      • ElasticSearch 概览
    • HBase
      • HBase 数据模型
    • Prometheus
      • Prometheus 概览
      • Prometheus 数据模型和指标类型
      • Prometheus 查询语法
      • Prometheus 存储原理
      • Prometheus vs InfluxDB
    • Redis
      • 《Redis 设计与实现》笔记 - 简单动态字符串
      • 《Redis 设计与实现》笔记 - 链表
      • 《Redis 设计与实现》笔记 - 字典
      • 《Redis 设计与实现》笔记 - 跳跃表
      • 《Redis 设计与实现》笔记 - 整数集合
      • 《Redis 设计与实现》笔记 - 压缩列表
      • 《Redis 设计与实现》笔记 - 对象
      • Redis 内存回收策略
      • Redis 实现分布式锁
      • Redis 持久化机制
      • Redis 数据分片方案
      • 使用缓存的常见问题
    • MySQL
      • 《高性能 MySQL》笔记 - Schema 与数据类型优化
      • 《高性能 MySQL》笔记 - 创建高性能的索引
      • 《MySQL Reference Manual》笔记 - InnoDB 和 ACID 模型
      • 《MySQL Reference Manual》笔记 - InnoDB 多版本
      • 《MySQL Reference Manual》笔记 - InnoDB 锁
      • 《MySQL Reference Manual》笔记 - InnoDB 事务模型
      • B-Tree 简述
      • 理解查询执行计划
  • 中间件
    • gRPC
      • gRPC 负载均衡
    • ZooKeeper
      • ZooKeeper 数据模型
    • 消息队列
      • 消息积压解决策略
      • RocketMQ 架构设计
      • RocketMQ 功能特性
      • RocketMQ 消息存储
  • 分布式系统
    • 《凤凰架构》笔记
    • 系统设计思路
    • 系统优化思路
    • 分布式事务协议:二阶段提交和三阶段提交
    • 分布式系统的技术栈
    • 分布式系统的弹性设计
    • 单点登录解决方案
    • 容错,高可用和灾备
  • 数据结构和算法
    • 一致性哈希
    • 布隆过滤器
    • 散列表
  • 网络协议
    • 诊断工具
    • TCP 协议
      • TCP 报文结构
      • TCP 连接管理
由 GitBook 提供支持
在本页
  • Normal 模式
  • 移动光标
  • 复制、粘贴、删除
  • 搜索
  • 普通命令
  • Visual 模式
  • 选中内容
  • Insert 模式
  • Command-line 模式
  • 参考资料
  1. C & Unix
  2. C

Vim 常用命令

在本文中,blank 字符指空格符、制表符、回车符、换行符等等,$ 表示美元符号,${} 表示占位符。

Normal 模式

移动光标

命令
描述

h、←

向左移动光标

j、↓

向下移动光标

k、↑

向上移动光标

l、→

向右移动光标

Ctrl + b、PgUp

向上翻页

Ctrl + f、PgDn

向下翻页

Ctrl + u

向上翻半页

Ctrl + d

向下翻半页

0、Home

移动光标至当前行的第一个位置

$、End

移动光标至当前行的最后一个位置

H

移动光标至当前页的第一列的第一个字符位置

M

移动光标至当前页的中间列的第一个字符位置

L

移动光标至当前页的最后一列的第一个字符位置

^

移动光标至当前行的第一个非 blank 字符位置

g_

移动光标至当前行的最后一个非 blank 字符位置

${n}G

相当于 :${n}

gg

相当于 1G 和 :${1}

G

移动光标至当前文件的最后一行

${n} + Space

向右移动光标至之后 n 个字符的位置

f${char}

向右移动光标至下个 char 字符的位置

F${char}

向左移动光标至上个 char 字符的位置

t${char}

向右移动光标至下个 char 字符的前一个位置

T${char}

向左移动光标至上个 char 字符的前一个位置

复制、粘贴、删除

命令
描述

yy

复制当前行

复制光标移动过程中的内容

复制光标选中的内容

p

执行 a / 向下,再粘贴剪贴板内容

P

执行 i / 向上,再粘贴剪贴板内容

x

向右删除一个字符,相当于插入模式中的 fn + Delete

X

向左删除一个字符,相当于插入模式中的 Delete

dd

删除当前行,并把删除的内容保存至剪贴板中,相当于「剪切」功能

删除光标移动过程中的内容

删除光标选中的内容

搜索

命令
描述

/ ${word}

向下搜索 word 关键字

? ${word}

向上搜索 word 关键字

n

重复前一个搜索动作

N

反向重复前一个搜索动作

普通命令

命令
描述

=

缩进当前行

缩进光标选中的内容

guu

转换当前行为小写

转换选中内容为小写

gUU

转换当前行为大写

转换选中内容为大写

u

undo,撤销上一次操作

Ctrl + r

redo,撤销 u 操作

.

重复执行上一次命令

${n}command

重复执行 n 次 command 命令

ZZ、:wq

相当于 :wq

Visual 模式

选中内容

命令
描述

v

选择字

V

选择行

Ctrl + v

选择块

Ctrl + z

挂起 Vim(相当于执行 bg 命令,使用 fg 命令返回 Vim)

Insert 模式

命令
描述

i

从光标所在的位置进入 INSERT 模式

I

从光标所在的第一个非 blank 字符位置进入 INSERT 模式

a

从光标所在的下一个位置进入 INSERT 模式

A

从光标所在的当前行的最后一个位置进入 INSERT 模式

o

从光标所在的下一行位置进入 INSERT 模式

O

从光标所在的上一行位置进入 INSERT 模式

r

替换光标所在的位置的第一个字符,并进入 INSERT 模式

R

从光标所在的位置进入 REPLACE 模式

Esc

退出 Insert 模式,回到 Normal 模式

Ctrl + n

开启自动补全

Ctrl + p

开启自动补全,并跳至最后一个选项

Command-line 模式

命令
描述

:${n}

移动光标至当前文件的第 n 行

:! + ${shell}

执行一条 shell 命令

:sh、:shell

挂起 Vim,执行多条 shell 命令(退出当前 shell 即返回 vim)

:pwd

打印当前目录

:cd ${dir}

改变当前目录

:e ${fileName}

打开新的文件

:r ${fileName}

读取文件内容至当前文件中

:r! ${shell}

读取 shell 命令的输出内容至当前文件中

:w

保存当前文件内容

:w ${fileName}

保存当前文件内容为新的文件,类似于「文件另存为」功能

:q

退出 Vim

:q!

强制退出 Vim

:wq、ZZ

保存并退出 Vim

:n

编辑下一个文件

:N

编辑上一个文件

:files

列出打开的所有文件

:sp、:split

创建水平分屏

:vsp、:vsplit

创建垂直分屏

:Ctrl + w + [h, j, k, l]

在分屏窗口中移动光标

:Ctrl + w + [H, J, K, L]

移动分屏窗口

参考资料

  • Vim :help —— VIM main help file

最后更新于1年前

y +

+ y

d +

+ d

+ =

+ gu

+ gU

—— Wikipedia

—— 鳥哥的 Linux 私房菜

—— 酷 壳 - CoolShell

—— 酷 壳 - CoolShell

—— 酷 壳 - CoolShell

Vim (text editor)
Vim 程式編輯器
Vim 的分屏功能
简明 Vim 练级攻略
无插件 Vim 编程技巧
移动光标
选中内容
移动光标
选中内容
选中内容
选中内容
选中内容