我想在 Vim 中使用键盘快捷键将整个函数从 Powershell 文件复制到 Windows 剪贴板。这是它的命令:
1) va{Vok"*y
- 视觉模式,选择 {} 块,视觉线模式,转到选择顶部,包括标题行,拉到 Windows 剪贴板。
但它只适用于没有内部 {} 块的函数。这是一个有效的解决方法:
2) va{a{a{a{a{a{a{Vok"*y
- 与 (1) 相同,但多次选择 {} 块 - 适用于具有 7 个内部 {} 大括号的代码块。
但问题是 - 从 vim 函数调用 (1) 命令可以正常工作,但是 (2) 从 vim 函数调用时行为不端并选择了错误的代码块:
function! CopyCodeBlockToClipboard ()
let cursor_pos = getpos('.')
execute "normal" 'va{a{a{a{a{a{a{Vok"*y'
call setpos('.', cursor_pos)
endfunction
" Copy code block to clipboard
map <C-q> :call CopyCodeBlockToClipboard()<CR>
我在 CopyCodeBlockToClipboard 中做错了什么?(2) 命令在 vim 中直接执行时按预期工作。
更新:
我注意到:
- 如果有更多 a{ 则函数中包含的块
- 那么 vim 不会执行 V
看起来 vim 在这里处理错误的方式不同。额外的 a{ 会产生一些错误,并且常规命令执行会忽略它。但是通过 :normal 使用函数执行失败并且不会调用 V (或者可能是错误之后的任何命令)。
有什么解决方法吗?