Клуб пользователей редактора vim
 
[Most Recent Entries] [Calendar View] [Friends]

Below are the 4 most recent journal entries recorded in Клуб пользователей редактора vim's LiveJournal:

    Friday, May 12th, 2006
    3:20 pm
    [do_]
    http://www.vim.org/tips/tip.php?tip_id=1229

    При отладке VIM-скриптов, как в общем, и при любой отладке, время от времени приходится делать какие-то небольшие изменения в коде, потом снова запускать функцию, чтобы посмотреть, правильно ли она работает, потом снова делать изменения и т.п. Совершенно неудобно для этого каждый раз перезапускать VIM, но не очень удобно и каждый раз запускать скрипт из командной строки Ex.

    Так что предлагаю такой mapping, каковым пользуюсь сам:

    noremap <silent> <F9>   :exec  'source '.bufname('%')<CR>

    Можно прописывать его в vimrc, ежели, конечно, клавиша F9 ещё не занята, но еще лучше прописать следующее:

    noremap <silent><buffer> <F9>   :exec  'source '.bufname('%')<CR>

    в файл $VIMRUNTIME/ftplugins/vim.vim

    Тогда этот mapping будет работать только для VIM-скриптов, что правильно.

    Правда, к сожалению, я не в курсе, насколько идеологически правильно изменять самостоятельно vim.vim

    Upd:

    Тут нам пишут, что лучше прописать автокоманду в vimrc, чем изменять vim.vim:

    autocmd filetype vim :nmap    :exec  'source '.bufname('%')<CR>

    Пожалуй, да, так лучше.
    Friday, January 20th, 2006
    1:35 pm
    [do_]
    Compiler-скрипт для bash(само собой, он ничего не компилирует, просто находит синтаксические ошибки):


    " Vim Compiler File
    
    if exists("current_compiler")
            finish
    endif
    let current_compiler = "bash"
    
    if exists(":CompilerSet") != 2          " older Vim always used :setlocal
            command -nargs=* CompilerSet setlocal <args>
    endif
    
    let s:cpo_save = &cpo
    set cpo&vim
    
    CompilerSet makeprg=bash\ -n\ %
    CompilerSet errorformat=%f:\ line\ %l:\ %m
    
    let &cpo = s:cpo_save
    unlet s:cpo_save
    
    

    Thursday, December 22nd, 2005
    10:08 pm
    [do_]
    Генерация цветовой подсветки синтаксиса для LJ
    ..как известно, vim умеет генерить HTML-код для цветовой подсветки синтаксиса таким образом, что на итоговой страничке он выглядит так же, как в окне редактора. Всё бы хорошо, да вот незадача -- цвет фона и дефолтный цвет шрифа забиваются в атрибуты тэга <body>, и при копировании данного куска кода в LJ-пост эти цвета пропадают, что приводит порой к довольно неудобоваримым последствиям, если цвет фона редактора и цвет фона журнала не совпадают.

    Предлагаю небольшую функцию, которая решает данную проблему.


    fun! MyToHtml(line1, line2)
            exec a:line1.','.a:line2.'TOhtml'
            %g/<body/normal k$dgg
            %s/<body\s*\(bgcolor="\#[a-f0-9]\{6\}"\)\s*text=\("\#[a-f0-9]\{6\}"\)\s*>/<table><tr><td \1><font color=\2>/
            %s#</body>\(.\|\n\)*</html>#</font></td></tr></table>#i
    endf
    
    command -range=% MyToHtml :call MyToHtml(<line1>,<line2>)
    



    Теперь выделяете нужный кусок кода, и набираете :MyToHtml

    Ну, если ничего не выделить, то сгенерится страничка для всего буфера, само собой ;-/


    ..а вот тот же кусок кода, сгенерённый TOhtml без всякой дополнительной обработки, для сравнения:




    fun! MyToHtml(line1, line2)
            exec a:line1.','.a:line2.'TOhtml'
            %g/<body/normal k$dgg
            %s/<body\s*\(bgcolor="\#[a-f0-9]\{6\}"\)\s*text=\("\#[a-f0-9]\{6\}"\)\s*>/<table><tr><td \1><font color=\2>/
            %s#</body>\(.\|\n\)*</html>#</font></td></tr></table>#i
    endf
    
    command -range=% MyToHtml :call MyToHtml(<line1>,<line2>)
    




    я думаю, разница налицо ;-/
    Monday, December 5th, 2005
    2:45 pm
    [do_]
    Скрипт для автоматической генерации switch для данного enum
    Работает так: наводишь на имя enum, или на его член, или на переменную (глобальную или член класса) типа enum, и набираем
    :EnumToSwitch.Либо из меню можно выбрать. Если ничего не найдётся, то скрипт переспросит ещё раз.

    скрипт )

    Upd:

    Забыл сказать -- работает он только для 7.0 версии, которая пока альфа. Там просто слишком много добавлено в области скриптования, в частности типы List и Dictionary, возможность посмотреть спиок тагов и QuickFix list
About LJ.Rossia.org