Действительно ли возможно отобразить руководства по Добавлению отступа в Vim?

Я - давний пользователь Vim (3 или 4 года), кто недавно начал иметь дело с некоторым глубоко вложенным кодом. Этот код форматируется с пробелами, не вкладками. Я хотел бы некоторый чистый и ненедовольный признак добавления отступа помочь с отслеживанием, которого блока кода я нахожусь в том, когда я смотрю на что-то много уровней глубоко.

:set list 

Только вкладка дисплеев и endline символы. Я нашел один плагин (может казаться, не вскапывает его в данный момент), который выделит каждый уровень отступа в прогрессивно более темных цветах, но это визуально непривлекательно. Идеально я хотел бы видеть тонкие вертикальные строки на каждом уровне отступа. У многих новомодных редакторов есть эта функциональность, но я не готов разочароваться в Vim просто все же.

Кто-либо знает, как это может быть достигнуто?

45
задан ib. 12 December 2010 в 09:28
поделиться

4 ответа

Вы можете использовать вкладки для отображения направляющих отступа и удалить вкладки перед сохранением файла:

" use 4 spaces for tabs
set tabstop=4 softtabstop=4 shiftwidth=4

" display indentation guides
set list listchars=tab:❘-,trail:·,extends:»,precedes:«,nbsp:×

" convert spaces to tabs when reading file
autocmd! bufreadpost * set noexpandtab | retab! 4

" convert tabs to spaces before writing file
autocmd! bufwritepre * set expandtab | retab! 4

" convert spaces to tabs after writing file (to show guides again)
autocmd! bufwritepost * set noexpandtab | retab! 4
27
ответ дан 26 November 2019 в 20:50
поделиться

В соответствии с Reflector, StartRuntime.Cache не выполняет сериализацию данных, а просто сохраняет их в памяти в хэш-таблице .

Вы говорите, что переносите вызовы в кэш внутри вашего собственного одиночного объекта. Зачем ты это делаешь? StartRuntime.Cache является статическим свойством, поэтому методы оболочки также могут быть статическими.

-121--4435208-
String text = readFileAsString("textfile.txt").replace("\n","");

.replace возвращает новую последовательность, последовательности в Java являются неизменными.

-121--584773-

Будут показаны точки для указания уровня отступа при вводе. Точки волшебным образом исчезают, когда вы покидаете линию.

set list listchars=tab:»-,trail:·,extends:»,precedes:«

E.g:

def test():
....print('indentation level 1')

Довольно круто?

15
ответ дан 26 November 2019 в 20:50
поделиться

Попробуйте этот VIM плагин BlockHL . Он по-разному кодирует отступ каждого последовательного уровня.

EDIT:Какой ланагур вы используете? Этот плагин для языков в стиле С.

1
ответ дан 26 November 2019 в 20:50
поделиться

Вероятно, наиболее эффективным решением было бы "нарисовать" направляющие для отпечатков. используя спичечный фонарь. Чтобы понять, как это помогает, посмотрите на пример:

:match Search /\%(\_^\s*\)\@<=\%(\%1v\|\%5v\|\%9v\)\s/

It highlights (используя группу подсветки Search, можно использовать любые другие, конечно же) первое, пятое, девятое (и это можно продолжить). виртуальный столбец, занятый символом пробела, предшествующим ничего, кроме пробела от начало очереди. Таким образом, это приводит к четырёхпространственному выделению отступов. на три уровня в глубину.

Чтобы обобщить эту идею, остается только сгенерировать такой шаблон. упомянутые выше в соответствии с текущей пропускной способностью буфера textwidth и shiftwidth. (чтобы обрабатывать более глубокие уровни отступов и соответствующую ширину отступов). Эта задача может быть просто автоматически, как показано в функции ниже.

function! ToggleIndentGuides()
    if exists('b:indent_guides')
        call matchdelete(b:indent_guides)
        unlet b:indent_guides
    else
        let pos = range(1, &l:textwidth, &l:shiftwidth)
        call map(pos, '"\\%" . v:val . "v"')
        let pat = '\%(\_^\s*\)\@<=\%(' . join(pos, '\|') . '\)\s'
        let b:indent_guides = matchadd('CursorLine', pat)
    endif
endfunction

Каждый раз, когда вам нужны направляющие для отступов в буфере, он может быть включен с помощью :call ToggleIndentGuides(). Конечно, вы можете изменить группу подсветки (или создать специальный для использования только в направляющих для отступов), настроить удобный отображение1 для этого и/или вызов из autocmd для какого-нибудь файла. типы.


1 Руководства по отступам, выделяющие конфигурацию из моего .vimrc. Файл: https://gist.github.com/734422

15
ответ дан 26 November 2019 в 20:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: