2015-11-19 4 views
1

Я хотел бы vim обнаружить и сохранить количество прокомментированных строк (с префиксом #) с начала файла, а затем использовать переменную с сохраненным значением, чтобы изменить настройку vim в зависимости от файла.В Vim можно ли установить переменную на основе первых строк в открываемом файле?

Пример:

Если открыть этот файл:

# Comment here 
# and here 
file text starts here 

Я хочу переменную для хранения 2, а затем использовать это значение, чтобы установить, какая линия начать выделение на (в частности, с csv_headerline= в пакете csv-vim). Количество прокомментированных строк изменится с файла на файл.

Я думал, что может быть способ использовать autocmd и настроить мой .vimrc иметь vim взгляд через первые несколько строк файла перед его открытием, но я не могу понять, как это сделать.

+1

Возможно, что лучше, но вы можете '/^[^ #]' перейти к первой строке, которая не начинается с символа комментария, и 'echo line ('.')', Чтобы получить текущий номер строки, вычесть один. Но он сломается, если у вас пустые строки, комментарии смешаны с пустыми строками, затем код. – TessellatingHeckler

ответ

0

Руководствуясь @ комментарий TesselatingHeckler, я добавил следующее к моему .vimrc:

" Detect comments and identify the header line in csv-files                                       
autocmd Filetype csv /^[^#] " Place cursor on first non-comment line                                     
autocmd Filetype csv let b:csv_headerline=line('.') " Set cursor line as csv_headerline                                
autocmd Filetype csv CSVInit " Update vim.csv plugin to be aware of the new headerline                                

(При прохождении этих команд непосредственно vim -c я должен был написать line('.')+1, не уверен, почему).

До сих пор он работал только с прокомментированными строками в начале файла и сочетанием прокомментированных строк и пустых строк (ограниченное тестирование)!