Пара функций и команда (command) vim'а в помощь блоггеру.
Что они делают?
Меняют двойной минус и минус с пробелом по краям на неразрывный пробел с длинным тире ( —), кавычки «секунды» на кавычки «елочки».
Как этим пользоваться?
Скопировать код в свой .vimrc, открыть vim, написать:
Затем в коммандном режиме:
где
Что они делают?
Меняют двойной минус и минус с пробелом по краям на неразрывный пробел с длинным тире ( —), кавычки «секунды» на кавычки «елочки».
Как этим пользоваться?
Скопировать код в свой .vimrc, открыть vim, написать:
Привьет, менья зовут "E-Type" −- на здоровье!
Затем в коммандном режиме:
:HTMLLineRU<CR>
где
-- это нажатие на Enter.
Результатом команды будет окно с таким вот нехитрым содержимым:
Привьет, менья зовут «E-Type» — на здоровье!
Что в свою очередь вашим любимым браузером покажется как:
Привьет, менья зовут «E-Type» — на здоровье!
Сам код:
" HTML typo {{{
"" Convert text line to HTML line
function! HTMLLineRU(line)
"" convert to hello — world:
"" hello −- world
"" hello--world
"" hello - world
let patt = '\(\s*--\s*\)\|\( - \)\|\(\s*—\s*\)'
let line = substitute(a:line, patt, '\ \— ', "g")
"" «russian quotes»
"" convert "hello world" to «hello world»
let patt_match = '"\zs.\{-}\ze"'
let patt_subs = '".\{-}"'
let matched = matchstr(line, patt_match)
while matched != ""
let line = substitute(line, patt_subs, '\«'.escape(matched, '\&*[]?%').'\»', "")
let matched = matchstr(line, patt_match)
endwhile
let patt = '«'
let line = substitute(line, patt, '\«', "g")
let patt = '»'
let line = substitute(line, patt, '\»', "g")
return line
endfunction
function! HTMLLines(line1, line2)
let sourceLines = getline(a:line1, a:line2)
if bufloaded("scratch_html_lines")
:bdelete html_lines
endif
:new scratch_html_lines
:setlocal buftype=nofile
:setlocal noswapfile
let lineidx = 1
for line in sourceLines
call setline(lineidx, HTMLLineRU(line))
let lineidx+=1
endfor
endfunction
command! -range=% HTMLLineRU call HTMLLines(expand(<line1>), expand(<line2>))
" }}}
PS
По умолчанию обрабатывается весь текущий буфер, но можно выделить несколько строк и для них тоже все будет хорошо. :)
PPS
Достаточно легко можно добавить обработку мини wiki синтаксиса, например, чтобы *вот это вот* превращалось в вот это вот.
PPPS
Кто знает как заставить vim печь пироги? :)