我想在Vim中使用鍵盤快捷鍵將整個函數從Powershell文件複製到Windows剪貼板。這裏是它的命令:將代碼函數複製到剪貼板的Vim函數
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中直接執行時按預期工作。
UPDATE:
我注意到:
- ,如果還有更多的是{然後在函數中包含塊
- 那麼Vim不會執行V
看起來vim在這裏處理錯誤的方式不同。額外{產生一些錯誤和常規命令執行忽略它。但是通過執行函數來執行:normal會失敗,並且不會調用V(或者可能跟隨錯誤的任何命令)。
針對此問題的任何解決方法?
從你想從功能任意位置做它的外觀。它是否正確? – FDinoff
是的。函數中任何使用{}大括號表示代碼塊的位置,並且總是使用一行代替函數頭。 – FallenGameR