Модераторы: ZeeLax, powerfox

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Vim, Удобство работы 
:(
    Опции темы
Fally
Дата 21.8.2008, 14:09 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 265
Регистрация: 17.8.2006
Где: Dahla

Репутация: нет
Всего: 4



Мой .vimrc:
Код

set ai " включаем автоотступ
set expandtab " вместо табов ставим пробелы
set softtabstop=4 " один таб == 4 пробела
set shiftwidth=4
syntax on " включаем подсветку синатаксиса

set smartindent " включаем умные отступы

"""""""""""""""""""""""""""""""""""""""""""""""""
set ignorecase " игнорируем регистр при поиске
set smartcase
"""""""""""""""""""""""""""""""""""""""""""""""""

set background=dark " терминал всегда с тёмным фоном

set nohlsearch " при поиске не помечать всё найденное
set incsearch " поиск при вводе

set nobackup " отключаем бэкап данных

" Автодополнение табом
imap <Tab> <C-N>

" После набора { и <Enter> рисовать вторую скобку.
imap {<CR> {<CR>}<Esc>O

set nu " нумерация строк
set showmatch " проверка скобок

set history=500

filetype plugin on
filetype indent on

set undolevels=100 " память отмен

set mouse=a " с поддержкой мыши
set mousemodel=popup

set nowrap

set listchars+=precedes:<,extends:> " показывать, когда строка выходит за края экрана
set sidescroll=5
set sidescrolloff=5

set termencoding=utf-8
set encoding=utf-8

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
autocmd FileType xml        set omnifunc=xmlcomplete#CompleteTags
autocmd FileType php        set omnifunc=phpcomplete#CompletePHP
autocmd FileType c          set omnifunc=ccomplete#Complete

let &errorformat="%f:%l: %t%*[^:]:%m," . &errorformat

" Настройки для Python-плагина
let python_highlight_all = 1

" Теперь <leader> - это точка
let mapleader = "."

" Настройки TagList'а
let Tlist_File_Fold_Auto_Close=1
let Tlist_GainFocus_On_ToggleOpen=1
let Tlist_Close_On_Select=1

" Настройка NERD_Commenter
let g:NERDUncomLineMap='<leader>C'

" Настройка BufExplorer
let g:bufExplorerSplitBelow=1
let g:bufExplorerSplitRight=1
let g:bufExplorerSplitVertical=1
let g:bufExplorerUseCurrentWindow=1

" Исправляем конфликты vcscommand.vim и NERD_Commenter
nmap <Leader>va <Plug>VCSAdd
nmap <Leader>vn <Plug>VCSAnnotate
nmap <Leader>vc <Plug>VCSCommit
nmap <Leader>vd <Plug>VCSDiff
nmap <Leader>vg <Plug>VCSGotoOriginal
nmap <Leader>vG <Plug>VCSGotoOriginal!
nmap <Leader>vl <Plug>VCSLog
nmap <Leader>vL <Plug>VCSLock
nmap <Leader>vr <Plug>VCSReview
nmap <Leader>vs <Plug>VCSStatus
nmap <Leader>vu <Plug>VCSUpdate
nmap <Leader>vU <Plug>VCSUnlock
nmap <Leader>vv <Plug>VCSVimDiff

set foldmethod=indent " Фолдинг по отступам.
set nofoldenable

" При выходе сохранить все открытые буферы.
autocmd VimLeavePre * silent mksession ~/.vim/lastSession.vim

" более привычные Page Up/Down, когда курсор остаётся в той же строке,
" (а не переносится в верх/низ экрана, как при стандартном PgUp/PgDown)
" Поскольку по умолчанию прокрутка по C-Y/D происходит на полэкрана,
" привязка делается к двойному нажатию этих комбинаций.
nmap <PageUp> <C-U><C-U>
imap <PageUp> <C-O><C-U><C-O><C-U>

nmap <PageDown> <C-D><C-D>
imap <PageDown> <C-O><C-D><C-O><C-D>

" Теперь нет необходимости передвигать курсор к краю экрана, чтобы подняться
" в режиме редактирования
set scrolljump=7

" Теперь нет необходимости передвигать курсор к краю экрана, чтобы
" опуститься в режиме редактирования
set scrolloff=7

" Выключаем надоедливый 'звонок'
set novisualbell
set t_vb= 

" Не выгружать буфер, когда переключаемся на другой
" Это позволяет редактировать несколько файлов в один и тот же момент без
" необходимости сохранения каждый раз
" когда переключаешься между ними
set hidden

" Сделать строку команд высотой в одну строку
set ch=1

" Скрывать указатель мыши, когда печатаем
set mousehide

" Формат строки состояния
set statusline=%<%f\ %h%m%r%=%-14.(%l,%c%V%)\ %P\ %{strftime(\"%a\ %b\ %d\ -\ %H:%M\")}
set laststatus=2

set autoread " автоматически обновляем буфер, если
             " файл изменился извне.

" Текущий терминал поддерживает 256 цветов.
set t_Co=256

" Вертикальная граница текста - 80 символов.
set tw=80

" Не использовать .swp-файл
set noswapfile

" Автозавершение слов по tab =)
function InsertTabWrapper()
    let col = col('.') - 1
    if !col || getline('.')[col - 1] !~ '\k'
        return "\<tab>"
    else
        return "\<c-p>"
    endif
endfunction
imap <tab> <c-r>=InsertTabWrapper()<cr>

" Слова откуда будем завершать
set complete=""
" Из текущего буфера
set complete+=.
" Из словаря
set complete+=k
" Из других открытых буферов
set complete+=b
" из тегов 
set complete+=t

" Отключаем Replace-mode
map R <Esc>
imap <Ins> <Esc>

" Убрать '----'  в фолдингах
set fillchars=vert:\ ,fold:\ 

" Анализ синтаксиса при печати.
set popt+=syntax:y

" Сдвигаем номера строк от границы.
set foldcolumn=2

"""""""""""""""""""""""""""""""""""""""""""
" Горячие клавиши.
"""""""""""""""""""""""""""""""""""""""""""

" CTRL-F для omni completion
imap <C-F> <C-X><C-O>

" Пробел в нормальном режиме перелистывает страницы
nmap <Space> <PageDown>

" Дописываем скобки
imap [ []<LEFT>
imap ( ()<LEFT>

" Выходим по Ctrl-Q
map <C-Q> <Esc>:qa<CR>

" F2 - быстрое сохранение
nmap <F2> :w<cr>
vmap <F2> <esc>:w<cr>i
imap <F2> <esc>:w<cr>i

" F3 - просмотр ошибок
nmap <F3> :copen<cr>
vmap <F3> <esc>:copen<cr>
imap <F3> <esc>:copen<cr>

" F5 - просмотр списка буферов
nmap <F5> <Esc>:BufExplorer<cr>
vmap <F5> <esc>:BufExplorer<cr>
imap <F5> <esc><esc>:BufExplorer<cr>

" F6 - предыдущий буфер
map <F6> :bp<cr>
vmap <F6> <esc>:bp<cr>i
imap <F6> <esc>:bp<cr>i

" F7 - следующий буфер
map <F7> :bn<cr>
vmap <F7> <esc>:bn<cr>i
imap <F7> <esc>:bn<cr>i

" F8 - список закладок
map <F8> :MarksBrowser<cr>
vmap <F8> <esc>:MarksBrowser<cr>
imap <F8> <esc>:MarksBrowser<cr>

" F9 - make команда
map <F9> :make<cr>
vmap <F9> <esc>:make<cr>i
imap <F9> <esc>:make<cr>i

" F10 - удалить буфер
map <F10> :bd<cr>
vmap <F10> <esc>:bd<cr>
imap <F10> <esc>:bd<cr>

" F11 - показать окно Taglist
map <F11> :TlistToggle<cr>
vmap <F11> <esc>:TlistToggle<cr>
imap <F11> <esc>:TlistToggle<cr>

" F12 - Показать Project
map <F12> :Project<cr>
vmap <F12> <esc>:Project<cr>
imap <F12> <esc>:Project<cr>

" окно ниже
imap <C-DOWN> <Esc><C-W>ja
nmap <C-DOWN> <C-W>j

" окно выше
imap <C-UP> <Esc><C-W>ka
nmap <C-UP> <C-W>k
 
" окно левее
imap <C-LEFT> <Esc><C-W>ha
nmap <C-LEFT> <C-W>h
 
" окно правее
imap <C-RIGHT> <Esc><C-W>la
nmap <C-RIGHT> <C-W>l

"Настраиваем тему xterm16
let xterm16_brightness = 'default'     " Change if needed
let xterm16_colormap = 'soft'       " Change if needed
colo xterm16 


Установленные плагины: TagList, BufExplorer, MarksBrowser, Project, NERD_Commenter, PdV (Для автогенерации PHP-doc блоков)  а также приятная глазу тема xterm16


--------------------
Прежде чем задать вопрос на форуме воспользуйтесь поиском.
user posted image
user posted image
PM MAIL   Вверх
nickless
Дата 22.8.2008, 03:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

Репутация: 18
Всего: 181



Добавил/изменил с прошлого раза:

Код

"wrap width (see also marker below)
set textwidth=100
"emulate static word wrap marker
hi WarpMarker ctermbg=darkred guibg=darkred
autocmd WinEnter,BufRead,BufNew * match WarpMarker /\%101v./

set linebreak               "break long lines on a caracter set in 'breakat'
set breakat=\ \ ;:,?        "line is wrapped _after_ those characters
set showbreak=>>\ \         "print this in front of wrapped lines


" " " functions " " "


" append current date in given format
function VIMRC_Date(fmt)
    :return feedkeys(mode() == "i" ? "" : "a" . strftime(a:fmt))
endfunction

" move current tab to the right
function VIMRC_TabMoveRight()
    let destTab = tabpagenr()
    if destTab == tabpagenr("$")
        let destTab = 0
    endif
    :call feedkeys(":tabmove " . destTab . "\<CR>")
endfunction

" move current tab to the left
function VIMRC_TabMoveLeft()
    let destTab = tabpagenr()
    if destTab == 1
        let destTab = tabpagenr("$")
    else
        let destTab = destTab-2
    endif
    :call feedkeys(":tabmove " . destTab . "\<CR>")
endfunction


" " " key mappings " " "


"insert date/time
map <Leader>d :call VIMRC_Date("%d %b %Y")<CR>
imap þd <ESC>:call VIMRC_Date("%d %b %Y")<CR>
map <Leader>D :call VIMRC_Date("%A, %-d %B %Y")<CR>
imap þD <ESC>:call VIMRC_Date("%A, %-d %B %Y")<CR>
map <Leader>t :call VIMRC_Date("%T")<CR>
imap þt <ESC>:call VIMRC_Date("%T")<CR>
map <Leader>T :call VIMRC_Date("%T %A, %-d %B %Y")<CR>
imap þT <ESC>:call VIMRC_Date("%T %A, %-d %B %Y")<CR>
map <Leader>s :call VIMRC_Date("%s")<CR>
imap þs <ESC>:call VIMRC_Date("%s")<CR>
map <Leader>S :call VIMRC_Date("%Y-%m-%d %R")<CR>
imap þS <ESC>:call VIMRC_Date("%Y-%m-%d %R")<CR>

"follow link
map + <C-]>

"show list of lines matching word under cursor
map <C-I> [I

"nice shortcuts from eclipse
"move current line up/down
map <A-Up> :move .-2<CR>
map <A-Down> :move .+1<CR>
imap <A-Up> <ESC>:move .-2<CR>a
imap <A-Down> <ESC>:move .+1<CR>a

"move current word left/right
map <A-Left> lBdWBPB
map <A-Right> lBdWWPB
imap <A-Left> <ESC>llBdWBPBi
imap <A-Right> <ESC>llBdWWPBi

"move current char left/right
map <S-Left> xhP
map <S-Right> xp
imap <S-Left> <ESC>lxhPi
imap <S-Right> <ESC>lxpi

"move current tab to the right/left
map <A"make and debug hotkeys and settings (see :compiler settings for file types above)
"set makeprg=scons           "set program to execute whet typing :make to scons
"set makeprg=make            "set program to execute whet typing :make to default
map <F9> :make<CR>
map <C-F9> :tabnew<CR>:make<CR>
map <F8> :cnext<CR>
map <F7> :cprevious<CR>
map <F6> :cwindow<CR>
imap <F9> <ESC>:make<CR>
imap <C-F9> <ESC>:tabnew<CR>:make<CR>
imap <F8> <ESC>:cnext<CR>
imap <F7> <ESC>:cprevious<CR>
imap <F6> <ESC>:cwindow<CR>

"C/C++ shortcuts
autocmd BufRead,BufNewFile *.c,*.C,*.cpp,*.cc,*.h,*.hpp,*.H :imap #inl #include "<++>"<HOME><Plug>IMAP_JumpForward
autocmd BufRead,BufNewFile *.c,*.C,*.cpp,*.cc,*.h,*.hpp,*.H :imap #ing #include <<++>><HOME><Plug>IMAP_JumpForward
autocmd BufRead,BufNewFile *.c,*.C,*.cpp,*.cc,*.h,*.hpp,*.H :imap #ifd #ifdef <++><CR><CR>#endif<Up><Up><END><Plug>IMAP_JumpBack
autocmd BufRead,BufNewFile *.c,*.C,*.cpp,*.cc,*.h,*.hpp,*.H :imap #ifn #ifndef <++><CR>#define<Space><CR><CR>#endif<Up><Up><Up><END><Plug>IMAP_JumpBack-PageDown> :call VIMRC_TabMoveRight()<CR>
map <A-PageUp> :call VIMRC_TabMoveLeft()<CR>

" add include file for type name under cursor (without .h), uses register i and mark i
autocmd BufRead,BufNewFile *.c,*.C,*.cpp,*.cc,*.h,*.hpp,*.H :noremap <Leader>i milb"iye?^#include<CR>o#include <><ESC>Pg'i:noh<CR>


В некоторых маппингах нагло используются функции IMAP_JumpBack/Forward из установленной LaTeX-Suite (aka Vim-LaTeX)



--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Oбщие вопросы"
nickless
Imple
pythonwin

В этом форуме предпочтительны вопросы на следующие темы:

  • Конкретные вопросы о конкретном ПО. В таких вопросах желательно привести точные данные о программе: версия программы, версия ОС, версия ядра, и проблему в форме: сделал Х, хотел получить Y, а получил Z.
  • Неконкретные вопросы о выборе ПО
  • Обзоры - как дополнение в ветку Обзоры


  • Вы должны соблюдать правила форума.
  • Помните: какой вопрос, такой и ответ. Прежде чем задать вопрос прочитайте вот эту статью на форуме CIT.
  • Оскорблять запрещается.
  • Религиозные войны в Религиозных войнах.
  • Общение "просто так" в Клубе юнуксоидов. В отличие от многих других разделов, здесь разрешается сдержанно оффтопить и юморить в тему.

За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу).


В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим.


Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программное обеспечение под *NIX системы | Следующая тема »


 




[ Время генерации скрипта: 0.0475 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.