微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何区分vim中的行地址和行范围?

这是一个简单的用户定义函数

fun! Foo() range
    echo a:firstline a:lastline
endfun

>:5call Foo()和:5,5call Foo()给我相同的结果.
>但是,5j和:5,5j给我不同的结果.

我可以写一个表现得像连接的函数吗?
联接如何区分行地址和行范围?

解决方法

通过定义custom:命令,-range和-count属性可以让您更好地控制范围的消耗方式.但是,我认为即使这样也不会让你完全复制:join的行为.自定义Vim命令的界面不如内置命令可用的界面丰富.

作为一种解决方法,您可以使用histget(‘cmd’,– 1)来获取调用命令的命令行,并解析确切的命令调用,包括原始范围(然后可以通过将其传递给它来重复使用)另一个命令,但用它进行线性算术是有问题的,因为它是原始范围,而不是实际的行数).解决方法仅适用于交互式命令,很脆弱,需要一些努力.也许你可以通过定义两个不同的命令来完全避免这个问题.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐