Решил купить книжку в электронном виде — и автора поддержать, и не дорого, и на полке места не занимает, и не хлопотно, т.к. через смс. Опять же, ждать пока доблестные пираты ее отпиратят в бесплатной электронной библиотеке, где-нибудь в Эквадоре, не было желания.
Купил. На ЛитРесе.
Книжка стоит 31 рубль. ПОСЛЕ отправки смс увидел, что сама отправка стоит 100 рублей (сам дурак, да). НО! Со счета сняли, примерно, 210 рублей.
Бля.
Читая группу vim_use, узнал, что vim’овский omni completion (который есть простенький аналог intelliSense) умеет закрывать html тэги.
Пример:
<table> </<C-X><C-O>
<C-X><C-O> закроет table
Можно, конечно, использовать скрипт closetag.vim. Там, для закрытия тэга, писать </ не надо — это плюс. Правда его нужно устанавливать отдельно — это минус.
Я, скорее всего, откажусь от closetag’а и буду использовать omni completion.
Примерно так:
imap <C-_> </<C-X><C-O>
Нажимаешь <C-_> — открытый тэг закрыватся.
«Чтобы более-менее попадать ногами в музыку ее желательно знать» — как бы подумал я и в «энный» раз прослушал всего имеющегося Ди Сарли. Тут же принялся за Д’Ариенцо — его у меня оказалось в два раза меньше. Следующим будет Биаджи.
PS
Удивлен тем, как сильно изменились мои музыкальные вкусы всего за пару лет — от органического неприятия классической танго музыки до «очень сильно нравится!»
23730246.b7f3e64c77b18e0fe32e018d35354d7d.1217602370.8003665294ac7bb0dfccb1b73e2ea00a
Тем кто пишет на Лиспе (Схеме) в Виме может быть интересен скрипт, закрывающий открытые скобки (unbalanced parens). Ничего особенного в нем нет — со своей работой справляется. Однако функция s:isInLispExpression() тупая как пробка, ее нужно еще тюнить и тюнить.
" Lisp stuff {{{
"" Close parens
function! s:isInLispExpression(linenr) " {{{
let result = 1
if a:linenr < 0
let result = 0
else
let line = getline(a:linenr)
if line == ""
let result = 0
endif
endif
return result
endfunction " }}}
function! s:LispCountOpenedParens(line) "{{{
let unbalanced = 0
let idx = 0
while idx < len(a:line)
if a:line[idx] == '('
let unbalanced += 1
elseif a:line[idx] == ')'
let unbalanced -= 1
endif
let idx += 1
endwhile
return unbalanced
endfunction "}}}
function! s:LispCloseParens(linenr) "{{{
let unbalanced = 0
let lineidx = a:linenr
while s:isInLispExpression(lineidx)
let line = getline(lineidx)
let unbalanced += s:LispCountOpenedParens(line)
let lineidx -= 1
endwhile
if unbalanced > 0
execute "normal ".unbalanced."A)\<ESC>"
endif
endfunction "}}}
command! LISPCloseParens call <SID>LispCloseParens(line('.'))
map <Leader>) :LISPCloseParens<CR>
"" }}}
Upd.
Написал улучшенный вариант “балансировки” скобок.