6
这是一个简单的用户定义函数:如何区分vim中的行地址和行范围?
fun! Foo() range
echo a:firstline a:lastline
endfun
:5call Foo()
和:5,5call Foo()
给我相同的结果。- 但是,
:5j
和:5,5j
给了我不同的结果。
我可以编写一个类似于join
的函数吗?
join
如何区分行地址和行范围?
这是一个简单的用户定义函数:如何区分vim中的行地址和行范围?
fun! Foo() range
echo a:firstline a:lastline
endfun
:5call Foo()
和:5,5call Foo()
给我相同的结果。:5j
和:5,5j
给了我不同的结果。我可以编写一个类似于join
的函数吗?
join
如何区分行地址和行范围?
通过定义自定义:command
,-range
和-count
属性可让您更好地控制范围消耗的方式。不过,我认为即使这样也不会让你完全重复:join
的行为。自定义Vim命令的界面并不像内置命令可用的那样丰富。
作为解决方法,您可以使用histget('cmd', -1)
来获取调用您的命令的命令行,并解析确切的命令调用,包括原始范围(然后可以通过将其传递给另一个命令来重新使用它)用它进行线算术是有问题的,因为它是原始的范围,而不是实际的线数)。解决方法只适用于交互式命令,易碎,需要一些努力。也许你可以通过定义两个不同的命令来完全避免这个问题。