Ответ 1
Команда gnu wc имеет опцию -L - max-line length, которая выводит максимальную длину строки файла. См. gnu man wc. У freebsd wc также есть -L, но не - длина макс длины, см. 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
Спасибо, что это было весело.