Potion段移动
最后更新于:2022-04-01 21:05:58
既然知道了段移动的工作原理,让我们重新映射这些命令来使得它们对于Potion文件起作用。
首先我们要决定Potion文件中"段"的意义。 有两对段移动命令,所以我们可以总结出两套组合,我们的用户可以选择自己喜欢的一个。
让我们使用下面两个组合来决定哪里是Potion中的段:
1. 任何在空行之后的,第一个字符为非空字符的行,以及文件首行。
2. 任何第一个字符为非空字符,包括一个等于号,并以冒号结尾的行。
稍微拓展我们的`factorial.pn`例子,这就是那些规则当作段头的地方:
~~~
# factorial.pn 1
# Print some factorials, just for fun.
factorial = (n): 1 2
total = 1
n to 1 (i):
total *= i.
total.
print_line = (): 1 2
"-=-=-=-=-=-=-=-\n" print.
print_factorial = (i): 1 2
i string print
'! is: ' print
factorial (i) string print
"\n" print.
"Here are some factorials:\n\n" print 1
print_line () 1
10 times (i):
print_factorial (i).
print_line ()
~~~
我们的第一个定义更加自由。它定义一个段为一个"顶级的文本块"。
第二个定义则严格一点。它定义一个段为一个函数定义。
## 自定义映射
在你的插件的repo中创建`ftplugin/potion/sections.vim`。 这将是我们放置段移动代码的地方。记得一旦一个缓冲区的`filetype`设置为`potion`,这里的代码就会执行。
我们将重新映射全部四个段移动命令,所以继续并创建一个骨架:
~~~
noremap
';