鱼C论坛

 找回密码
 立即注册
查看: 16318|回复: 21

[基础课程] 第五节:文件信息、跳转、定位括号和缩进

[复制链接]
发表于 2015-10-29 23:30:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
第五节:文件信息、跳转、定位括号和缩进


文件信息

有时候,你可能需要知道当前的文件信息,比如文件名,文件状态,文件的总行数,以及光标所在的相对位置。

1.gif

快捷键 ctrl + g 可以解决你的需求:

2.png

注意:光标在文件中的相对位置是用百分数来显示的,那如果想知道光标具体的位置呢?看到还有个 5,1 了吗?那个是原来就有的,表示光标当前的位置(行,列)


跳转

当你的光标在文件中随意徘徊时,突然想到目标就在第 333 行的位置,你应该怎么做?假设你当前光标位于文件第 1333 行,你的做法是在普通模式下按 1000 次 k 键?

还是将光标先定位到文件的起始处(gg 命令,还记得吗?),然后按332 次 j 键?

无论使用哪种做法,我想都是在摧残我们的心智。 3.jpg

当然你可能想到了数字的奥义,先输入数字 332 再输入 j,那么就可以直接跳转到 333 行了。不错,但你还得先将光标移动到文件的起始处,多麻烦……或者直接输入数字 1000,再输入 k,但……这就需要计算了,如果是 1387 行跳到 678 行不还得拿个计算器啊?!

我们需要的是一步到位,我们需要的是瞬间转移!!!

可以,VIM 是神之编辑器,只有你想不到,没有它办不到的!

4.gif

在 VIM 有两种方式可以将光标跳转到指定的位置:

  • 行号 + G
  • :行号

比如将光标跳转到第 333 行的位置,你就输入数字 333,再输入大写字母 G 即可见证奇迹;或者输入冒号(:)进入命令行模式,再输入数字 333,最后回车,也可以跳转到目的地。

TIPS:如果单独输入 G 键(前边没有输入数字),那么光标是直接去到文件的最后一行;如果输入两个小写 g,即 gg,则将光标跳转到文件的第一行。


定位括号

我们知道这个世界上除了情侣是一对对的之外,还有括号也是一对对的,不成对的括号则毫无逻辑可言。当你的代码量到一定程度的时候,或许你就只能在屏幕中看到一半的括号,那么有时候寻找它的另一半将成为你心头的磐石。

5.gif

VIM 有个按键可以帮你快速定位到另一半括号,别说我没告诉你,就是 % 键。将光标移动到 (),[],{},中的任何一半括号上,按下 % 键,便可看到此时光标已经跳转到另外一半的括号上了。

在程序调试时,这个功能用来查找不配对的括号是很有用的。因为有时候你代码删删删,括号一对给你删了一半,剩下一半落在那里,编译自然就会报错……此时你在落单的那一半括号上使用 % 键,你会发现 VIM 根本不鸟你,因为它找不到另一半了……

注意:别拿书名号什么的来开玩笑,% 无法识别它们,因为 VIM 是为了编程而生的!


缩进

在编写代码的时候我们经常需要对代码进行缩进,如果你按照小甲鱼之前环境搭建那样开启了 VIM 的 cindent 功能之后,你的代码默认会按照 C 语言的方式进行缩进。

比如我输入做大括号({),然后回车,VIM 将自动为下边的语句插入一个缩进,直到你输入右大括号(}),代表语句块结束。
  1. int strcmp(char *s, char *t)
  2. {      
  3.         int i;
  4.         
  5.         for (i=0; s[i] == t[i]; i++)
  6.                 ;      

  7.         return s[i] - t[i];
  8. }
复制代码

好,那现在我们需要在 for 循环中添加一个条件判断:
  1. int strcmp(char *s, char *t)
  2. {      
  3.         int i;
  4.         
  5.         for (i=0; s[i] == t[i]; i++)
  6.         if (s[i] == '\0')
  7.                 return 0;

  8.         return s[i] - t[i];
  9. }
复制代码


现在我们需要将第 6 行和第 7 行均添加一个缩进,你可能会选择进入插入模式,然后将光标挪到 if 语句的开头,然后按下 Tab 键插入一个缩进,接着再将光标移动到 return 0; 的前边,同样按下 Tab 键插入一个缩进……

别说你嫌操作麻烦,我连用文字描述我都觉得蛋疼……

这里只是两行还好,这要是二十行那不得累死人!

没错,接下来就是小甲鱼放大招的时间了!

6.jpg

VIM 可以使用尖括号(< 或 >)来控制缩进,我们常用的就是两个同方向的尖括号表示将光标所在的语句进行缩进和反缩进操作。很明显 >> 表示缩进,而 << 则表示反缩进。

但是这样一次只能缩进一行,一行行来也挺麻烦,因此你想到了数字的奥义:先输入数字 2 在输入 >> 表示将光标所在行以及下一行共两行同时插入一个缩进。

不过行数一多……到底要缩进多少行就成了一个问题……

这时,你可以按一下 v 进入可视模式(左下角出现 -- VISUAL -- 字样),然后通过 h、j、k、l 或 其他 motion 来移动你的光标,此时光标所到之处必被一道亮光所包围(表示被选中),选择好需要缩进的目标后,只需按一下 > 即可完成任务。

7.png

关于魔鬼训练小程序的众多问题,请移步:VIM魔鬼训练须知

  

本帖被以下淘专辑推荐:

  • · VIM|主题: 7, 订阅: 4
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-11-9 15:21:21 | 显示全部楼层
ffsdfds

评分

参与人数 1鱼币 -10 收起 理由
小甲鱼 -10 请不要无意义灌水!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-25 23:24:03 | 显示全部楼层
vim真乃编辑神器也——什么时候我们论坛也支持vim和Markdown发帖就好了~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2015-11-29 20:47:18 From FishC Mobile | 显示全部楼层
我的神
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-2-25 14:41:56 | 显示全部楼层
vim确实是神奇
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-5-13 09:25:49 | 显示全部楼层
弯的4
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-5-31 14:49:44 | 显示全部楼层
学习了....    不错!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-6-6 16:09:55 | 显示全部楼层
唉 最近懈怠了  浪费了六天时间 没正经学习  学到这了  自己标记一下  一年后再看看自己的进度 呵呵
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-8 18:02:15 | 显示全部楼层
要最长那行缩到最左边,选中缩多了前面的就自动对齐了保持不了形状了怎么破
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-17 14:44:39 | 显示全部楼层
本帖最后由 20400992 于 2018-5-17 14:49 编辑

神编辑器需要练习啊,不练习就会遗忘神的编辑器
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2018-9-5 16:33:12 | 显示全部楼层
我们知道这个世界上除了情侣是一对对的之外,还有括号也是一对对的
66666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-6 22:24:26 | 显示全部楼层
这时,你可以按一下 v 进入可视模式(左下角出现 -- VISUAL -- 字样),然后通过 h、j、k、l 或 其他 motion 来移动你的光标,此时光标所到之处必被一道亮光所包围(表示被选中),选择好需要缩进的目标后,只需按一下 > 即可完成任务。
为啥我这要加 shift才能有用呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2018-11-5 11:07:48 | 显示全部楼层
20400992 发表于 2018-5-17 14:44
神编辑器需要练习啊,不练习就会遗忘神的编辑器

很不习惯不用鼠标的编辑神器  需要多加练习才行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-8 23:01:12 | 显示全部楼层
本节课附带练习小程序:<……即将推出……>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-8 23:01:50 | 显示全部楼层
等我学成你还未推出 我来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-20 08:23:11 | 显示全部楼层
甲鱼,为啥我的Ctrl+ G是没有反应的啊,之前按右ctrl弹出来的是重启的信息
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-20 08:33:22 | 显示全部楼层
太神奇了,甲鱼的问题解决了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-31 21:12:36 | 显示全部楼层
所以课后小程序是鸽了么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-9-30 14:54:23 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-12 01:40:52 | 显示全部楼层
拼命按%很快我的另一半会出现,呵呵
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 04:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表