[英]How do I debug vim indentexpr script?
我已經下載了一個看起來非常全面的 verilog/systemverilog 縮進文件。 但是,有一個問題:它不起作用。 我正在查看 vimscript 代碼並希望修復它(我在 vim 8.2 上,可能存在版本不匹配)以及增強它。 但是,我遇到了調試問題。 具體來說,indentexpr 腳本有一個變量 v:lnum,它在按下 indentkey 並評估 indentexr 時設置。
但是,我不知道僅在 indentexpr 調用上進入調試模式的方法。 我嘗試在 vimscript 中手動調用 function ,但這將 v:lnum 作為一些垃圾編號(好吧,調用 indentexpr 的最后一行)。 當我實際按下調用 indentexpr 的鍵時,有沒有辦法進入調試模式?
使用v:lnum
的最佳方式是作為 function 的參數。 這是一個例子:vim-ruby 的 indentexpr 設置曾經看起來像這樣:
setlocal indentexpr=GetRubyIndent()
在 function 內部,變量v:lnum
用於獲取調用它的行號。 正如您所發現的,這非常不方便。 所以,更好的方法是:
setlocal indentexpr=GetRubyIndent(v:lnum)
因此,在腳本中找到設置indentexpr
的位置並將其更改為將魔術v:lnum
變量作為參數。 然后,您可以重寫 function 本身以采用單個參數:
function! GetRubyIndent(lnum)
現在,在 function 中, a:lnum
變量將是行號,您可以使用該參數調用 function。 在 function 中的任何地方用a:lnum
搜索並替換v:lnum
。 縮進腳本現在應該像以前一樣工作,您將能夠使用行號手動調用 function。
這是在 vim-ruby 存儲庫中執行此操作的特定提交, 例如
此外, echomsg "foo"
將打印一條消息,之后您可以通過運行:messages
命令閱讀該消息。 我可以推薦Decho插件以獲得易於閱讀的調試消息。
使用我的 systemverilog 腳本。 這個沒有問題。 https://github.com/nachumk/systemverilog.vim
從https://www.vim.org/scripts/script.php?script_id=4743下載超過 13k
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.