簡體   English   中英

如何在當前行的開頭顯示垂直規則?

[英]How to show a vertical rule at the beginning of the current line?

我正在尋找一種方式在vim中輕松可視化python代碼的各種縮進級別。 如果在當前行的開頭始終存在垂直規則,則會有所幫助。 這樣我就可以掃描代碼以查看當前塊的結束位置。 有沒有插件可以做到這一點?

您可以簡單地模擬縮進指南。 在我看來,它更簡單,更有效。 請查看我對縮進指南問題的 回答

首先想到的是,您可以從實現代碼折疊的插件中受益。

這是一個帶有示例教程 (向下滾動到“代碼折疊”),它建議使用vim“高效python折疊”插件

截圖
(來源: dancingpenguinsoflight.com

在vim中(不需要插件):

:設置列表

默認情況下會將標簽顯示為“^ I”,將EOL顯示為“$”。

:set lcs = tab:>>

你將'^ I'設置為'>'(通過以下方式查看更多信息:help listchars)。

我不確定,但應該有另一個選項來設置標簽寬度。

你也可以訂

:設置autoindent

對於python

我認為你正在尋找的命令是“colorcolumn”,我認為這是vim 7.2或7.3的新功能。

您可以使用自動命令觸發器CursorMoved進行操作

autocmd CursorMovedI * set colorcolumn=match(getline("."),"\S")

您可能必須使用中間變量等來使用它。

這將做什么(如果適當地埋在一個函數內),將一條垂直線放在當前行的起始字符處。 這可能很方便,但應該只能進行切換。

編輯:事實證明這比我原先想象的要復雜一些。 基本上你必須消除文字標簽的影響(如果它們出現在你的文件中)

autocmd CursorMoved * let &colorcolumn=matchend(substitute(getline("."),'\t',repeat(" ",&ts),'g'),"\\S")

當我第一次把它放在一起時,我覺得它很傻,但只是玩了幾分鍾,我就像效果一樣。

請注意,您可能需要或可能不需要CursorMovedI版本。

您可以為它定義自己的語法項(或使用匹配項)。 快速而骯臟的解決方

let colors=["red", "white", "yellow", "green", "blue"]
let matchids=[]
for level in range(1, len(colors))
    execute "hi IndentLevel".level." ctermbg=".colors[level-1]." guibg=".colors[level-1]
    call add(matchids, matchadd('IndentLevel'.level, '^   '.repeat('    ', level-1).'\zs '))
endfor

這將突出顯示具有不同顏色的五個第一縮進級別。

要禁用:

while !empty(matchids)
    call matchdelete(remove(matchids, 0))
endwhile

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM