用vim优雅的编辑

Vim是从vi发展起来的一个超简洁的文本编辑器,全称为Vi IMporved。使用vim可以实现全键盘操作,摆脱鼠标操作痛苦。

Vim简介

Vim的设计理念是命令的组合。在Vim中可以使用各种各样的组合命令来完成我们的编辑。模式是一个编辑器所必备的,几乎所有的编辑器都会有插入和执行两种模式,可以用键盘和鼠标完成模式的切换和命令的执行。Vim具有挺多种模式,常用的有普通模式、插入模式、可视模式和命令行模式。

其中Vim强大的编辑能力有很大一部分来源于它的普通模式,而普通模式的强大就在于命令的组合。在本文的后半部分我们将看到普通模式下的一些常用命令。

在正式开始盛宴之前,我们先来几条小小的约定。

1. 停顿时请移开画笔。
不同于其他编辑器将插入模式作为默认状态,普通模式才是Vim的默认状态。所以,只在编写代码的那几分钟内进入插入模式,其他时候请保持普通模式。

2. 告别esc,远离方向键。
Vim可以有两种方式实现普通模式和插入模式之间的切换,esc<C-[>(就是Control+[),可两种方式都很难操作,esc太远,Control偏下,为此我们可以尝试调换CapslockControl的位置,并将<C-[>作为默认切换方式。

方向键由于距离太远将会极大的减缓我们的操作效率,Vim中我们将用hjkl分表代表上下左右。

3. 强大的重复操作符.
之所以将它放在约定中,是因为使用重复操作会呈几何倍数的提高我们的效率。.命令可以重复修改上次的操作,它是Vim中最强大的多面手。

插入模式

前面提到大部分命令在普通模式下执行,不过有些功能在插入模式下可以更好的执行。

  • <C-a> 跳转到当前行首
  • <C-b> 向前移动一个单词
  • <C-d> 减少缩进
  • <C-h> 删除前一个字符(同Backspace
  • <C-k> 删除当前行光标后面的内容
  • <C-w> 删除前一个单词
  • <C-u> 删除至行首
  • <C-t> 增加缩进

这里只列出几个较常用的,更多可以查看:help insert-index,里面有很详细的命令解释,另外这些命令并不是Vim独有的,在shell中一样可以用。

普通模式

普通模式下我们可以执行大多数操作,并可以将操作符和动作命令结合起来实现强大的功能。还记得怎么进入普通模式吗?对了,就是<C-[>

1. 移动和跳转


单行跳转

  • h 左移一个字符
  • j 下移一个字符
  • k 上移一个字符
  • l 右移一个字符
  • 10h 向下移动10行

单词跳转

  • w 跳到下一个单词的词首
  • e 跳到下一个单词的词尾
  • b 跳到上一个单词的词首
  • nw 跳转到后面第n个单词

行内跳转

  • ^ 跳到当前行的开头(忽视行首空格)
  • 0| 跳到当前行的开头(包括行首空格)
  • $或 跳到当前行的行尾
  • g _ 跳到当前行的行尾(不包括空格)
  • f x 跳到本行的下一个x处
  • F x 跳到本行的上一个x处
  • ; 重复上一次跳转
  • n| 跳到当前行的第n列

文档内跳转

  • gg 跳到文档第一行
  • G 跳到文档最后一行
  • nggnG 跳到文档的第n行
  • + 跳到下一行行首
  • - 跳到上一行行首

当前屏幕跳转

  • H 移动到当前屏幕的顶端
  • M 移动到当前屏幕的中间
  • L 移动到当前屏幕的底端

移动当前行

  • zz 移动当前行到中间
  • zt 移动当前行到屏幕顶端
  • zb 移动当前行到屏幕底端

2. 搜索和标记


文档内检索

  • /+xxx 查找xxx
  • * 查找下一个光标所在的单词
  • # 查找上一个光标所在的单词
  • n 跳到下一个查找的单词
  • N 跳到上一个查找的单词
  • :noh 取消本次高亮

文档内标记

  • m x 标记当前位置为x
  • ' x 跳到标记为x的位置
  • ' ' 跳到跳转之前的位置

3. 即时执行操作


切换到插入模式

  • i 插入到光标前
  • a 插入到光标后
  • I 插入到当前行的开始
  • A 插入到当前行的末尾
  • o 向下插入一行
  • O 向上插入一行

普通模式下编辑

  • r 修改当前字符(改完后自动切换)
  • R 修改自光标起及之后的字符(需手动切换到普通模式)
  • x 删除当前字符
  • X 删除光标前的字符
  • s 删除当前字符并进入插入模式
  • S 删除当前行并进入插入模式
  • c 修改(一般用于合成命令)
  • d 剪切(一般用于合成命令)
  • y 复制(一般用于合成命令)
  • dd 删除当前行
  • yy 复制当前行
  • p 粘贴到当前行的下方
  • P 粘贴到当前行的上方
  • ~ 大小写反转

撤销和恢复撤销

  • u 撤销上一步操作
  • <C-r> 恢复上一步操作

缩进

  • > 增加缩进
  • < 减少缩进
  • = 自动缩进

可视模式

Vim的可视模式类似于其他编辑器按住鼠标拖动选择区域,却又有些许不同,在可视模式下可以使用普通模式的命令来操作。


激活可视模式

  • v 激活面向字符的可视模式
  • V 激活面向行的可视模式
  • <C-v> 激活面向列的可视模式
  • gv 重选上次的高亮区域

切换可视模式

  • o 在可视模式下可以切换选取的活动端

命令模式

在命令模式下我们可以为Vim开辟一块新天地。命令模式下,可以使用复杂的命令。在编辑模式下键入:,光标就跳到屏幕最后一行,并在那里显示冒号,此时已进入命令模式。这篇文章不过多介绍命令模式。


打开、保存和退出

  • :e test.txt 在打开的vim中打开test.txt文件
  • :w 保存当前文件
  • :q 退出当前文件
  • :w test2.txt 另存文件为test2.txt(原文件依然存在)
  • :qall 退出多个文件
  • :q! 强制退出当前文件(所做的修改将不会保存)
  • :wq 保存并退出当前文件

分屏

  • :sp(lit) 上下分屏
  • :vsp(lit) 左右分屏
  • <C-w>+hjkl 在不同屏之间切换

标签页

  • :tabnew 新建标签页
  • :tabnew filename 在新标签页中打开文件
  • :tabn(ext) 跳到下一个标签页
  • :tabN(ext) 跳到上一个标签页
  • :tabfir(st) 跳到第一个标签页
  • :tabl(ast) 跳到最后一个标签页
  • :tabo(nly) 关闭除当前标签页以外的其他标签页

芳草有情皆碍马,好云无处不遮楼。编辑器加IDE成百上千,没有孰好孰坏,只要是对的便是最好的。学问,重在内功修炼。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,830评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,992评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,875评论 0 331
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,837评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,734评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,091评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,550评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,217评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,368评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,298评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,350评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,027评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,623评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,706评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,940评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,349评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,936评论 2 341

推荐阅读更多精彩内容

  • 命令历史 以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令。 启动vim 在命令...
    im蚂蚁阅读 30,716评论 3 48
  • 目录(?)[-] 关于Vim 1 Vim的几种模式 启动Vim 文档操作 光标的移动 1 基本移动 2 翻屏 3 ...
    SunnyLeong阅读 8,615评论 0 32
  • 曾经在思科的工厂测试系统`KlemTest` (`SUSE`命令行模式)中使用`VI`/`VIM`超过2年半,现在...
    戈多在地狱阅读 1,781评论 1 13
  • n首先很感谢公司给了我申请个人开发者账号的机会,又给了我申请公司开发者账号的机会。为啥要申请两个呢,这是因为当时公...
    道道明明白白阅读 6,545评论 13 22
  • 犯错总是 难免的 已经非常谨慎 也不能幸免 观察入微了 可以真接对话 合体了 欲望和金钱 总会不枉 一直付出的努力...
    靖哥哥利涉大川阅读 161评论 0 0