【发布时间】:2015-05-19 10:33:59
【问题描述】:
从函数内部,如何确定该函数是否是从可视块模式调用的。这涉及从以下位置调用函数:
- 正常模式映射
- 命令行模式
对于精确的功能,幸运的是它在正常/命令模式或可视模式下的行为相同,并选择了一行。显然不止一行 - 来自a:firstline/lastline - 该函数不是从正常模式调用的。
现在的问题是我需要知道我是否处于可视块模式,单行与否。
我尝试了以下所有方法均无济于事:
function! T() range
echo [a:firstline, a:lastline]
echo [getpos("'<")[1:2], getpos("'>")[1:2]]
echo visualmode()
echo mode()
endfun
vnoremap TT :call T()<CR>
nnoremap TT :call T()<CR>
视觉线模式的输出(注意疯狂的 max-int 输出):
[3, 4]
[[3, 1], [4, 2147483647]]
V
n
我需要“无法完成”或“循序渐进”的各种答案。没有模糊的 do-this 然后 do-that 然后结束... -fu 还年轻。
【问题讨论】:
-
你能在你的键映射中传递一个附加参数吗?例如
vnoremap TT :call T(1)<CR>和nnoremap TT :call T(0)<CR>.
标签: vim