Решил я намедни, недавеча как вчера, настроить vim:
" отключаем режим совместимости с vi
set nocompatible
" разрешить копирование из vim в системный буфер обмена
set clipboard=unnamedplus
" кодировка по-умолчанию
set encoding=utf-8
set termencoding=utf-8
set fileencoding=utf-8
set fileencodings=utf8,cp1251
" включить поддержку 256 цветов
set t_Co=256
" навигация по словам: какие символы входят в состав слова
set iskeyword=@,48-57,_,192-255
" подсветка синтаксиса
syntax on
" включить определение синтаксиса и отступов по типу файла с применением плагинов
filetype indent plugin on
" отступы
" автоматически определять отступы
set autoindent
" количество пробелов, добавляемых с помощью команд << и >>
set shiftwidth=2
" количество пробелов, которыми отображается символ табуляции
set tabstop=2
" при нажатии tab в начале строки, добавляет отступ, равный shiftwith
set smarttab
" в режиме вставки заменяет табы на пробелы
set expandtab
" сворачивание
set foldmethod=indent
set foldlevel=1
set foldclose=all
" подсвечивать найденное
set hlsearch
" поиск по мере ввода
set incsearch
" игнорировать регистр при поиске, если в запросе нет заглавных
set ignorecase
set smartcase
" удалять отступы по нажатию на backspace
set backspace=indent,eol,start
" подсвечивать текущую строку
set cursorline
" количество строк, которое всегда отображается до и после курсора
" прокрутка от середины
"set scrolloff=999
set scrolloff=1
" при переходе на новую строку, принудительно не перемещать курсор в ее начало
set nostartofline
" показывать диалог при наличии несохраненных изменений
set confirm
" разрешить переключение между буферами при наличии несохраненных изменений
set hidden
" автоматически перечитывать файл при его изменении
set autoread
" автоматически менять рабочий каталог
set autochdir
" показывать номера строк
set number
" показывать номера строк относительно текущей
set relativenumber
" показывать парные скобки
set showmatch
" переносить длинный текст на новую строку
set wrap
" длина строки
set textwidth=80
" не разрывать слова при переносе
set linebreak
" показывать имя буфера в заголовке
set title
" показывать положение курсора
set ruler
" показывать незавершенные команды
set showcmd
" показывать дополнительную информацию в строке состояния
set wildmenu
set wildmode=longest:list,full
" мерцание экрана вместо издавания звука биппера при ошибках
set visualbell
" не сигнализировать об ошибках
set noerrorbells
" отображение специальных символов
set showbreak=↪
set list listchars=tab:→\ ,nbsp:␣,trail:•,extends:⟩,precedes:⟨
" всегда показывать строку состояния
set laststatus=2
" строка состояния
set statusline=%<%f%h%m%r%=%b\ 0x%B\ \ %l,%c%V\ %P
" отключить создание backup, swap и undo файлов
"set nobackup
"set noswapfile
"set noundofile
" задаем альтернативные пути для backup, swap и undo файлов
" при наличии «//» в конце пути vim будет сохранять файлы под полным именем, заменяя «/» в имени на «%»
set backupdir=.backup/,~/.vim/backup//,/tmp//
set directory=.swp/,~/.vim/swp//,/tmp//
set undodir=.undo/,~/.vim/undo//,/tmp//
" размер истории команд и поиска
set history=10000
" максимальное количество изменений, которые могут быть отменены
set undolevels=10000
" мышь
if has('mouse')
set mouse=a
endif
" клавиатура
set notimeout " don't timeout on mappings
set ttimeout " do timeout on terminal key codes
set timeoutlen=100 " timeout after 100 msec
" leader key
let mapleader="\<Space>"
" быстрая запись
nmap <leader>w :w!<cr>
" :W для записи файлов, требующих повышенных привелегий
command W w !sudo tee % > /dev/null
" перемещение между окнами
nmap <leader>h <c-w>h
nmap <leader>l <c-w>l
nmap <leader>k <c-w>k
nmap <leader>j <c-w>j
" разбиение экрана
nmap <leader>s :split<cr>
nmap <leader>- :split<cr>
nmap <leader>v :vsplit<cr>
nmap <leader>/ :vsplit<cr>
" буферы
nmap <tab> :bn<cr> " следующий
nmap <S-tab> :bp<cr> " предыдущий
" закрыть текущий буфер
nmap <leader>x :close<cr>
" вкладки
nmap <leader>t :tabnew<cr>
"nmap ? :tabclose<cr>
"nmap ? :tabmove<cr>
nmap <leader>] :tabnext<cr>
nmap <leader>[ :tabprevious<cr>
" отступы в визуальном режиме
vmap < <gv
vmap > >gv
И возник у меня такой вопрос: а как лучше всего кейбиндинги настроить? Так же я не уверен, что все настройки правильно прописал. Поделитесь своими бнастройками, позазя