Команда Gnu wc имеет опцию -L --max-line-length, которая печатает максимальную длину строки файла. См. GNU Man WC . У freebsd wc также есть -L, но не --max-line-length, см. freebsd man wc .
Как использовать их из vim? Команда:
:%!wc -L
Отфильтрует открытый файл через wc -L и сделает содержимое файла максимальной длиной строки.
Чтобы сохранить содержимое файла и поместить максимальную длину строки в первую строку, выполните:
:%yank
:%!wc -L
:put
Вместо использования wc, Найти длину самой длинной строки - awk bash описывает, как использовать awk, чтобы найти длину самой длинной строки.
Хорошо, теперь для чистого решения Vim. Я немного новичок в написании сценариев, но здесь идет. Дальнейшее основано на функции FilterLongestLineLength из textfilter .
function! PrependLongestLineLength ( )
let maxlength = 0
let linenumber = 1
while linenumber <= line("$")
exe ":".linenumber
let linelength = virtcol("$")
if maxlength < linelength
let maxlength = linelength
endif
let linenumber = linenumber+1
endwhile
exe ':0'
exe 'normal O'
exe 'normal 0C'.maxlength
endfunction
command PrependLongestLineLength call PrependLongestLineLength()
Поместите этот код в файл .vim (или в ваш .vimrc) и: укажите исходный файл. Затем используйте новую команду:
:PrependLongestLineLength
Спасибо, понять это было весело.