行头行尾
回忆上节课内容🤔
-
我们这次了解了
大词
和小词
-
小词
就是我们常规意义的词- 被
=
、"
等标点分开的词
- 被
-
大词
里面包括了=
、"
等标点- 只能被空格、tab、换行分割
-
<kbd>W</kbd>、<kbd>E</kbd>、<kbd>B</kbd> 都可以有大词移动
[图片上传失败...(image-28a07f-1628724541005)]
- 但如果我想一步就跳到行头或行尾
- 这不一步登天么?
- 可能么🤔
查阅文档📕
- 还是从
:h w
,开始查找起 - 还是在
motion
里面查找 - 应该和 <kbd>W</kbd> 都属于左右移动的部分
- 找到这样两个命令
行首和行尾
[图片上传失败...(image-865580-1628724541004)]
-
<kbd>^</kbd>,也就是 <kbd>shift</kbd>+<kbd>6</kbd>
- 作用是移动到行首
- 或者说移动到本行第一个非空字符
-
<kbd>$</kbd>,也就是<kbd>shift</kbd> + <kbd>4</kbd>
- 作用是移动到本行行尾
^
、$
也分别对应正则表达式中的开头
和结尾
深入细节
-
如果本行开头第一个字符是空格
- 那<kbd>^</kbd>无法到第一个字符啊?
- 如果我就想去第一个字符
- 无论他是空格还是tab
- 应该怎么办呢?
这个命令应该离
^
不远应该也在
motion
的 左右移动部分找到了
0
行头区别
- <kbd>^</kbd> 是到本行第一个非空字符
- <kbd>0</kbd> 是到本行第一个字符,不管是不是空格
- 那结尾如果有空格会如何呢?
结尾细节
- 相关命令肯定也在左右移动这部分
- 找到
g_
- <kbd>g</kbd><kbd>_</kbd> 是到本行最后一个非空字符
- 两个按键要依次按下
- <kbd>$</kbd> 跳到本行最后一个字符,即使他是空格
总结
我们这次学会了直接跳到开头和结尾
-
最重要的就是
^
、$
- <kbd>^</kbd> 到开头
- <kbd>$</kbd> 到结尾
还有什么好玩的吗?🤔
下次再说 👋
向上向下
回忆上节课内容🤔
-
和
f
相关的是跳到- 向
前
跳到是 <kbd>f</kbd> - 向
后
跳到是 <kbd>F</kbd>
- 向
-
和
t
相关的是贴靠- 向
前
贴靠是 <kbd>t</kbd> - 向
后
贴靠是 <kbd>T</kbd>
- 向
-
和
小写
相关的是向前
-
向前
跳跃是 <kbd>f</kbd> -
向前
贴靠是 <kbd>t</kbd>
-
-
和
大写
相关的是向后
-
向后
跳跃是 <kbd>F</kbd> -
向后
贴靠是 <kbd>T</kbd>
-
-
和继续
查找方向
相关的是 <kbd>;</kbd>、<kbd>,</kbd>-
保持方向
是 <kbd>;</kbd> -
改变方向
是 <kbd>,</kbd>
-
向上向下
本次启动的时候还是无参数模式
-
:set nocompatible
设置为不兼容vi
- 意思是使用
vim
的方式处理命令
- 意思是使用
-
motion
的左右移动
之后是上下移动
可以使用 <kbd>回车</kbd> 换行
也可以使用方向键向上或向下
-
更常见的还是 <kbd>j</kbd>、<kbd>k</kbd>,因为他们基于基本位置
- <kbd>j</kbd> 是向下 👇
- <kbd>k</kbd> 是向上 👆
- <kbd>5</kbd> <kbd>j</kbd> 就是让光标向下👇 5 行
- <kbd>5</kbd> <kbd>k</kbd> 就是让光标向上👆 5 行
继续向下翻
上下行首
-
加号
plus
对应 <kbd>+</kbd>- 对应键盘 <kbd>shift</kbd> + <kbd>=</kbd>
减号
minus
对应 <kbd>-</kbd>-
上下行跳到行首
- <kbd>+</kbd> 向
下
并且到行首
非空字符 - <kbd>-</kbd> 向
上
并且到行首
非空字符
- <kbd>+</kbd> 向
-
对应关系
- <kbd>+</kbd> 相当于 <kbd>j</kbd> <kbd>^</kbd>
- <kbd>-</kbd> 相当于 <kbd>k</kbd> <kbd>^</kbd>
首行尾行
<kbd>g</kbd> <kbd>g</kbd> 对应
首行
<kbd>G</kbd> 对应
尾行
如果文章很长的话,直接跳就很方便
一个 <kbd>G</kbd> 直接就到了
Ground
-
想回开头的话可以用 <kbd>g</kbd> <kbd>g</kbd>
- 不知道为什么这两个字母格外熟练
- 熟练的让人心痛!
另外还有一个组合
Go
-
比如追加一个很长的配置文件的话 <kbd>G</kbd> <kbd>o</kbd>
-
G
直接到最后 -
o
在下面一行插入
-
两个按键
Go
起来<kbd>ctrl</kbd>+<kbd>c</kbd>回到正常模式
-
gg
就回开头- 重来一局
自动缩进
当然也不都是痛苦回忆
-
<kbd>g</kbd> <kbd>g</kbd> 配 <kbd>G</kbd> 是我见过最方便的自动缩进方式
- <kbd>g</kbd> <kbd>g</kbd> <kbd>=</kbd> <kbd>G</kbd> 从首行到尾行自动缩进
- 这个文件可能有 500 行,
- 但是一把就全都缩进好了
-
不只是程序、网页、css、配置文件都可以自动缩紧
- 这样整理代码就非常迅速了
-
程序员更多的时候工作在 normal 模式
浏览、搜索、跳跃、复制、粘贴
真正聚焦下来写代码再切换到插入状态。
其他编辑器永远只有一个插入状态
其实是浪费了很多键盘功能的
-
这也是 Normal 模式被称作 Normal 正常模式
- 被当作默认模式的原因。
<kbd>g</kbd> <kbd>g</kbd> <kbd>=</kbd> <kbd>G</kbd>这非常爽!!!🤪
总结
-
上下行
- 向
下
是 <kbd>j</kbd>👇 - 向
上
是 <kbd>k</kbd>👆
- 向
-
上下行首
- 向
下
到行首非空字符 <kbd>+</kbd> - 向
上
到行首非空字符 <kbd>-</kbd> - 这些
motion
都可以加上[count]
来翻倍
- 向
-
首尾行
- 首行是 <kbd>g</kbd> <kbd>g</kbd>
- 尾行是 <kbd>G</kbd>
- <kbd>g</kbd> <kbd>g</kbd> <kbd>=</kbd> <kbd>G</kbd> 是全部自动缩进
- <kbd>G</kbd> 好像还有其他用法?
什么用法呢?
下次再说 👋