Vim实践与学习-05定位
定位到指定行n
输入: nG
.
或输入: ngg
.
或输入: :n
这里,n就是指定的行的行号.注意,有时候G=gg.
跳到屏幕顶部
输入: H
.
这里,停在第一个非空字符上。加一个数字N,是指距窗口顶部的行数(如 NH
正数第N行)
跳到屏幕底部
输入: L
.
这里,停在第一个非空字符上。加一个数字,是指距窗口底部的行数(如 NL
倒数第N行)
跳到屏幕中间
输入: M
.
这里,停在第一个非空字符上。
跳到文件首
输入: gg
.
跳到文件尾
输入: G
.
光标移至句尾
输入: )
.
光标移至句首
输入: (
.
光标移至段落开头
输入: }
.
光标移至段落结尾
输入: {
.
跳到行末尾
输入: $
.
跳到行首
输入: ^
.
或输入: 0
.
这里输入 ^
是移动到首的第一个非空白字符。
向后跳到整文件最近距离的单词末尾
输入: e
.
向前跳到整文件最近距离的单词首部
输入: b
.
跳到整文件下个单词首部
输入: w
.
行内移动
以下均可可以加上数字N前缀表示移动N次(如 3fc
表示执行 fc
3次。)
移动到光标右面第一个字符 c
的后面
输入: fc
.
移动到光标右面第一个字符 c
的前面:
输入: tc
.
移动到光标左面第一个字符 c
的前面
输入: Fc
.
移动到光标左面第一个字符 c
的后面
输入: Tc
.
重复前一次输入的 f
, t
, F
, T
命令
输入: ;
.
例如刚才是 fc
,输入 ;
相当于还是 fc
。
会反方向重复前一次输入的 f
, t
, F
, T
命令
输入: =,= .
例如刚才是 fc
,输入 =,= 相当 Fc
。
在较长行内的移动
这里做一个小小的约定:较长的一行如果占据了屏幕的多行,那么这一行我们把它叫“长行”,屏幕上的一行叫做“屏幕行”。所以对于一个'长行'需要有多个'屏幕行'来显示。
在“长行”中移动到下一个“屏幕行”
输入: gj
.
在“长行”中移动到上一个“屏幕行”
输入: gk
.
在"长行"中移动到当前"屏幕行"首
输入: g^
.
在"长行"中移动到当前"屏幕行"尾
输入: g$
.
这里,如果一行超过了屏幕宽度,会显示在屏幕的多行,显示的虽然是多行,但是实际上还是一行,在输入上下移动的时候虽然是进入了上一行或者下一行,但是往往会呈现出在屏幕中一下跳过n行的样子。 g$
, g^
, gj
, gk
在行超过长度时好用。 j
, k
下上移动的是文本中的一行,当文本一行的长度超过屏幕的一行的时候, j
, k
移动的时候在屏幕上可能是移动多行。这时候可以用 gj
, gk
来移动屏幕的一行而不是文本的一行。 同理 g^
和 g$
是屏幕的行首行尾,而不是文本的行首行尾。
按百分比来跳转,跳转到文件50%处
输入: 50%
.
这里利用%实现按百分比来跳转,如果想跳到75%处,输入 75%
。
翻页
【Vim实践与学习-05定位】可以跟数字前缀N表示执行的倍数,翻页可以用[PageUP]/[PageDown].
向下翻页
输入: C-f
.
向上翻页
输入: C-b
.
向下翻半页
输入: C-d
.
向上翻半页
输入: C-u
.
相对于光标的翻页
效果是行向相应的方向滚动了,光标仍然在原来的行,好像是将这个文本拖动了一样.
光标所在行移动窗口的顶端
输入: zt
.
光标所在行移动窗口的中间
输入: zz
.
光标所在行移动窗口的底端
输入: zb
.
将第n行滚至屏幕顶部
输入: nzt
。
将第n行滚至屏幕底部
输入: nzb
。
将第n行滚至屏幕中部
输入: nzz
。
设置书签
输入: ma
.
这样,会在当前光标的位置标记一个书签,名字为 a。书签名只能是小写字母。你看不见书签的存在,但它确实已经在那里了。只能记录当前文件里的书签,退出vim后再次进入将不会保留这些书签, 书签只是当前文件中的一个位置,但是我实践一下发现,设置完了书签之后,保存文件,这样也把书签保存了。
到书签a处
输入: `a
.
注意,这个不是单引号,它一般位于大部分键盘的 1 的左边。
到书签a所在的行
输入: ='a= .
这里用的是单引号,将跳到书签所在的行。
到上次编辑文件的地方
输入: `.
.
这个命令很有用,而且你不用自己去标记它,注意这里输入的是反引号 `
,精确到点。
到上次编辑文件所在行
输入: ='.=
注意这里是精确到行,输入的是引号 ='= 。
回到最后一次插入状态返回的位置
输入: ='^= .
或输入: `^
.
这里 ='.= 精确到行, `.
精确到点(行+列)。
查看当前所有书签的列表
输入: :marks
.
搜索相关
搜索一个字符串
输入: /string
。
这里 string
就是将要被搜索的字符串,会自动跳到光标后面第一个 string
处。
在上次搜索的基础上向前搜索
输入: N
。
在上次搜索的基础上向后搜索
输入: n
.
逆向搜索一个字符串
输入: ?string
。
这里 string
就是将要被搜索的字符串,会自动跳到光标前面第一个 string
处。之后使用的 :n
和 :N
命令方向也会相反了。
列出查找的历史记录
输入: q/
.
或输入: q?
.
这会在vim窗口最下面打开一个新的窗口,列出你的查找历史记录可以选择。
向下完全匹配当前光标下单词
输入: *
。
之后也可以按 n
继续向下查找。
向上完全匹配当前光标下单词
输入: #
。
之后也可以按 N
继续向上查找。
向下匹配包含当前光标单词的字符串
输入: g*
。
向上匹配包含当前光标单词的字符串
输入: g#
。
跳到匹配的另一半括号
输入: %
。
这样可以查找配对的括号,即: )、]、}。
打开当前光标单词下的文件
输入: gf
。
这里,假设当前的光标在相应的文件名上面,例如 main.c
等等。
切换到上次打开文件
输入: C-^
。
这里,例如我们输入了 gf
进入某个文件,可以输入 C-^
来回到刚才的文件,这个命令只能在当前和上一个文件之间切换,不能后退多步。
后退到某个曾经浏览过的位置
输入: C-o
.
流行的文本编辑器通常都有前进和后退的功能,可以在文件中曾经浏览过的位置之间来回移动。在vim中多次输入 C-o
可以执行后退。
前进到某个曾经浏览过的位置
输入: C-i
.
或输入: [Tab]
.
这样,如果执行过后退,在vim中多次输入 C-o
可以执行前进。
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- Docker应用:容器间通信与Mariadb数据库主从复制
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量
- 第326天
- Shell-Bash变量与运算符
- 逻辑回归的理解与python示例
- Guava|Guava RateLimiter与限流算法
- 我和你之前距离
- CGI,FastCGI,PHP-CGI与PHP-FPM
- 不废话,代码实践带你掌握|不废话,代码实践带你掌握 强缓存、协商缓存!