[ The Missing Semester of Your CS Education ] 学习笔记 Vim篇

"Writing English words and writing code are very different activities. When programming, you spend more time switching files, reading, navigating, and editing code compared to writing a long stream."

------ < The Missing Semester of Your CS Education >

Vim 是一个模态编辑器 (modal editor),它的设计哲学是:编辑操作应当通过键盘组合完成,而非依赖鼠标或菜单。

"Vim avoids the use of the mouse, because it's too slow; Vim even avoids using the arrow keys because it requires too much movement."

------ < The Missing Semester of Your CS Education >

Vim认为使用鼠标浪费时间,会降低效率,因为手从鼠标移动到键盘需要一定时间,对程序员来说反复来回的切换是很annoying的。因此,所有的vim功能都可以通过键盘操作,或许一开始你并不习惯,但等你使用久了,便能发现它得到程序员青睐的原因!

课程相关视频与讲义:Editors (Vim)

核心特性

  • 普通模式:用于导航和操作文本(默认模式)
  • 插入模式:像常规编辑器一样输入文本(按 i 进入)
  • 可视模式:选择文本块(按 v 进入)
  • 命令行模式:执行保存/退出等命令(按 : 进入)

基础操作

使用 Vim 时会经常使用<ESC>键,而它不在主键盘区,显然不那么方便,于是很多程序员考虑将 Caps Lock 重新映射到 Escape或使用简单的键序列创建替代映射!

模式切换

操作 功能
vim 进入vim编辑器
vim 文件名 打开特定文件(不存在时会新建)
i(insert) 进入插入模式
Esc 返回普通模式
: 进入命令行模式

光标移动

操作 功能
h j k l 左/下/上/右移动
0 移动到行首
$ 移动到行尾
^ 移动到行首非空字符
G 移动到文件底部
gg 移动到文件顶部
H 移动到窗口顶部
L 移动到窗口底部
Ctrl+u 上翻半页
Ctrl+d 下翻半页
Ctrl+b 上翻整页
Ctrl+f 下翻整页

编辑功能

文本操作

操作 功能
o 下方新建行并插入
O 上方新建行并插入
u 撤销
Ctrl+r 重做
x 删除字符
dw 删除单词
dd 删除整行
cc 删除并进入插入模式

复制粘贴

操作 功能
y (yank) 复制
yy 复制当前行
yw 复制单词
p(paste) 粘贴

可视化模式

操作 功能 说明
v 字符可视化 按字符选择
V 行可视化 按行选择
Ctrl+v 块可视化 矩形选择

高级功能

搜索与替换

操作 功能
f+字符 向前查找字符
F+字符 向后查找字符
~ 大小写转换

批量操作

数字+指令可以进行批量化操作

bash 复制代码
 4j #向下移动4行 
 3ee #选择3个单词 
 7dw #删除7个单词

文件操作

保存与退出

操作 功能
:w(write) 保存文件
:q(quit) 退出
:qa(all) 退出所有窗口
:wq 保存并退出

实战演示

学习了上面那么多的指令不妨自己创建一个python文件,结合之前学习的shell命令,在实践中感受Vim的魅力吧!

python 复制代码
import sys #导入sys来接受shell中的参数

def fizz_buzz(limit):
    for i in range(1, limit + 1):
        if i % 3 != 0 and i % 5 != 0:
            print(i)
        elif i % 3 == 0 and i % 5 != 0:
            print('fizz')
        elif i % 5 == 0 and i % 3 != 0:
            print('buzz')
        else:
            print('fizzbuzz')

def main():
    fizz_buzz(int(sys.argv[1]))

if __name__=='__main__':
    main()
bash 复制代码
$ python3 fizzbuzz.py 30
1
2
fizz
4
buzz
fizz
7
8
fizz
buzz
11
fizz
13
14
fizzbuzz
16
17
fizz
19
buzz
fizz
22
23
fizz
buzz
26
fizz
28
29
fizzbuzz
相关推荐
编程小白20265 小时前
从 C++ 基础到效率翻倍:Qt 开发环境搭建与Windows 神级快捷键指南
开发语言·c++·windows·qt·学习
学历真的很重要5 小时前
【系统架构师】第二章 操作系统知识 - 第二部分:进程与线程(补充版)
学习·职场和发展·系统架构·系统架构师
深蓝海拓6 小时前
PySide6,QCoreApplication::aboutToQuit与QtQore.qAddPostRoutine:退出前后的清理工作
笔记·python·qt·学习·pyqt
酒鼎6 小时前
学习笔记(3)HTML5新特性(第2章)
笔记·学习·html5
L***一6 小时前
2026届大专跨境电商专业毕业生就业能力提升路径探析
学习
嵌入小生0076 小时前
标准IO---核心函数接口延续(嵌入式Linux)
c语言·vscode·vim·嵌入式·小白·标准io·函数接口
.小墨迹6 小时前
apollo学习之借道超车的速度规划
linux·c++·学习·算法·ubuntu
ZH15455891316 小时前
Flutter for OpenHarmony Python学习助手实战:模块与包管理的实现
python·学习·flutter
山岚的运维笔记6 小时前
SQL Server笔记 -- 第20章:TRY/CATCH
java·数据库·笔记·sql·microsoft·sqlserver
Gain_chance6 小时前
33-学习笔记尚硅谷数仓搭建-DWS层交易域用户粒度订单表分析及设计代码
数据库·数据仓库·hive·笔记·学习·datagrip