×

vi 命令手册

vi/vim 命令大全

vim 命令手册

Vim 关于Vim 安装Vim 用法Vim 配置vim 配置.vimrc方案vim 配置.vimrc方案1vim 配置.vimrc方案2Vim 文件合并Vim 技巧和建议Vim 插件Vim 参阅

Vimscript 编程参考

Vimscript 前言Vimscript 鸣谢Vimscript 预备知识Vimscript 打印信息Vimscript 设置选项Vimscript 基本映射Vimscript 模式映射Vimscript 精确映射Vimscript LeadersVimscript 编辑你的Vimrc文件Vimscript AbbreviationsVimscript 更多的MappingsVimscript 锻炼你的手指本地缓冲区的设置和映射Vimscript 自动命令Vimscript 本地缓冲区缩写Vimscript 自动命令组Operator-Pending 映射Operator-Pending 更多映射Vimscript 状态条Vimscript 负责任的编码Vimscript 变量Vimscript 变量作用域Vimscript 条件语句Vimscript 比较Vimscript 函数Vimscript 函数参数Vimscript 数字Vimscript 字符串Vimscript 字符串函数Vimscript Execute命令Vimscript Normal命令Vimscript 执行normal!Vimscript 基本的正则表达式Grep 运算符Operator 第1部分Grep 运算符Operator 第2部分Grep 运算符Operator 第3部分Vimscript 列表Vimscript 循环Vimscript 字典Vimscript 切换Vimscript 函数式编程Vimscript 路径Vimscript 创建一个完整的插件Vimscript 基本插件配置方式用Pathogen配置插件Vimscript 检测文件类型Vimscript 基本语法高亮Vimscript 高级语法高亮Vimscript 基本折叠Vimscript 高级折叠Vimscript 段移动原理Vimscript Potion段移动Vimscript 外部命令Vimscript 自动加载Vimscript 文档Vimscript 发布Vimscript 还剩下什么?

Vimscript 段移动原理


如果你未曾用过Vim的段移动命令 ([[]][] and ][),现在花上几秒读读它们的帮助文档。 也顺便读读:help section

还是不懂?这不是什么问题,我第一次读这些的时候也是这样。 在写代码之前,我们先岔开来学习这些移动是怎么工作的,然后在下一章我们将使得我们的Potion插件支持它们。

Nroff文件

四个"段移动"命令正如其字面上的含义,可以用来在文件的"段"之间移动。

这些命令默认为[nroff文件][]而设计。 Nroff类似于LaTex或Markdown -- 它是用来写标记文本的(最终会生成UNIX man页面)。

Nroff文件使用一组"macro"来定义"段头"。 比如,这里有个来自于awkman页面的例子:

.SH NAME                                                     ***
awk \- pattern-directed scanning and processing language
.SH SYNOPSIS                                                 ***
.B awk
[
.BI \-F
.I fs
]
[
.BI \-v
.I var=value
]
[
.I 'prog'
|
.BI \-f
.I progfile
]
[
.I file ...
]
.SH DESCRIPTION                                              ***
.I Awk
scans each input
.I file
for lines that match ...

.SH开头的行就是段头。我用***把它们标记出来。 四个段移动命令将在段头行之间移动你的光标。

Vim以.和nroff的段头符开始的任何行当做一个段头,即使你编辑的不是nroff文件

你可以改变sections设置来改变段头符,但Vim依旧需要在行开头有一个点,而且段头符必须是成对的字符, 所以这样改对Potion文件不会有足够的灵活性。

括号

段移动命令_也_查看另一样东西:一个打开或关闭的大括号({})作为行的第一个字符。

[[]]查看开括号,而[]][查看闭括号。

这额外的"行为"使得你可以在C风格语言的段之间轻松移动。 然而,这些规则也依旧没有顾及你正在编辑的文件类型!

加入下面内容到一个缓冲区里:

Test           A B
Test

.SH Hello      A B

Test

{              A
Test
}                B

Test

.H World       A B

Test
Test           A B

现在执行:set filetype=basic来告诉Vim这是一个BASIC文件,并尝试段移动命令。

[[]]命令将在标记为A的行之间移动,而[]][将在标记为B的行之间移动。

这告诉我们,Vim总是用同样的两条规则来处理段移动,即使没有一条是起作用的(比如在BASIC中的情况)!

练习

再次阅读:help section,现在你应该可以理解段移动了。

也顺便读读:help sections吧。


分类导航

关注微信下载离线手册

bootwiki移动版 bootwiki
(群号:472910771)