最新要闻
- 当前快看:烟台翁婿二人先后跳进湖中勇救落水母子
- 焦点快报!俞敏洪:每天工作16小时不觉得累 有种内在动力
- 大妈称月薪5000生娃比赚5个亿优秀:网友激烈对吵
- 当前消息!锐龙5 5600X3D来了!Zen3 6核心配99MB缓存 价格超诱人
- 迈阿密国际老板:梅西年薪5-6千万美元 退役将获球队股份&转播权
- 超薄、超强的ITX迷你主板:轻松四屏4K 就是太贵!|世界观速讯
- 当前观点:成都一草坪惊现上百条“蚊卷风”:都是为了交配
- 环球看点!王宝强导演电影票房破10亿:主演票房达173.5亿
- V社回应拒绝上架AI制作游戏:为确保开发者有素材所有权-世界速看
- 全球快讯:多点DMALL,困于三重门
- 被迪王支配的恐惧!比亚迪6月销量破25万辆:创自主品牌历史新高
- YouTube“挥刀”砍向广告拦截器:使用后仅能播放三个视频
- 这就是Windows和macOS差距!科技大佬称MacBook十年从未用过鼠标|世界时快讯
- AI涨不动了!ChatGPT访问量骤降:增速下滑至2.8% 焦点短讯
- 天天热讯:巨轮智能:公司近期经营情况正常 内外部经营环境未发生重大变化
- 美国《国家地理》回应传闻:不会停刊、不影响内容质量
手机
光庭信息跌4.57% 2021上市超募11亿2022扣非降74% 时快讯
搜狐汽车全球快讯 | 大众汽车最新专利曝光:仪表支持拆卸 可用手机、平板替代-环球关注
- 光庭信息跌4.57% 2021上市超募11亿2022扣非降74% 时快讯
- 搜狐汽车全球快讯 | 大众汽车最新专利曝光:仪表支持拆卸 可用手机、平板替代-环球关注
- 视点!美国首位女总统即将诞生?拜登恐怕要提前下岗,美政坛迎来变局?
- 当前速递!用理想仪器实现更好的颗粒 德国新帕泰克亮相CPHI & PMEC China获好评
- 微粒贷怎么申请开通 开通方法如下
- 焦点简讯:心疼!这位40岁的云南缉毒警,已是满头白发
家电
主题 3 编辑器(Vim)
主题 3 编辑器(Vim)
编辑器 (Vim) · the missing semester of your cs education (missing-semester-cn.github.io)
(资料图片仅供参考)
代码编辑器和和其他的编辑器(比如用来写文章的编辑器)有一些不同。
因为写程序和写文章不同。当你写程序时,会花大量时间来阅读你写的东西,或者来移动光标,做一些小小的修改;而不是像写文章的时候,从上到下一气呵成。因此,对于不同的用途,我们会使用不同的编辑器。
1.编辑器选择
Stack Overflow 的调查显示,VS Code 是目前最流行的代码编辑器。而 Vim 则是最流行的基于命令行的编辑器。就算最终你没有打算长期使用Vim,我们仍然认为学习Vim背后的思想很有价值。
另外,许多工具也觉得 vim 哲学很棒,从而提供了 Vim 模式。例如当前最热门的 VS Code,支持 Vim 键位绑定,该插件已经被下载了数百万次。
2.Vim的思想
Vim 是一个基于模式(Modal)的编辑器,这意味着 Vim 有多个模式。
Modal 这个词源于 Mode
多模式的思想源于,当你在写程序的时候会经常做不同的事情,在编程的时候,你会把大量时间花在阅读/编辑而不是在写代码上。
所以 Vim 是一个多模态编辑器:它对于插入文字和操纵文字有不同的模式。
Vim 是可编程的(可以使用 Vimscript 或者像 Python 一样的其他程序语言)。
Vim 的接口本身也是一个程序语言:键入操作(以及其助记名) 是命令,这些命令也是可组合的。Vim 避免了使用鼠标,因为那样太慢了;Vim 甚至避免用上下左右键因为那样需要太多的手指移动。
这样的设计思想使得 Vim 成为了一个能跟上你思维速度的编辑器。
3.编辑模式
正常模式:Normal,在文件中四处移动光标进行修改
插入模式:Insert,插入文本
替换模式:replace,替换文本
可视化模式(一般,行,块):Visual,Visual Line,Visual Block,选中文本块
命令行模式:Command Line,用于执行命令
- Normal 正常模式 & Insert 插入模式
当你开始使用 Vim 时,它会在 Normal 模式下启动。
在这个模式下,各种键位组合拥有在这个模式下的特定意义。其中就有一些按键组合来切换到其他的模式。而切换后这些键位组合和意义也相应改变。
但你的大部分时间都会在 Insert 和 Normal 模式下,在Normal模式下按下i
键就可以进入Insert模式。而在Insert模式下按下Esc
就可以回到Normal模式。
这里注意一下我们表示按键的方式,这个表示方式将会用于笔记以及Vim给你的提示中:
当仅仅是代表
i
键这样一个按键本身时,那么就会直接写i
。但是对于如Ctrl+v这种按键组合,就有可能以这么几种形式来体现:第一种是一个脱字符号后跟着控制用字符:
^v
(这里控制用字符指v,也就是组合键中的另一个键),另一种写法可能是你最熟悉的:Ctrl-v
,而有的地方我们可能会写成:
Vim 有好几种模式,而 Normal 模式是用来移动光标、阅读东西,以及在文件间切换的。
而 Insert 模式是用来输入的,因此在 Insert 模式下,你的按键大多会直接进入 buffer(缓冲区),而在 Normal模式下则不然,它们不会进入 buffer,而是用来进行了一些浏览和编辑操作。
- replace 替换模式
不像插入模式那样会把字符往后移,替换模式会直接覆盖掉文本。
- 可视化模式(一般,行,块)
可视化模式有 Visual 模式,Visual Line 模式,以及一个 Visual Block 模式。
- 各种模式的切换
你可以按下
(退出键)从任何其他模式返回正常模式。在正常模式,键入 i
进入插入 模式,R
进入替换模式,v
进入可视(一般)模式,shift+V
进入可视(行)模式,
(Ctrl-V, 有时也写作 ^V
)进入可视(块)模式,:
进入命令模式。
- 映射Esc键
从非 Normal 模式切换到 Normal 模式下都是按 Esc
键,因此使用 Vim 时要频繁按 Esc
键。但这个键在键盘的角落里,按起来很不方便,所以很多人会将键盘上某个键映射成 Esc。通常这个键是 Caps Lock
,因为它在键盘的中间一行上。
4.基本操作
- 如何打开Vim程序
Vim 是一个基于命令行的编辑器,我们要打开 Vim,只需要在命令行中键入 vim
。
vim 也可以接收参数,当我们想用它直接编辑特定的文件时,可以在 vim 后面加上文件的路径+文件名。
[lighthouse@VM-8-17-centos vim]$ lspoem.md[lighthouse@VM-8-17-centos vim]$ vim poem.md
4.1插入文本
Vim 以 Normal 模式启动。在 normal 模式下按下i
键,进入 Insert 模式,屏幕左下角将会提示--INSERT--
。在插入模式下按下
键,可以返回 Normal 模式。
左下角总会显示你所在的模式,但 Nomal 模式下是空白的。
4.2命令行
在 Normal 模式按下 :
(冒号)将会进入命令行模式。这时你的光标将会跳到屏幕左下方的命令行。这个模式有很多功能,包括打开,保存,关闭文件,退出 vim。
在命令行模式下:
命令 | 释义 |
---|---|
:q /:quit | 退出(关闭窗口) |
:w / :wirite | 保存文件 |
:wq | 保存并退出 |
:ls | 显示打开的缓存 |
:e {文件名} | 打开对应文件 |
:help <特定键/特定命令> | 打开帮助文档 |
注意,这里的特定命令和特定键不同,如 :help :w
表示获取命令 :w
的说明,而 :help w
表示在 Normal 模式下 w 键的说明。
4.3buffer, tab, window
Vim 会维护一系列打开的文件(buffer),称为缓存。
一个 Vim 会话包含一系列标签页(tab),每个标签页包含一系列窗口(window,分隔面板)。每个窗口显示一个缓存(buffer)。
跟普通的程序不一样的是, 缓存和窗口不是一一对应的关系;窗口只是视角。一个缓存可以在多个窗口打开,甚至在同一个标签页内的多个窗口打开。这个功能其实很好用,比如在查看同一个文件的不同部分的时候。
Vim 默认打开一个标签页,这个标签包含一个窗口。
如何理解并正确使用 Vim 中的 Buffer , Window 和 Tab
Vim Tab Madness. Buffers vs Tabs
5.Vim的接口是一种编程语言
Vim 最重要的设计思想是 Vim 的界面本身是一个程序语言。你可以键入命令来对文件,窗口等进行操作。而不仅仅是编辑字符。
5.1移动命令
Normal 模式下:
基本移动:
h j k l
(左, 下, 上, 右)以词为单位:
w
(word,向前移动一个单词)b
(beginning of word,向后移动一个单词)e
(end of word,移动到单词末尾)
以行为单位:
0
(到行首)^
(到本行第一个非空格字符)$
(到行末)
屏幕:
H
(Highest,屏幕首行),M
(Middle,屏幕中间),L
(Lowest,屏幕底部)翻页:
Ctrl-u
(上翻),Ctrl-d
(下翻)文件:
gg
(到文件最开始),G
(到文件最底部)行数:
:{行数}
或者{行数}G
({行数}为行数)杂项:
%
(找到配对,比如括号或者 /* */ 之类的注释对)查找:
f{字符}
,t{字符}
,F{字符}
,T{字符}
f{字符}
/t{字符}
:相对于光标,在本行向前查找的第一个匹配的{字符}F{字符}
/T{字符}
:相对于光标,在本行向后查找的第一个匹配的{字符}相对于f/F,t/T 查找的光标不会落在匹配的字符上,而是落在匹配的字符的前一个/后一个字符
,
/;
用于导航匹配
搜索:
/{正则表达式}
,n
/N
用于导航匹配,Esc+u
撤销搜索高光显示
5.2编辑命令
在 Normal 模式下:
按下
i
,进入insert模式按下
o
键,可以在光标下面开(open)新的一行,同时切入 Insert 模式。按下
O
键,在光标上面开新的一行,同时切入 Insert 模式d{移动命令}
,命令可以配合移动命令来选择删除范围dw
删除词d0
删除到行首d3l
向右删除3个字符de
从当前位置开始删除到词末
c{移动命令}
,和上面命令相似,不同的是它删除后会进入insert模式(c代表change)cw
删除词,并进入insert模式c$
删除到行尾,并进入到insert模式
c 和 d 这两个命令很像,它们都会接受一个操作范围作为参数,然后按照操作的范围进行删除或者更改。不同在于c命令会进入insert模式,d命令不会
如果按下某个编辑键两次,它将作用于当前行
dd
删除当前行cc
删除当前行,并进入insert模式
x
删除一个字符(等于dl
)r
替换一个字符u
撤销操作,最早可以回到你打开的状态ctrl+r
重做操作y
赋值(yank,提取,拉拽),y 也接收一个操作范围作为参数yy
复制当前行yw
复制单词
p
粘贴
5.3选择命令
Visual 模式下可以使用大多数 Normal 模式下的移动命令移动光标,它会自动选中移动范围的文本,然后可以对其进行操作,其中最常用的就是复制(y)这段文本,复制完后会自动退回普通模式。
普通 Visual 模式(normal 模式下按
v
进入)Visual Line 模式(normal 模式下按
V
进入),它的操作以行为单位,一次可以选择一行文字。Visual Block 模式(normal 模式下按
ctrl+v
进入),它可以选择矩形的文字块,其他与上述模式类似。
5.4计数
数字可以和移动、编辑、选择命令结合。
例如:4j
:表示执行j命令4次,光标向下移动4行;5w
:执行w命令5次,光标向前移动5个单词。或者在普通visual模式下,按10e
,就可以向右选中单词10次;
还可以和编辑命令结合,例如:7dw
,表示执行dw命令7次,向右删除7个单词。
5.5修饰语
你可以用修饰语改变“名词”的意义。修饰语有 i
,表示“内部”或者“在内“(inside),和 a
, 表示”周围“(around)。
ci(
删除当前括号()
之内的内容;di(
删除包括()
在内的内容ci[
改变当前方括号[]
之内的内容;di[
删除包括[]
在内的内容da"
删除一个单引号字符串, 包括周围的单引号
6.演示
这里有一个存在bug的代码fizz_buzz,使用vim来快速修改它:
fizz_buzz是一个输出1到n的练习,当数字能被3整除时,输出fizz;当数字能被5整除时,输出buzz;当数字同时能被3和5整除时,输出fizzbuzz;如果这些条件都不满足,就直接输出数字。
例如:1,2,fizz,4,buzz,...
def fizz_buzz(limit): for i in range(limit): if i % 3 == 0: print("fizz") if i % 5 == 0: print("fizz") if i % 3 and i % 5: print(i)def main(): fizz_buzz(10)
问题和解决操作:
问题一:主函数没有被调用:
G
跳到文件尾o
向下打开一个新行输入 “if name…”
问题二:fizz_buzz命令应该从 0 而不是 1 开始
搜索
/range
ww
向前移动两个词i
插入文字1,
ea
在 limit 后插入+1
(a表示append)
问题三:在 5 的整数倍的时候打印 “fizz”
搜索
/fizz
,按n搜索下一个,一直到第三个"fizz“键入
ci"
,再将“fizz”改为“buzz”
问题四:在 15 的整数倍的时候在换行打印了 “fizz” 和 “buzz”
在第四行,键入
$i
插入文字到行尾,然后加入内容, end=""
想要对下两行如法炮制,先键入
jj
跳到下两行,然后键入.
(在vim中按下.
会重复之间的编辑命令)jjo
在 if 打开一行加入 “else: print()”
问题五:采用了硬编码的参数 10 而没有从命令控制行读取参数
gg
回到文件头,O
向上打开新行,然后键入内容“import sys”,然后回到normal模式键入
/10
,跳到10
文字处,然后键入ci(
命令,添加内容:int(sys.argv[1])
7.自定义Vim
Vim 由一个位于 ~/.vimrc
的文本配置文件(包含 Vim 脚本命令)。
在这儿下载我们的设置,将它保存成
~/.vimrc
Vim 能够被重度自定义,你可以参考其他人的在 GitHub 上共享的设置文件如:Anish, Jon (uses neovim), Jose。
8.扩展Vim
9.其他程序的Vim模式
10.Vim 进阶
11.拓展资料
12.课后练习
关键词:
主题 3 编辑器(Vim)
当前快看:烟台翁婿二人先后跳进湖中勇救落水母子
焦点快报!俞敏洪:每天工作16小时不觉得累 有种内在动力
大妈称月薪5000生娃比赚5个亿优秀:网友激烈对吵
全球快播:(一)kafka从入门到精通之初识kafka
当前消息!锐龙5 5600X3D来了!Zen3 6核心配99MB缓存 价格超诱人
开心档之C++ 数组|全球即时
迈阿密国际老板:梅西年薪5-6千万美元 退役将获球队股份&转播权
超薄、超强的ITX迷你主板:轻松四屏4K 就是太贵!|世界观速讯
当前观点:成都一草坪惊现上百条“蚊卷风”:都是为了交配
环球看点!王宝强导演电影票房破10亿:主演票房达173.5亿
FullGC调优100倍,掌握这3招,吊打JVM调优|世界今日报
今头条!css学习(二)
V社回应拒绝上架AI制作游戏:为确保开发者有素材所有权-世界速看
全球快讯:多点DMALL,困于三重门
被迪王支配的恐惧!比亚迪6月销量破25万辆:创自主品牌历史新高
YouTube“挥刀”砍向广告拦截器:使用后仅能播放三个视频
这就是Windows和macOS差距!科技大佬称MacBook十年从未用过鼠标|世界时快讯
AI涨不动了!ChatGPT访问量骤降:增速下滑至2.8% 焦点短讯
LinuxDNS分析从入门到放弃(记一次有趣的dns问题排查记录,ping 源码分析,getaddrinfo源码分析)
Linux三剑客grep、sed、awk(包括练习题)|环球热推荐
天天热讯:巨轮智能:公司近期经营情况正常 内外部经营环境未发生重大变化
美国《国家地理》回应传闻:不会停刊、不影响内容质量
新西兰升级禁塑令:违者将被罚款44万元 世界速递
【世界报资讯】IOS开发-实现一个高度自适应的UILabel和一个宽度自适应的UILabel
Kali Linux 配置系统代理_当前热闻
中外合作办学 授予中、英学士学位 凯里学院这个专业计划招生120人
终结日本队5连冠!中国女篮时隔12年再得亚洲杯冠军
惠普发布新款游戏显示器:2K IPS屏、240Hz高刷|播资讯
全球简讯:泰州市召开“泰惠农•金融服务乡村振兴”农业农村重大项目专题对接会
Jar包开发之【有之则用,无之则禁】|世界新要闻
CentOS 9 x64 使用 Nginx、Supervisor 部署 Go/Golang 服务
spring启动流程 (2) Bean实例化流程 世界短讯
【全球新视野】问界M5智驾版发布全新OTA升级 加入全新智驾领航辅助等功能
真世界霸主!任天堂第一方收入远超索尼、微软
6月北京口岸出入境人员突破88万,再创今年出入境流量新高 全球观点
特斯拉将采用线控转向技术 Yoke方向盘能否全面普及? 环球要闻
20万买“小奔驰”图什么?
卷疯了!全新马自达3昂克赛拉正式上市 9.99万到底值不值?_观点
中非经贸博览会指定用车,岚图梦想家到底哪里好? 焦点热议
AMD食言了!说好的显卡性能神技HYPR-RX跳票
至高优惠200元 华为MatePad Air 原野绿新色上市开启预售 天天快资讯
新机蓄势待发!Switch后续机型开发套件或已抵达西班牙-环球观热点
汪小菲“趁火打劫”成功,将接子女回北京,大s妥协原因引热议_全球热头条
大V吐槽极氪倒车影像“骗人”bug:让他撞了两次车
马斯克缺钱?推特限制用户浏览量:不开会员每天只能看1000条_今日视点
动态:硕士被曝制作全校学生颜值打分网站供人查看 人大回应
Python 使用 NetworkX
当前关注:excel图表制作折线图数据选择_excel图表制作折线图
华为智选车将建汽车独立门店 知情人士:经销商加盟 华为话语权更大
20万内仅有的换电SUV来了!吉利睿蓝7即将上市
切比雪夫距离
全球微动态丨日方首度确认!中国两栖攻击舰路过鹿儿岛
俩南方小伙山东旅游点6个菜吃不完 被北方菜“上了一课”-世界短讯
广东一电摩自燃 30辆车被连累烧成空壳!千万别在室内充电
俄罗斯恢复飞往古巴的定期航班
人大金仓学习之一_kwr的简单学习_环球看点
前端Vue基于腾讯地图Api实现的选择位置组件 返回地址名称详细地址经纬度信息|世界焦点
今日要闻!民主测评软件需求分析与实现
6大人争接萌娃放学 最后姥爷赢麻了:画面让网友笑翻-环球快资讯
美国一女子去世7只猫继承217万遗产引热议:上百人抢着领养
公共气象服务中心:预警“叫应”联动服务信息化建设_每日热门
每日看点!选读SQL经典实例笔记01_检索和排序
学霸、体育才女!谷爱凌大一课程全A 曾自称成绩100%自己努力得到的
华硕全球首发RTX 4060 Ti神卡:能扩展M.2 SSD
当前短讯!威马疑又停薪,仅发中高层工资!“讨债大军”攻陷官方微博
国科大校长谈龙芯之母说着说着就哭了:别让“卡脖子”遏制我们发展 当前报道
【WALT】update_window_start() 代码详解
国外RTX 4090销售陷入困境 愁坏了很多零售商
孙女给生活不能自理爷爷洗澡引争议 当事人:孝心不分男女 天天头条
升级iOS 17还要交钱?跟iOS 16对比后拔草了!立省688元
今日播报!Apple Watch新款感知不强!500块的S4最香
做“有温度”的就业指导服务|世界新视野
每日热文:大姨妈不正常怎么办吃什么好呢_大姨妈不正常怎么办
【世界速看料】茅坑里的石头是哪种人_茅坑里的石头是什么意思
【聚看点】go src - sync.Map
环球观天下!Web安全-渗透测试-权限提升01
焦点快报!116-104!山东高速力克北京首钢,山东试训外援首秀轻取19分
63岁男子向熊猫投掷苹果惹众怒 后果来了:被终身禁入
宝镇
天玑9200+性价王者预定!Redmi K60 Ultra第三方保护壳现身|全球新视野
支持正版:英国为采购Office刚花了71亿|天天快看
全球热资讯!7月新农合再涨40元,一市明确每人590元,今年你还交吗?
长城站起来!哈弗枭龙系列第1万台下线:6月热销6098台暴增97%
复兴号正式在青藏铁路投入运行:海拔3000米 零下40度也能跑
曼高德谈《夺宝奇兵5》
天天快讯:传奇设计大师去世:“我从不设计丑陋东西”
焦点精选!第一部8.0分不值一提!美国年度科幻大片续集来了
协鑫宣布年产36万吨储能正极材料项目今日投产-世界热讯
张雪峰老师推荐的十大高薪专业引发热议:计算机类霸榜 文科中仅法语入围 天天速读
丰田章男工资曝光:9.99亿日元丰田汽车史上最高! 环球微头条
RPM安装的Oracle19c 修改init.ora进行修复以及最简单开机启动Oracle的方法 世界百事通
markdown终极指南 观点
100%纯棉、亲肤舒适:布静观纯棉短袖13元、长袖16元
环球视讯!多地高温难耐 黑龙江却遭遇特大冰雹:砸碎几乎整栋楼玻璃
环球新消息丨安卓性能标杆!一加Ace 2 Pro来了:5200mAh+骁龙8 Gen2
米体:汉达可能降薪续约留在国米,下赛季担任二号门将 全球微动态
mosquitto的基本参数使用
全球热议:探究直播app源码技术:视频上传功能
当前资讯!02修剪标准&&方法