当前位置: 首页 > news >正文

[ 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+字符向后查找字符
~大小写转换

批量操作

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

 4j #向下移动4行 3ee #选择3个单词 7dw #删除7个单词

文件操作

保存与退出

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

实战演示

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

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()
$ 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
http://www.dtcms.com/a/302696.html

相关文章:

  • 4.DRF 认证--Authentication4.DRF 认证--Authentication
  • 从文件到文件描述符:理解程序与文件的交互本质
  • TapData 出席 TDBC 2025 可信数据库发展大会,分享“实时+信创”时代的数据基础设施演进路径
  • Kylin10 安装tomcat9
  • Centos 7 命令:ip addr
  • 黑马商城微服务-下
  • 【QT搭建opencv环境】
  • R 语言科研绘图 --- 其他绘图-汇总1
  • Language Models are Few-Shot Learners: 开箱即用的GPT-3(四)
  • Mac安装navicat17版本教程mac下载Navicat Premium for Mac v17.1.9【好用】
  • ubuntu资源共享samba 安装与配置 mac/windows共享ubuntu文件资源
  • 1.gradle安装(mac)
  • 【江科大CAN】2.1 STM32 CAN外设(上)
  • CVE-2021-21148
  • fmriprep安装与试用_附ubuntu分区大小调整
  • C语言:20250728学习(指针)
  • 零基础学 AI 提示词:从 “提问” 到 “高效交互” 的第一步
  • 股指期货周度想法
  • 【ELasticsearch】案例:AWS 上 Elasticsearch 对接 NLB / ALB
  • 浏览器安全演进:从裸指针到 raw_ptr 的实践与思考
  • 开发指南125-HTML DOM事件
  • 使用 Qt Installer Framework(IFW)进行打包
  • github copilot接入openai-compatible模型以及去除安全限制的方法
  • Unity开发2D类银河恶魔城游戏学习笔记目录
  • 【前端】Angular 与 Svelte:两大前端框架的深度剖析
  • 深度研究——OpenAI Researcher Agent(使用OpenAI Agents SDK)
  • 【Kotlin】如何实现静态方法?(单例类、伴生对象、@JvmStatic)
  • Qt的静态属性与动态属性详解
  • 扩展卡尔曼滤波器 (EKF) 与无人机三维姿态估计:从理论到实践
  • 无人机气动设计模块解析