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)
來獲取調用您的命令的命令行,並解析確切的命令調用,包括原始範圍(然後可以通過將其傳遞給另一個命令來重新使用它)用它進行線算術是有問題的,因爲它是原始的範圍,而不是實際的線數)。解決方法只適用於交互式命令,易碎,需要一些努力。也許你可以通過定義兩個不同的命令來完全避免這個問題。