рдЙрдиреНрдирдд VIM рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди

рд╕рдВрдкрд╛рджрдХ рдХреЗ рдкреНрд░рднрд╛рд╡реА рдЙрдкрдпреЛрдЧ рдХреЗ рдирд┐рдпрдореЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ - рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдЯрд╛рдЗрдкрд┐рдВрдЧ рдкрд░ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рдХреНрдпрд╛ рдЦрд░реНрдЪ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕реЗ рд╕реБрдзрд╛рд░реЗрдВред
рдЬреИрд╕рд╛ рдХрд┐ рдЕрднреНрдпрд╛рд╕ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ, рдЕрдХреНрд╕рд░ рдЗрд╕ рд╕рдВрдкрд╛рджрдХ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рддрдХ рд╕реАрдорд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рдлрд┐рд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮреЛрдВ рдХреА рд╕рд▓рд╛рд╣ рдкрд░ рдХрд┐рд╕реА рддрд░рд╣ рдХрд╛ рдкреНрд▓рдЧ-рдЗрди рдореЗрдЧрд╛-рдкреИрдХ рд▓рдЧрд╛рдпрд╛, рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рд╕реВрдЯ рдХрд░рддрд╛ рд╣реИ, рд╕рд┐рд╡рд╛рдп ... рдкрд╣рд▓реЗ, рджреВрд╕рд░реЗ, рддреАрд╕рд░реЗ ...
рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЕрдкрдиреЗ рд╕рдВрдкрд╛рджрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдмрдврд╝рд╛рдиреЗ рдХреА рдЕрд╕реАрдо рдХреНрд╖рдорддрд╛ рдХреА рдЦреЛрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рд╡рд┐рдо рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдЙрдиреНрдирдд рддрд░реАрдХреЗ рд╕реЗ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛ред
рд╣рдо рдЖрдкрдХреЗ рд╕рд╛рде рдЖрдВрддрд░рд┐рдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ рдФрд░ рд╕рдордЭреЗрдВрдЧреЗ рдХрд┐ рдЗрд╕рдореЗрдВ рдХреБрдЫ рднреА рднрдпрд╛рдирдХ рдирд╣реАрдВ рд╣реИ, рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛ред
рдпрд╣ рд╕рд╛рдордЧреНрд░реА рд╡рд┐рдо рд╕рдВрдкрд╛рджрдХ рдХреЗ рдХрд╛рдлреА рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рдЧрдИ рд╣реИред рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдВрдкрд╛рджрдХ рдореЛрдб, рдмрдлрд╝рд░реНрд╕, рд╡рд┐рдВрдбреЛ рдХреНрдпрд╛ рд╣реИрдВред рд▓реЗрдЦ "рдПрдХ рдЕрдзреНрдпрд╛рдп - рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдиреБрд╕реНрдЦрд╛ - рднрд╛рд╖рд╛ рдХреА рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдПрдХ рд╡рд┐рд╡рд░рдг" рдХреА рд╢реИрд▓реА рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред


рдЗрддрд┐рд╣рд╛рд╕ рдмрджрд▓реЛ рдпрд╛ рдлрд┐рд░ рдмрдпрд╛рди


рдпрд╣рд╛рдБ рд╡рд┐рдХрд▓реНрдк рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ vimrc рдореЗрдВ if рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ
if version >= 700 set history=64 set undolevels=128 set undodir=~/.vim/undodir/ set undofile set undolevels=1000 set undoreload=10000 endif 

рдХреЛрдб рдХреЗ рдЗрд╕ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рдХреБрдЫ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬреЛ рдХрд┐ рд╕рдВрд╕реНрдХрд░рдг 7.00 рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ: рдЬрдм рдЖрдк рд╕рдВрдкрд╛рджрдХ рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддреЗ рд╣реИрдВ (рдпрд╛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд╡рд░реНрддрдорд╛рди рдмрдлрд░), рддреЛ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ UNDO-REDO рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕ рдЦреЛ рдЧрдпрд╛ рдерд╛ред 7.00 рд╕реЗ рд╢реБрд░реВ рдХрд░рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдкрд╣рд▓реЗ рд╕реЗ рдЦреЛрд▓реЗ рдЧрдП рдмрдлрд░ рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛ рдХреА рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЗрд╕ рдХрд╣рд╛рдиреА рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдерд╛ред
рдпрд╣реА рд╣реИ, рдЕрдм рдЖрдк рдмрдлрд░ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдЦрд┐рдбрд╝рдХреА рдХреЛ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдВрдкрд╛рджрдХ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╕реЗ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓рдиреЗ рд╕реЗ рдЖрдкрдХреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕ рдмрд╣рд╛рд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдЬрд▓реНрджреА рд╕реЗ рдмрдлрд╝рд░реНрд╕ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ рдпрд╛ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдПрдВ


рд▓реЛрдбреЗрдб рдмрдлрд╝рд░реНрд╕ рдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рддреНрд╡рд░рд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓рдЧрд╛рддрд╛рд░ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИ: bn ,: bp ,: b #ред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдПрдВрдЧреЗ рдФрд░ рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд╣реЙрдЯ рдХреАрдЬрд╝ рдкрд░ рд▓рдЯрдХрд╛рдПрдВрдЧреЗред
 function! ChangeBuf(cmd) if (&modified && &modifiable) execute ":w" endif execute a:cmd endfunction nnoremap <silent> <Co> :call ChangeBuf(":b#")<CR> nnoremap <silent> <Cn> :call ChangeBuf(":bn")<CR> nnoremap <silent> <Cp> :call ChangeBuf(":bp")<CR> 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдпрджрд┐ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдХрдорд╛рдВрдб: bn ,: bp, b # рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдФрд░ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рдЗрд╕реЗ рд╕рд╣реЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЬреЛ рдпрд╣ рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ рдФрд░ рдХреНрдпрд╛ рдЗрд╕реЗ рдмрд┐рд▓реНрдХреБрд▓ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣рд╛рдВ рд╣рдо рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рддрд░реНрдХ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдмрдлрд╝рд░реНрд╕ рдХреЛ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл рдЙрди рдЖрджреЗрд╢реЛрдВ рдХреЛ рд▓реЗ рдЬрд╛рдПрдЧрд╛ред
nnoremap рдХрд┐рд╕реА рднреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдХреБрдВрдЬреА рд╕рдВрдпреЛрдЬрди рдХрд╛ рдПрдХ рдмрдВрдзрди рдмрдирд╛рддрд╛ рд╣реИред рдЗрдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рджрдмрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЙрдЬрд┐рдХ \ <рд╕рд╛рдЗрд▓реЗрдВрдЯ \ _ рд╣реИред

рдпрд╣рд╛рдБ рд╣рдореЗрдВ .vrcrc рдореЗрдВ рдЪрд░ рдкрд░ рдХреБрдЫ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН, рдЙрдирдореЗрдВ рд╕реЗ рд▓рдЧрднрдЧ рд╕рднреА рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрд╕рд░реНрдЧ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВ, рдПрдХ рдмреГрд╣рджрд╛рдиреНрддреНрд░ рджреНрд╡рд╛рд░рд╛ рдирд╛рдо рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЙрдкрд╕рд░реНрдЧ рдХрд╛ рдЕрд░реНрде рд╣реИ рджрд╛рдпрд░рд╛ред рдпрд╣рд╛рдБ рдореБрдЦреНрдп рдЙрдкрд╕рд░реНрдЧ рд╣реИрдВ:
a: var - рдлрд╝рдВрдХреНрд╢рди рддрд░реНрдХ
b: var - рдХрд░рдВрдЯ рдмрдлрд░ рдХреЗ рд▓рд┐рдП рд╡реЗрд░рд┐рдПрдмрд▓
g: var - рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░
l: var - рдлрд╝рдВрдХреНрд╢рди рдмреЙрдбреА рдореЗрдВ рдШреЛрд╖рд┐рдд рдПрдХ рд╡реИрд░рд┐рдПрдмрд▓
v: var - рд╡реИрд╢реНрд╡рд┐рдХ рдХреЛ рд╡рд┐рдо рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рд╣реА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

рдмрдлрд░ рд╕реВрдЪреА рдпрд╛ рд▓реВрдк рдХреЗ рд▓рд┐рдП


рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдорд╛рдВрдб рджреНрд╡рд╛рд░рд╛ рдмрдлрд╝рд░реНрд╕ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ: ls, рдпрджрд┐ рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдХрд┐ рдЖрдЙрдЯрдкреБрдЯ рдорд▓реНрдЯреА-рд▓рд╛рдЗрди рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдЦреБрд▓реЗ рдмрдлрд╝рд░реНрд╕ рдХреА рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реВрдк рдХреЗ рд╕рд╛рде рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗред рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХрд╛ рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╡рд┐рдзрд┐ рд╕рд╣рд┐рдд рдХрд╣реАрдВ рднреА рдХреЙрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЬрдм рдЖрдк рд╡рд░реНрддрдорд╛рди рдмрдлрд░ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ, рддреЛ рдЕрдиреНрдп рдЦреБрд▓реЗ рдмрдлрд╝рд░реНрд╕ рдХреА рдПрдХ рд╕реВрдЪреА рддреБрд░рдВрдд рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рдПрдЧреАред
 function! BufList() let status = "" for i in range(1, last_buffer_nr()+1) if bufnr("%") == i let status = status . ' ' . '[' . bufname(i) . ']' "  continue endif if buflisted(i) let status = status . ' ' . bufname(i) endif endfor return status endfunction 

рдпрд╣рд╛рдБ рд╣рдо рдХреЗрд╡рд▓ рдЦреБрд▓реЗ рдмрдлрд╝рд░реНрд╕ рдХреА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдПрдХ рд▓рд╛рдЗрди рдмрдирд╛рддреЗ рд╣реИрдВред рд╡рд░реНрдЧ рдХреЛрд╖реНрдардХ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдмрдлрд░ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред
рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реВрдк рдХреЗ рд▓рд┐рдП рд▓реВрдк рд╕рдорд╛рди рдкрд╛рдпрдерди рд╕реЗ рд▓реВрдк рдХреЗ рд╕рдорд╛рди рд╣реИ

рдпрд╣рд╛рдБ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рд╡рд┐рдо рд╕рдВрдкрд╛рджрдХ рдХреЗ рдХрдИ рдХрд╛рд░реНрдп рддрдерд╛рдХрдерд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрддреЗ рд╣реИрдВред Bufnr () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреАрдХ "%" - рд╡рд░реНрддрдорд╛рди рдмрдлрд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рджреЗрдЧрд╛, "$" - рдЕрдВрддрд┐рдо рдмрдлрд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рджреЗрдЧрд╛ред рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП, рдпрд╣ рджреЗрдЦрдирд╛ рдмреЗрд╣рддрд░ рд╣реИ: func () рдореЗрдВ рдорджрдж рдХрд░реЗрдВ


рд╡рд░реНрддрдорд╛рди рдмрдлрд░ рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпрд╛ рдбреЗрдЯрд╛ рдкрдврд╝рдирд╛


рдореИрдВ рдЕрдХреНрд╕рд░ рдирдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реВрдВред рдФрд░ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рддреБрд░рдВрдд рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рд╣реЛ рд╕рдХрддреА рд╣реИред
 function ModeChange() if getline(1) =~ "^#!" if getline(1) =~ "bin/" silent !chmod a+x <afile> endif endif endfunction au BufWritePost * call ModeChange() 

рдпрд╣рд╛рдВ рд╣рдо рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдкрдврд╝рддреЗ рд╣реИрдВ, рдФрд░ рдЕрдЧрд░ рдпрд╣ '#!' рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдФрд░ рдЗрд╕рдореЗрдВ 'рдмрд┐рди /' рд╣реИ, рдлрд┐рд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдмрдирд╛рдПрдВред рдмрд╛рдж рд╣рдо BufWritePost рдЗрд╡реЗрдВрдЯ рдкрд░ рдСрдЯреЛ рдХрдорд╛рдВрдб рд▓рдЯрдХрд╛рддреЗ рд╣реИрдВред

рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддреИрдпрд╛рд░ рдХрд░реЗрдВ рдпрд╛ рд╡рд░реНрддрдорд╛рди рдмрдлрд░ рдореЗрдВ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ


рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдкрд┐рдЫрд▓реЗ рдПрдХ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рдпрджрд┐ рд╣рдо рдЕрдЬрдЧрд░ рдореЗрдВ рдПрдХ рдирдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЗрд╕рдореЗрдВ рдПрдХ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореБрдЦреНрдп рдХрд╛рд░реНрдп, рдХреБрдЫ рдЖрдпрд╛рдд рдФрд░ рджреБрднрд╛рд╖рд┐рдпрд╛ рдкрд░рд┐рднрд╛рд╖рд╛ рд░реЗрдЦрд╛ред рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░реЗрдВред
 function! WritePyinit() let @q = " \#\!/usr/bin/env python\n\#-*- encoding: utf-8 -*-\n\nimport sys, warnings\n\nwarnings.simplefilter('always')\n\ndef main(argv=sys.argv):\n pass\n\nif __name__ == \"__main__\":\n sys.exit(main())\n" execute "0put q" endfunction autocmd BufNewFile *.py call WritePyinit() 

рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдирдИ * .py рдлрд╝рд╛рдЗрд▓ рд╣реИ, рддреЛ рдорд╛рдирдХ рдХреЛрдб рдЗрд╕рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ред
рдирдИ test.py рдлрд╝рд╛рдЗрд▓
 #!/usr/bin/env python #-*- encoding: utf-8 -*- import sys, warnings warnings.simplefilter('always') def main(argv=sys.argv): pass if __name__ == "__main__": sys.exit(main()) 



рдкрд╛рдпрдерди рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рд╛рде рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреНрд░рд▓реЗрдЦрди рдпрд╛ vimrc рд▓рд┐рдЦрдирд╛


рдпрд╣ рд▓реЗрдЦ рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдпрджрд┐ рдореИрдВрдиреЗ рдпрд╣ рдирд╣реАрдВ рджрд┐рдЦрд╛рдпрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдореЗрдВ .vimrc рдХреИрд╕реЗ рдбрд╛рд▓реЗрдВред рдореИрдВ рдЗрд╕реЗ рдкрд╛рдпрдерди рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ред
рдХреЛрдб рдХреЛ рдкреНрд░рд▓реЗрдЦрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдкрд╛рдпрдерди рдореЗрдВ, рдкреНрд░рд▓реЗрдЦрди рдХреЛ рдЕрдХреНрд╕рд░ рдбреЙрдХрд╕реНрдЯреНрд░реАрдо рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдЗрдП рд╣рдо рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░, рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рд╕реЗ, рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрд╕ рд╕реНрдерд╛рди рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдкреНрд░рд▓реЗрдЦрди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдСрдЯреЛ рдкреНрд░рд▓реЗрдЦрди
 function! WriteDocstrings() python <<EOF import vim import re linenr = vim.current.window.cursor[0] indentr = vim.current.window.cursor[0] line = vim.current.line n = 0 for i in line: if i != ' ': break n += 1 if len(line) == 0: n = 0 vim.current.buffer.append(' '*n + ' '*4 + '"""', linenr) vim.current.buffer.append(' '*n + ' '*4 + '', linenr) vim.current.buffer.append(' '*n + ' '*4 + '"""', linenr) vim.current.window.cursor = (vim.current.window.cursor[0]+2, n+4) EOF endfunction 

рдлрд┐рд░, рдХреБрдЫ рднреА рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рд╕рд╛рдзрд╛рд░рдг рд╣реЗрд░-рдбреЙрдХреНрд╕ред
рдпрд╣рд╛рдВ рд╣рдо рдкрд╛рдпрдерди рд╡рд┐рдо рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрд╛рдж, рд╡рд░реНрддрдорд╛рди рдмреНрд▓реЙрдХ рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВ, рд╡рд╣рд╛рдВ рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрди рдбрд╛рд▓реЗрдВ рдФрд░ рдХрд░реНрд╕рд░ рдХреЛ рднрд╡рд┐рд╖реНрдп рдХреЗ рдкреНрд░рд▓реЗрдЦрди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд▓реЗ рдЬрд╛рдПрдВред

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЗрд╕ рдХреЛрдб рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╡рд┐рдо рдореЗрдВ рдЕрдЬрдЧрд░ рд╕рдорд░реНрдерди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдк рдЗрд╕реЗ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
 vim --version | grep '+python' 

рдЕрдЧрд░ рд╕рдорд░реНрдерди рд╣реИ, рддреЛ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдЖрдкрдХреЛ рдпрд╛ рддреЛ рд╡рд┐рдо рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдпрд╛ рджреВрд╕рд░реЗ рдкреИрдХреЗрдЬ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдбреЗрдмрд┐рдпрди / рдЙрдмрдВрдЯреВ / рдЯрдХрд╕рд╛рд▓ рдкрд░, рдореИрдВ рд╡рд┐рдо-рдиреЙрдХреНрд╕ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ
 apt-get install nox 



рдирд┐рд╖реНрдХрд░реНрд╖


рд▓реЗрдЦ рдХрд╛рдлреА рдмрдбрд╝рд╛ рдирд┐рдХрд▓рд╛ред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рджрд┐рдЦрд╛рдпрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдмрд╣реБрдд рдХрдо рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдм, рдЙрдиреНрдирдд рд╕рдВрдкрд╛рджрдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдореВрд▓ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддреЗ рд╣реБрдП, рдЖрдк рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рдкрд░рд┐рд╡рд░реНрдзрди рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЪрдпрдирд┐рдд рдкрд╛рда рдХреЗ рдмреНрд▓реЙрдХ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдирд╛, рдХрд┐рд╕реА рднреА рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкреНрд░рд▓реЗрдЦрди рдЦреЛрд▓рдирд╛ред

рдЙрдкрдпреЛрдЧреА рд╕рд╛рдордЧреНрд░реА рдХреА рд╕реВрдЪреА

рд╡рд┐рдо рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ
рд╣рд╛рдЗрдкрд░рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде VIMDOC
рдкрд╛рдпрдерди рд╡рд┐рдо рдореЙрдбреНрдпреВрд▓ рдкреНрд░рд▓реЗрдЦрди

UPD1: vimrc рдЦреБрд▓реА рд╣реБрдИ
 " " Comments/uncomments strings and selected text " When buffer changing try to save it " Convinient view of statusline " AutoResave sessions on exit " Auto settings for DJANGO omni completion " "Mapped Keys " Mode Combination Description " N <Cn> Next buffer with saving if possible " N <Cp> Prev buffer with saving if possible " N <Co> Last viewed buffer " N <Ce> Clear highlighting after searching " I <Cq> Set normal mode " N <Cc> Comment Lines " N <Cu> Uncomment Lines " I <C-Space> Show popup menu OmniCompletion " I <Tab> If popupmenu is showed list it elements " NIV <F5> Bonding Mode(useful when pasting from X-buffer) " I <Ah> Left in insert mode " I <Aj> Down in insert mode " I <Ak> Up in insert mode " I <Al> Right in insert mode " N ,p Paste after " N ,P Paste before " N <Cj> Down in long line " N <Ck> Up in long line " V <Cc> Comment Line " V <Cu> Uncomment Line filetype on filetype plugin on set tabstop=4 set shiftwidth=4 set smarttab set expandtab set softtabstop=4 set autoindent let python_highlight_all = 1 set t_Co=256 autocmd FileType html,xhtml,xml,htmldjango,htmljinja,eruby,mako setlocal noexpandtab autocmd FileType *.py set tw=80 autocmd FileType python nnoremap <Ca> :call WriteDocstrings()<CR> "nnoremap <Ca> :call WriteDocstrings()<CR> autocmd BufWritePre *.py normal m`:%s/\s\+$//e `` autocmd BufRead *.py set smartindent cinwords=if,elif,else,for,while,try,except,finally,def,class autocmd BufNewFile *.py call WritePyinit() autocmd VimLeave * !reset set nu set ruler set mousehide syntax on set backspace=indent,eol,start whichwrap+=<,>,[,] set showtabline=0 set foldcolumn=1 set wrap set linebreak set nobackup set noswapfile set encoding=utf-8 set fileencodings=utf8,cp1251 "Searchig options set showmatch set hlsearch set incsearch "Layouts set fencs=utf-8,cp1251,koi8-r,ucs-2,cp866 "memory, history, undotree if version >= 700 set history=64 set undolevels=128 set undodir=~/.vim/undodir/ set undofile set undolevels=1000 set undoreload=10000 endif "Sessions -   , . set sessionoptions=buffers,tabpages,help,blank,globals,localoptions,sesdir,slash,options function! SaveSession(...) if v:this_session != "" function Tmp(filename) execute ":mksession! ".v:this_session endfunction autocmd VimLeavePre * :call Tmp("xxx") endif endfunction au SessionLoadPost * :call SaveSession() "Titles, statuses set laststatus=2 set showtabline=2 set title set statusline=%1*%m%*%2*%r%*%3*%h%w%*%{expand(\"%:p:~\")}\ %< set statusline+=%=Col:%3*%03c%*\ Ln:%3*%04l/%04L%* set statusline+=%(\ File:%3*%{join(filter([&filetype,&fileformat!=split(&fileformats,\",\")[0]?&fileformat:\"\",&fileencoding!=split(&fileencodings,\",\")[0]?&fileencoding:\"\"],\"!empty(v:val)\"),\"/\")}%*%) set titlestring=%t%(\ %m%)%(\ %r%)%(\ %h%)%(\ %w%)%(\ (%{expand(\"%:p:~:h\")})%)\ -\ VIM "autocmd VimLeavePre * silent mksession! ~/.vim/lastSession.vim "autocmd VimEnter * silent source! ~/.vim/lastSession.vim """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" set langmap=q,w,e,r,t,y,u,i,o,p,[,],a,s,d,f,g,h,j,k,l,\\;,',z,x,c,v,b,n,m,\\,,.,`,Q,W,E,R,T,Y,U,I,O,P,{,},A,S,D,F,G,H,J,K,L,:,\\",Z,X,C,V,B,N,M,<,>,~ "Buffers function! ChangeBuf(cmd) if (&modified && &modifiable) execute ":w" endif execute a:cmd endfunction nnoremap <silent> <Co> :call ChangeBuf(":b#")<CR> nnoremap <silent> <Cn> :call ChangeBuf(":bn")<CR> nnoremap <silent> <Cp> :call ChangeBuf(":bp")<CR> nnoremap <C-CR> O<ESC>j inoremap <Cq> <ESC> nnoremap <Ce> :nohlsearch<CR> inoremap <Ce> <ESC>I inoremap <Ca> <ESC>A function! BufList() let status = "" for i in range(1, last_buffer_nr()+1) if bufnr("%") == i let status = status . ' ' . '[' . bufname(i) . ']' continue endif if buflisted(i) let status = status . ' ' . bufname(i) endif endfor return status endfunction "Copy/Paste if has("clipboard") set clipboard=autoselect endif "Autoaddition set formatoptions-=o "scripting function ModeChange() if getline(1) =~ "^#!" if getline(1) =~ "bin/" silent !chmod a+x <afile> endif endif endfunction au BufWritePost * call ModeChange() if expand("%:t") =~ "py$" set makeprg=python endif if expand("%:t") =~ "sh$" set makeprg=/bin/bash endif if !has("gui_running") imap <C-@> <CX><CO> else imap <C-Space> <CX><CO> endif filetype plugin on set ofu=syntaxcomplete#Complete set complete=.,b,t,k,u,k set completeopt-=preview set completeopt+=longest autocmd FileType python set omnifunc=pythoncomplete#Complete autocmd FileType javascript set omnifunc=javascriptcomplete#CompleteJS autocmd FileType html set omnifunc=htmlcomplete#CompleteTags autocmd FileType css set omnifunc=csscomplete#CompleteCSS if expand("%:t") =~ "^.*\.py$" let $PYTHONPATH = fnamemodify("%", ":p:h:h") let $DJANGO_SETTINGS_MODULE = fnamemodify("%", ":p:h:t").".settings" endif set completeopt=longest,menuone "    "set paste "set nopaste "set invpaste set pastetoggle=<F5> "Folding set foldenable set foldmethod=syntax autocmd FileType tex set foldmethod=indent "  "color blackboard let g:solarized_termcolors=256 colorscheme solarized set background=dark "Remaps inoremap <Ah> <Co>h inoremap <Aj> <Co>j inoremap <Ak> <Co>k inoremap <Al> <Co>l nnoremap ,p o<ESC>p nnoremap ,P O<ESC>p nnoremap <Cj> gj nnoremap <Ck> gk " nnoremap <Cc> :call CommentLine()<cr> nnoremap <Cu> :call UnCommentLine()<cr> vmap <Cc> :call CommentLine()<cr> vmap <Cu> :call UnCommentLine()<cr> " function! WritePyinit() let @q = " \#\!/usr/bin/env python\n\#-*- encoding: utf-8 -*-\n\nimport sys, warnings\n\nwarnings.simplefilter('always')\n\ndef main(argv=sys.argv):\n pass\n\nif __name__ == \"__main__\":\n sys.exit(main())\n" execute "0put q" endfunction function! WriteDocstrings() if !has('python') echo "Error: Required vim compiled with +python" finish endif python <<EOF import vim import re linenr = vim.current.window.cursor[0] indentr = vim.current.window.cursor[0] line = vim.current.line n = 0 for i in line: if i != ' ': break n += 1 if len(line) == 0: n = 0 vim.current.buffer.append(' '*n + ' '*4 + '"""', linenr) vim.current.buffer.append(' '*n + ' '*4 + '', linenr) vim.current.buffer.append(' '*n + ' '*4 + '"""', linenr) vim.current.window.cursor = (vim.current.window.cursor[0]+2, n+4) EOF endfunction """""""""""""""" "  """""""""""""""" function __is_django_template() let l:a = getpos(".") if search("{\%.*\%}", '', line("$")) != 0 let b:b = cursor(l:a[1], l:a[2], "off") return 1 endif return 0 endfunction function RetFileType() let file_name = buffer_name("%") if file_name =~ '\.vim' return ["\"", ""] elseif __is_django_template() == 1 return ['{% comment %}' , '{% endcomment %}'] elseif file_name =~ '\.html$' || file_name =~ '\.xhtml$' || file_name =~ '\.xml' return ["<!--", "-->"] endif return ["#", ""] endfunction au BufEnter * let b:comment = RetFileType() function! CommentLine() let stsymbol = b:comment[0] let endsymbol = b:comment[1] execute ":silent! normal 0i" . stsymbol . "\<ESC>A" . endsymbol . "\<ESC>" endfunction function! UnCommentLine() let file_name = buffer_name("%") let stsymbol = b:comment[0] let endsymbol = b:comment[0] execute ":silent! normal :s/^\s*" . stsymbol . "//\<CR>" execute ":silent! normal :s/\s*" . endsymbol . "\s*$//\<CR>" endfunction let ropevim_vim_completion=1 function! CmdLine(str) exe "menu Foo.Bar :" . a:str emenu Foo.Bar unmenu Foo endfunction " From an idea by Michael Naumann function! VisualSearch(direction) range let l:saved_reg = @" execute "normal! vgvy" let l:pattern = escape(@", \/.*$^~[]) let l:pattern = substitute(l:pattern, "\n$", "", "") if a:direction == b execute "normal ?" . l:pattern . "^M" elseif a:direction == gv call CmdLine("vimgrep " . /. l:pattern . / . **/*.) elseif a:direction == f execute "normal /" . l:pattern . "^M" endif let @/ = l:pattern let @" = l:saved_reg endfunction "Basically you press * or # to search for the current selection vnoremap <silent> * :call VisualSearch('f')<CR> vnoremap <silent> # :call VisualSearch('b')<CR> vnoremap <silent> gv :call VisualSearch('gv')<CR> "PYDOC if exists('*s:ShowPyDoc') && g:pydoc_perform_mappings call s:PerformMappings() finish endif if !exists('g:pydoc_perform_mappings') let g:pydoc_perform_mappings = 1 endif if !exists('g:pydoc_highlight') let g:pydoc_highlight = 1 endif if !exists('g:pydoc_cmd') let g:pydoc_cmd = 'pydoc' endif if !exists('g:pydoc_open_cmd') let g:pydoc_open_cmd = 'split' endif setlocal switchbuf=useopen highlight pydoc cterm=reverse gui=reverse function s:ShowPyDoc(name, type) if a:name == '' return endif if g:pydoc_open_cmd == 'split' let l:pydoc_wh = 10 endif if bufloaded("__doc__") let l:buf_is_new = 0 if bufname("%") == "__doc__" " The current buffer is __doc__, thus do not " recreate nor resize it let l:pydoc_wh = -1 else " If the __doc__ buffer is open, jump to it silent execute "sbuffer" bufnr("__doc__") let l:pydoc_wh = -1 endif else let l:buf_is_new = 1 silent execute g:pydoc_open_cmd '__doc__' if g:pydoc_perform_mappings call s:PerformMappings() endif endif setlocal modifiable setlocal noswapfile setlocal buftype=nofile setlocal bufhidden=delete setlocal syntax=man silent normal ggdG " Remove function/method arguments let s:name2 = substitute(a:name, '(.*', '', 'g' ) " Remove all colons let s:name2 = substitute(s:name2, ':', '', 'g' ) if a:type == 1 execute "silent read !" g:pydoc_cmd s:name2 else execute "silent read !" g:pydoc_cmd "-k" s:name2 endif normal 1G if exists('l:pydoc_wh') && l:pydoc_wh != -1 execute "silent resize" l:pydoc_wh end if g:pydoc_highlight == 1 execute 'syntax match pydoc' "'" . s:name2 . "'" endif let l:line = getline(2) if l:line =~ "^no Python documentation found for.*$" if l:buf_is_new execute "bdelete!" else normal u setlocal nomodified setlocal nomodifiable endif redraw echohl WarningMsg | echo l:line | echohl None else setlocal nomodified setlocal nomodifiable endif endfunction " Mappings function s:PerformMappings() nnoremap <silent> <buffer> <Leader>pw :call <SID>ShowPyDoc('<CR><CW>', 1)<CR> nnoremap <silent> <buffer> <Leader>pW :call <SID>ShowPyDoc('<CR><CA>', 1)<CR> nnoremap <silent> <buffer> <Leader>pk :call <SID>ShowPyDoc('<CR><CW>', 0)<CR> nnoremap <silent> <buffer> <Leader>pK :call <SID>ShowPyDoc('<CR><CA>', 0)<CR> " remap the K (or 'help') key nnoremap <silent> <buffer> K :call <SID>ShowPyDoc(expand("<cword>"), 1)<CR> endfunction if g:pydoc_perform_mappings call s:PerformMappings() endif " Commands command -nargs=1 Pydoc :call s:ShowPyDoc('<args>', 1) command -nargs=* PydocSearch :call s:ShowPyDoc('<args>', 0) 

Source: https://habr.com/ru/post/In165723/


All Articles