Как показать вертикальное правило в начале текущей строки? - PullRequest
4 голосов
/ 28 августа 2010

Я ищу способ в vim легко визуализировать различные уровни отступа кода Python.Было бы полезно, если бы в начале текущей строки всегда было вертикальное правило.Таким образом, я могу отсканировать код, чтобы увидеть, где заканчивается текущий блок.Есть ли какие-нибудь плагины, которые делают это?

Ответы [ 5 ]

5 голосов
/ 28 августа 2010

Вы можете просто эмулировать направляющие отступов.Это проще и эффективнее, на мой взгляд.Пожалуйста, посмотрите на мой ответ на вопрос о направляющих отступов .

1 голос
/ 28 августа 2010

Первое, что приходит на ум, - это то, что вы можете воспользоваться плагином, который реализует свертывание кода .

Вот учебник с примерами (прокрутите вниз до «Свертывание кода»), в котором рекомендуется использовать плагин «Эффективное складывание по python» для vim .

снимок экрана http://dancingpenguinsoflight.com/wp-content/uploads/2009/02/folded_functions.png

0 голосов
/ 28 августа 2010

Вы можете определить свои собственные элементы синтаксиса для него (или использовать совпадения).Быстрое и грязное решение:

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
0 голосов
/ 28 августа 2010

Я думаю, что вы ищете команду "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.

0 голосов
/ 28 августа 2010

в vim (плагины не нужны):

: заданный список

будет отображать вкладки как «^ I» и EOL как «$» по умолчанию.

с

: set lcs = tab: >>

вы бы установили '^ I' в '>' (подробнее об этом: help listchars).

Я не уверен, но должен быть другой вариант, чтобы установить ширину вкладки.

также вы можете установить

: установить автоматический отступ

для питона

...