h0rr0rr_drag0n 14.08.2009 23:00
klen 20.04.2010 15:06
Мой конфиг — еще один .vimrc
Ну и я приобщусь:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 |
" ------------------------------
" .vimrc klen <[email protected]>
" ------------------------------
" Setup
if !exists('s:loaded_my_vimrc')
" Don't reset twice on reloading - 'compatible' has SO many side effects.
set nocompatible " to use many extensions of Vim.
" Create special directory for backup and swap
if finddir($HOME.'/.data/') == ''
silent call mkdir($HOME.'/.data/')
endif
if finddir($HOME.'/.data/backup') == ''
silent call mkdir($HOME.'/.data/backup')
endif
set backup " make backup file and leave it around
set backupdir=$HOME/.data/backup " where to put backup file
set backupskip&
set backupskip+=svn-commit.tmp,svn-commit.<0-9>*.tmp
if finddir($HOME.'/.data/swap') == ''
silent call mkdir($HOME.'/.data/swap')
endif
set directory=$HOME/.data/swap " where to put swap file
if finddir($HOME.'/.data/sessions') == ''
silent call mkdir($HOME.'/.data/sessions')
endif
let g:session_dir = $HOME.'/.data/sessions'
endif
set hidden " не требовать сохранения буфера
set title " показывать имя файла в заголовке окна
set autoread " отслеживать изменения файлов
set visualbell " ошибки без писка
set modeline " читать параметры конфигурации из открытого файла
set magic " добавим магии
" Indent and tabulation
set autoindent " копирует отступ от предыдущей строки
set smartindent " включаем 'умную' автоматическую расстановку отступов
set expandtab " tab with spaces
set smarttab
set shiftwidth=4 " Размер сдвига при нажатии на клавиши << и >>
set softtabstop=4 " Табуляция 4 пробела
set shiftround " удалять лишние пробелы при отступе
" Backup and swap files
set history=400 " history length
set viminfo+=h " save history
set sessionoptions-=blank " dont save blank vindow
set sessionoptions-=options " dont save options
" Search options
set hlsearch " Подсветка результатов
set ignorecase " Игнорировать регистр букв при поиске
set incsearch " При поиске перескакивать на найденный текст в процессе набора строки
set smartcase " Игнорировать предыдущую опцию если в строке поиска есть буквы разного регистра
" Localization
set langmenu=none " Always use english menu
set keymap=russian-jcukenwin " Переключение раскладок клавиатуры по <C-^>
set iminsert=0 " Раскладка по умолчанию - английская
set imsearch=0 " Раскладка по умолчанию при поиске - английская
set spelllang=en,ru " Языки для проверки правописания
set encoding=utf-8
set fileencodings=utf-8,cp1251,koi8-r,cp866
set termencoding=utf-8
" Строка статуса и командная строка
set laststatus=2 " всегда отображать статусную строку для каждого окна
set shortmess=atToOI
set showcmd " show command
set showmode " show mode
set statusline=%<%f%h%m " filename and modify flag
set statusline+=%#Error#%r%*%= " read only and separator
set statusline+=\ type=%Y
set statusline+=\ format=%{&fileformat;}
set statusline+=\ file=%{&fileencoding;}
set statusline+=\ enc=%{&encoding;}
set statusline+=\ %b\ 0x%B\ %l,%c%V\ %P
set wildmenu " использовать wildmenu ...
set wildcharm=<TAB> " ... с авто-дополнением
set wildignore=*.pyc " Игнорировать pyc файлы
set cmdheight=2 " Command line height 2
" Отображение
set foldenable
set foldclose=all
set foldmethod=syntax
set foldnestmax=3 "deepest fold is 3 levels
set foldopen=block,insert,jump,mark,percent,quickfix,search,tag,undo " This commands open folds
set listchars=eol:$,tab:>-,trail:·,nbsp:~,extends:>,precedes:<
set wrap " перенос строк
set linebreak " перенос строк по словам, а не по буквам
set showmatch " подсвечивать скобки
set winminheight=0 " минимальная высота окна
set winminwidth=0 " минимальная ширина окна
set lazyredraw " перерисовывать буфер менее плавно
set confirm " использовать диалоги вместо сообщений об ошибках
set shortmess=fimnrxoOtTI " использовать сокращённые диалоги
" Редактирование
set backspace=indent,eol,start
set clipboard+=unnamed " включаем X clipboard
set virtualedit=all " On virtualedit for all mode
set go+=a " выделение в виме копирует в буфер системы
" Скролл
set scrolloff=4 " 4 символа минимум под курсором
set sidescroll=4
set sidescrolloff=10 " 10 символов минимум под курсором при скролле
" Customization
syntax on
" enable mouse
if &term; =~ "xterm"
set t_Co=256 " set 256 colors
set background=dark " set background color to dark
colorscheme wombat256
set ttyfast
set mouse=a
set mousemodel=popup
endif
set mousehide " Hide the mouse when typing text
" Опции автодополнения
set completeopt=menu
set infercase " предлагать авто-дополнение на основе уже введённого регистра
" Перемещать курсор на следующую строку при нажатии на клавиши вправо-влево и пр.
set whichwrap=b,s,<,>,<,>,l,h
" Подключение тег файла
set tags=tags
" set custom map leader to ','
let mapleader = ","
" Plugins setup
" Taglist
let Tlist_GainFocus_On_ToggleOpen = 1 " Jump to taglist window to open
let Tlist_Close_On_Select = 0 " Close taglist when a file or tag selected
let Tlist_Exit_OnlyWindow = 1 " If you are last kill your self
let Tlist_Show_One_File = 1 " Displaying tags for only one file
let Tlist_Use_Right_Window = 1 " split to rigt side of the screen
let Tlist_Compart_Format = 1 " Remove extra information and blank lines from taglist window
let Tlist_Compact_Format = 1 " Do not show help
let Tlist_Enable_Fold_Column = 0 " Don't Show the fold indicator column
let Tlist_WinWidth = 30 " Taglist win width
let Tlist_Display_Tag_Scope = 1 " Show tag scope next to the tag name
let Tlist_BackToEditBuffer = 0 " If no close on select, let the user choose back to edit buffer or not
let Grep_Skip_Dirs = 'RCS CVS SCCS .svn .git'
let Grep_Cygwin_Find = 1
" Comment with space
let NERDSpaceDelims = 1
" Enable extended matchit
runtime macros/matchit.vim
" ------------------------------
" Functions
" Подсветка текущей раскладки
fun! KeyMapHighlight()
if &iminsert; == 0
hi StatusLine ctermfg=White ctermbg=Blue
else
hi StatusLine ctermbg=Red
endif
endfun
call KeyMapHighlight()
" Биндинг клавиш"
fun! Map_ex_cmd(key, cmd)
execute "nmap ".a:key." " . ":".a:cmd."<CR>"
execute "cmap ".a:key." " . "<C-C>:".a:cmd."<CR>"
execute "imap ".a:key." " . "<C-O>:".a:cmd."<CR>"
execute "vmap ".a:key." " . "<Esc>:".a:cmd."<CR>gv"
endfun
" Биндинг переключалки опций
fun! Toggle_option(key, opt)
call Map_ex_cmd(a:key, "set ".a:opt."! ".a:opt."?")
endfun
" передвигаемся по вкладкам
fun! TabJump(direction)
let l:tablen=tabpagenr('$')
let l:tabcur=tabpagenr()
if a:direction=='left'
if l:tabcur>1
execute 'tabprevious'
endif
else
if l:tabcur!=l:tablen
execute 'tabnext'
endif
endif
endfun
" Sessions
fun! SessionRead(name)
let s:name = g:session_dir.'/'.a:name.'.session'
if getfsize(s:name) >= 0
echo "Reading " s:name
exe 'source '.s:name
exe 'silent! source '.getcwd().'/.vim/.vimrc'
else
echo 'Not find session: '.a:name
endif
endfun
fun! SessionInput(type)
let s:name = input(a:type.' session name? ')
if a:type == 'Save'
call SessionSave(s:name)
else
call SessionRead(s:name)
endif
endfun
fun! SessionSave(name)
exe "mks! " g:session_dir.'/'.a:name.'.session'
echo "Session" a:name "saved"
endfun
" Omni and dict completition
fun! AddWrapper()
if exists('&omnifunc;') && &omnifunc; != ''
return "\<C-X>\<C-o>\<C-p>"
else
return "\<C-N>"
endif
endfun
" ------------------------------
" Autocommands
if has("autocmd")
filetype plugin indent on
augroup vimrcEx
au!
" Подсветка раскладки
au WinEnter * :call KeyMapHighlight()
" Auto reload vim settins
au! bufwritepost rc.vim source ~/.vimrc
" Highlight insert mode
au InsertEnter * set cursorline
au InsertLeave * set nocursorline
" au InsertEnter * highlight CursorLine ctermbg=DarkBlue
" au InsertLeave * highlight CursorLine ctermbg=236
" New file templates
au BufNewFile * silent! 0r $HOME/.vim/templates/%:e.tpl
"Omni complete settings
" au FileType python set omnifunc=pythoncomplete#Complete
au FileType javascript set omnifunc=javascriptcomplete#CompleteJS
au FileType html set omnifunc=htmlcomplete#CompleteTags
au FileType css set omnifunc=csscomplete#CompleteCSS
" Autosave last session
if has('mksession')
au VimLeavePre * :call SessionSave('last')
endif
" When editing a file, always jump to the last known cursor position.
" Don't do it when the position is invalid or when inside an event handler
" (happens when dropping a file on gvim).
" Also don't do it when the mark is in the first line, that is the default
" position when opening a file.
autocmd BufReadPost *
\ if line("'\"") > 1 && line("'\"") <= line("$") |
\ exe "normal! g`\"" |
\ endif
augroup END
endif
" ------------------------------
" Hot keys
"
" Text navigation
imap <M-l> <Right>
imap <M-h> <Left>
imap <M-j> <Down>
imap <M-k> <Up>
nnoremap <Space> <C-d>
" Set paste mode for paste from terminal
nmap <silent> ,p :set invpaste<CR>:set paste?<CR>
" Новая строка и выход из режима вставки
map <S-O> i<CR><ESC>
" Drop hightlight search result
map <silent> <leader>n :silent :nohls<CR>
" Omni and dict completition on space
inoremap <Nul> <C-R>=AddWrapper()<CR>
inoremap <C-Space> <C-R>=AddWrapper()<CR>
" Fast scrool
nnoremap <C-e> 3<C-e>
nnoremap <C-y> 3<C-y>
" allow command line editing like emacs
cnoremap <C-A> <Home>
cnoremap <C-B> <Left>
cnoremap <C-E> <End>
cnoremap <C-F> <Right>
cnoremap <C-N> <Down>
cnoremap <C-P> <Up>
" Close cwindow
noremap <silent> ,ll :ccl<CR>
noremap <silent> ,nn :cn<CR>
" Window commands
noremap <silent> ,h :wincmd h<CR>
noremap <silent> ,j :wincmd j<CR>
noremap <silent> ,k :wincmd k<CR>
noremap <silent> ,l :wincmd l<CR>
noremap <silent> ,sb :wincmd p<CR>
noremap <silent> ,cj :wincmd j<CR>:close<CR>
noremap <silent> ,ck :wincmd k<CR>:close<CR>
noremap <silent> ,ch :wincmd h<CR>:close<CR>
noremap <silent> ,cl :wincmd l<CR>:close<CR>
noremap <silent> ,cw :close<CR>
" Buffer commands
noremap <silent> ,bp :bp<CR>
noremap <silent> ,bn :bn<CR>
noremap <silent> ,bw :w<CR>
noremap <silent> ,bd :bd<CR>
noremap <silent> ,ls :ls<CR>
" Delete all buffers
nmap <silent> ,da :exec "1," . bufnr('$') . "bd"<cr>
" Search the current file for the word under the cursor and display matches
nmap <silent> ,gw :Rgrep<CR>
" Search the current file for the WORD under the cursor and display matches
" nmap <silent> ,gW
" \ :vimgrep /<C-r><C-a>/ %<CR>:ccl<CR>:cwin<CR><C-W>J:set nohls<CR>
" Работа с вкладками
" новая вкладка
call Map_ex_cmd("<C-W>t", ":tabnew")
" предыдущая вкладка
nmap Z :call TabJump('left')<cr>
" следующая вкладка
nmap X :call TabJump('right')<cr>
" первая вкладка
call Map_ex_cmd("<A-UP>", ":tabfirst")
" последняя вкладка
call Map_ex_cmd("<A-DOWN>", ":tablast")
" переместить вкладку в начало
nmap Q :tabmove 0<cr>
" переместить вкладку в конец
call Map_ex_cmd("<C-DOWN>", ":tabmove")
" Переключение раскладок будет производиться по <C-F>
cmap <silent> <C-F> <C-^>
imap <silent> <C-F> <C-^>X<Esc>:call KeyMapHighlight()<CR>a<C-H>
nmap <silent> <C-F> a<C-^><Esc>:call KeyMapHighlight()<CR>
vmap <silent> <C-F> <Esc>a<C-^><Esc>:call KeyMapHighlight()<CR>gv
" Запуск/сокрытие плагина NERDTree
call Map_ex_cmd("<F1>", "NERDTree")
" Toggle cwindow
call Map_ex_cmd("<F2>", "cw")
" Запуск/сокрытие плагина Tlist
call Map_ex_cmd("<F3>", "TlistToggle")
call Toggle_option("<F6>", "list") " Переключение подсветки невидимых символов
call Toggle_option("<F7>", "wrap") " Переключение переноса слов
" Меню работы с (VCS plugin
map <F9> :emenu VCS.<TAB>
menu VCS.VimDiff :VCSVimDiff<CR>
menu VCS.Commit :VCSCommit<CR>
menu VCS.Revert :VCSRevert<CR>
menu VCS.Add :VCSAdd<CR>
menu VCS.Delete :VCSDelete<CR>
menu VCS.Log :VCSLog<CR>
menu VCS.Update :VCSUpdate<CR>
" Закрытие файла
call Map_ex_cmd("<F10>", "qall")
call Map_ex_cmd("<S-F10>", "qall!")
" Список регистров
call Map_ex_cmd("<F11>", "reg")
" Список меток
call Map_ex_cmd("<F12>", "marks")
nmap <Leader>ss :call SessionInput('Save')<CR>
nmap <Leader>sr :call SessionInput('Read')<CR>
nmap <Leader>sl :call SessionRead('last')<CR>
com! Ssave :call SessionSave(<args>)
com! Sread :call SessionRead(<args>)
" Some gui settings
if has("gui_running")
" Set up the gui cursor to look nice
set guicursor=n-v-c:block-Cursor-blinkon0
set guicursor+=ve:ver35-Cursor
set guicursor+=o:hor50-Cursor
set guicursor+=i-ci:ver25-Cursor
set guicursor+=r-cr:hor20-Cursor
set guicursor+=sm:block-Cursor-blinkwait175-blinkoff150-blinkon175
set guioptions=ac
set guifont=Monaco\ 11
colorscheme wombat256
if !exists("g:vimrcloaded")
winpos 0 0
if ! &diff;
winsize 130 90
else
winsize 227 90
endif
let g:vimrcloaded = 1
endif
endif
if !exists('s:loaded_my_vimrc')
" Автозагрузка настроек из текущей директории
exe 'silent! source '.getcwd().'/.vim/.vimrc'
endif
let s:loaded_my_vimrc = 1 " Fin
set secure " must be written at the last. see :help 'secure'.
|
h0rr0rr_drag0n 23.11.2010 23:25
Vim — Плагин code_complete для Vim'a - автодополнение и сниппеты
Практически во всех современных средах разработки есть пара удобных возможностей - есть возможность видеть список параметров функции, введя имя этой функции и открывающую скобку, и автодополнение стандартных блоков кода, наподобие if () {} else {} и других.Естественно, подобная функциональность не могла обойти стороной и текстовый редактор Vim (который, стоит отметить, являет собой нечто большее, чем просто текстовый редактор). Сниппеты и автодополнение параметров функций можно найти во множестве плагинов, лежащих на vim.org.
В своей статье, я хочу рассмотреть один плагин, в котором уже реализованы и сниппеты и автодополнение. Плагин называется code_complete (new update).
h0rr0rr_drag0n 05.09.2009 21:10
Vim — Красивый просмотр ман-страниц в виме.
В виме, по умолчанию, можно просмотреть ман-страницу для слова под курсором, нажав комбинацию клавиш Shift+k. Если вим запущен в терминале, то в этом же терминале просто отобразится нужная ман-страница, как если бы вы набрали man нужное_слово. К сожалению, если вы пользуетесь GVim'ом, то в нем отобразится и мешанина из управляющих символов, что весьма неудобно.
bosha 20.04.2010 23:50
Мой конфиг — Очередной ~/.vimrc
Он у меня в ужасно состоянии, всё никак не дойдут руки "причесать" :)
Остальные конфиги если кому интересно, всегда доступны через git на github
P.S. Парсер почему-то часть конфига перечеркнул. В чём дело не имею ни малейшего понятия =(
az 15.12.2010 01:35
Vim — vim скроллинг для rxvt
Его долгое время не хватало для совершенства в окружении xmonad/vim/ranger/ncmpc/итд. Поиски не приводили к результату. И наконец я это сделал :), может ещё кому-то пригодится:Последние две - как раз скроллинг. "2" - количество строчек для прокрутки. Из остального полезно: zenburn для вкладок, затемнение неактивного терминала, отключен авто-скроллинг (использую, например, для выбора приложений в yaourt)
Скриншот:
LeniH 23.09.2009 18:11
Жизнь в консоли — Screen — текстовый оконный менеджер
Screen - это оконный менеджер с эмуляцией терминала VT100/ANSI. Другими словами, это консоль в консоли, т.е. запуская одну терминальную сессию мы можем запустить параллельно несколько команд и наблюдать за их работой. Конечно многие могут сказать, мол зачем нужен какой-то там консольный оконный менеджер, когда уже есть gnome-terminal, konsole и прочие графические эмуляторы терминала, поддерживающие вкладки?
grimgav 21.04.2010 11:11
Мой конфиг — ~/.vimrc
Занялся причесыванием своего конфигурационного файла для Vim. Может кому-то будет полезен или поделится кто своими наработками и замечаниями.
macumazan 13.01.2011 21:15
Есть вопрос! — Номера табов в консольном vim
Нужно, что бы отображались номера табов.Кто-нибудь может разъяснить, как оно работает?
Чтение help явности не внесло.
Denis 23.01.2009 19:43
How-to`s — xbindkeys а-ля vim
Многие знают об особенностях работы с клавиатурой в редакторе vim. И многим они нравятся. Мне также нравятся эти особенности, и после знакомства с дополнением vimperator для firefox iceweasel захотелось сделать нечто подобное для всей системы в целом. А точнее — запускать программы по нажатию на клавиатуре какой-то предопределенной буквы.Для того чтобы это реализовать нужно было создать какой-нибудь дополнительный режим работы клавиатуры, при котором запуск программ не мешал бы обычному вводу текста. Что-нибудь, похожее на XCompose key.