Я боюсь Вы; d должны вырыть в исходный код плагина флэш-памяти. Одна опция была бы Скрежетом. Однако это, вероятно, стало бы довольно жестким.
Могло бы быть лучше проверить, понимают ли некоторые загрузчики флэш-памяти сайты, Вы хотите наблюдать и затем загрузить видео для офлайнового просмотра. Один пример такой программы cclive
. Вы, возможно, просто должны записать простую видеосвязь сценария из страницы.
Код не устанавливает никакого значения для пустой строки состояния, а просто действует, используя некоторые значения по умолчанию. См. src / screen.c
, функцию win_redr_status ()
. Показанные элементы основаны на функциях, скомпилированных в, поэтому, чтобы восстановить точную строку состояния, нужно будет взглянуть на функции, скомпилированные в. Может быть проще использовать пример строки состояния, приведенный в : h statusline
:
Examples:
Emulate standard status line with 'ruler' set
:set statusline=%<%f\ %h%m%r%=%-14.(%l,%c%V%)\ %P
] Как сказал @muru, не похоже, что возможно точно имитировать строку состояния по умолчанию, когда установлен statusline
, поскольку код для ее отображения делает вещи, которые не могут быть указаны в настройках statusline
. Однако можно получить довольно близкие результаты. Вот разумное приближение к тому, как выглядит строка состояния по умолчанию, когда включена линейка
:
:set statusline=%f\ %h%w%m%r\ %=%(%l,%c%V\ %=\ %P%)
Основное различие заключается в расположении номеров строк и столбцов. Если возможно смоделировать логику расстановки по умолчанию, я не смог найти способ сделать это. Возможно, это будет достаточно близко для ваших целей.
Я использую разделенную версию этого в моем собственном .vimrc
для размещения информации о строке состояния Syntastic в середине того, что выглядит как обычная строка состояния vim с линейкой:
" start of default statusline
set statusline=%f\ %h%w%m%r\
" NOTE: preceding line has a trailing space character
" Syntastic statusline
set statusline+=%#warningmsg#
set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*
" end of default statusline (with ruler)
set statusline+=%=%(%l,%c%V\ %=\ %P%)
:set statusline=%f\ %h%w%m%r%=%-14.(%l,%c%V%)\ %P
Хотя предложенное мной решение не сильно отличается от решения других ответов, я хотел бы поделиться более подробным объяснением.
Во-первых, давайте разберемся, как vim
рисует строку состояния. Ответственными функциями являютсяwin_redr_status()
и win_redr_ruler()
.
vim
принимает имя буфера , добавляет пробел , если за (следуют какие-либо флаги, такие как [Help]
, [Preview]
, [+]
,[RO]
). Затем ондобавляетфлаги.
Обычно для линейки выделяется 18 символьных ячеек . Если часть имени буфера не соответствует остальной части доступного пространства,vim
усекает его слева и добавляет <
в начале.
Если есть место для раскладки клавиатуры , она добавляется в конце(с выравниванием по правому краю ).
Итак, линейка. Он состоит из<row>,<col>-<virtcol>
части и относительного положения(с выравниванием по правому краю ).
Также существует ограничение, согласно которому часть с именем буфера должна занимать как минимум половину ширины .
Теперь возьмем значение, предложенное документами :
:set statusline=%<%f\ %h%m%r%=%-14.(%l,%c%V%)\ %P
где
%< - where to truncate the line if too long
%f - buffer name (path to a file, or something)
%h - help flag
%m - modified flag
%r - readonly flag
%= - separater between the left (buffer name) and the right (ruler) parts
%-14.(...%) - minimum field width == 14
%l - line
%c - column
%V - virtual column
%P - percentage
Таким образом, first %<
можно опустить, так как по умолчанию имя буфера обрезается в начале. Затем отсутствует флаг предварительного просмотра(%w
). Кроме того, когда окно имеет ширину менее 18 * 2
символов, правая часть занимает более половины строки состояния.
Итак,по крайней мере, мы можем опустить %<
и добавить%w
:
:set statusline=%f\ %h%w%m%r%=%-14.(%l,%c%V%)\ %P
Мы можем пойти дальше и убедиться, что правая часть не занимает больше половины строки состояния:
set statusline=%!MyStatusLine()
function! MyStatusLine()
let l:w = min([14,winwidth(0)/2-3])
return '%f %h%w%m%r%=%-'. l:w. '.(%l,%c%V%) %P'
endfunction
Затем мы можем сделать его зависимым от функций vim
было скомпилировано с .
if has("quickfix")
...
endif
Но я бы сказал, что это непрактично, и предыдущее решение было бы достаточно для большинства намерений и целей. Однако, если последнее решение вам не подходит, скажите мне, что не так, и я постараюсь придумать лучшее решение.
Проблема с решением, предложенным Лоуренсом Гонсалвесом, заключается в том, что если флагов нет, между левой и правой частями есть два пробела:
:set statusline=%f\ %h%w%m%r\ %=%(%l,%c%V\ %=\ %P%)