DotFiles/Editors/Vim
Настройка Vim
Почтоцитирование
Применение команды set tw применительно к vim из-под mutt рассмотрено здесь.
Отключить автоперенос в vim можно командой set paste, включить назад -- set nopaste; у меня переключение повешено на F5 вот так (~/.vimrc):
set pastetoggle=<F5>
При необходимости вручную сформатировать строку автоматически ;) можно сказать <esc>gql, абзац -- <esc>gq}.
Аналогично, при необходимости вручную сформатировать N подряд идущих абзацев, можно сказать <esc>gqN}. Другими словами, обычно вводится <esc>gq<команда_перехода>: <esc>gq1G для форматирования строк от текущей позиции до первой строки, <esc>gq15j -- для форматирования пятнадцати строк от текущей позиции вниз и т.п.
langmap
vim умеет замечательную (хоть и не вполне идеальную) функцию, позволяющую задать соответствие, например, русских буковок латинице, на которую опираются команды (вроде dd5}P).
Для ГОСТовской раскладки:
set langmap=ёйцукенгшщзхъфывапролджэячсмитьбюЁЙЦУКЕHГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ;`qwertyuiop[]asdfghjkl;'zxcvbnm,.~QWERTYUIOP{}ASDFGHJKL:\"ZXCVBNM<>
Переключение раскладки
Добавьте в ~/.vimrc:
map <F10> ^[:set termencoding=8bit-koi8-u^M:set encoding=utf-8 map <F11> ^[:set termencoding=8bit-koi8-u^M:set encoding=8bit-cp1251 map <F12> ^[:set termencoding=8bit-koi8-u^M:set encoding=8bit-koi8-u
(^[ и ^M набираются как <esc>^V<esc> и <esc>^V<enter>, соответственно; или см. этот файл)
Вариант номер 2: Добавьте в ~/.vimrc:
set encoding=koi8-r set termencoding=koi8-r map <F8> :execute RotateEnc()<CR> " some funcs let b:encindex=0 function! RotateEnc() let y = -1 while y == -1 let encstring = "#8bit-cp1251#8bit-cp866#utf-8#koi8-r#" let x = match(encstring,"#",b:encindex) let y = match(encstring,"#",x+1) let b:encindex = x+1 if y == -1 let b:encindex = 0 else let str = strpart(encstring,x+1,y-x-1) return ":set encoding=".str endif endwhile endfunction set statusline=%<%f%h%m%r%=enc=%{&encoding}\ %b\ 0x%B\ %l,%c%V\ %P set laststatus=2
<F8> позволяет переключать раскладки по кругу. В статусной строке отображается дополнительная информация: кодировка и код текущего символа в десятичном и шестнадцатиричном виде.
Если вышеприведённые методы не работают (например, у меня в vim-7.x так не проходит), попробуйте вместо ":set encoding=..." использовать ":e ++enc=... %:p". Например, для второго способа сделайте замену:
- return ":set encoding=".str + return ":e ++enc=".str " %:p"
Возможно вы также захотите изменить следующую строку:
-set statusline=%<%f%h%m%r%=enc=%{&encoding}\ %b\ 0x%B\ %l,%c%V\ %P +set statusline=%<%f%h%m%r%=enc=%{&fileencoding}\ %b\ 0x%B\ %l,%c%V\ %P
«Табы» и редактирование
В седьмой версии Vim появились «табы» как, например, в firefox. Это удобнее «окон», потому как буфер, открытый в табе не «спрятан».
Подробнее об этом можно прочитать в :help tabpage, вот пара «удобств»:
По умолчанию открывается только 10 табов, остальные буфера появляются как «спрятанные» окна. Устраняем ограничение:
:set tabpagemax=99
Переключение между табами по Alt-Left/Right:
nmap <M-Right> gt nmap <M-Left> gT
И то же самое для insert mode:
imap <M-Right> <C-O>gt imap <M-Left> <C-O>gT
Vim Status Line
Для более информативной статусной строчки (избыточность можно убрать по своему вкусу) можно сделать в командном режиме Vim (после Esc, если в режиме редактирования):
:set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [ASCII=\%03.3b]\ [HEX=\%02.2B]\ [POS=%04l,%04v][%p%%]\ [LEN=%L] :set laststatus=2
ну или добавить (без ":") в свой .vimrc:
cat >> ~/.vimrc << EOF set statusline=%F%m%r%h%w\\ [FORMAT=%{&ff}]\\ [TYPE=%Y]\\ [ASCII=\\%03.3b]\\ [HEX=\%02.2B]\\ [POS=%04l,%04v][%p%%]\\ [LEN=%L] set laststatus=2 EOF
mike@ пока остановился на таком варианте:
hi User1 term=underline cterm=bold ctermfg=Cyan ctermbg=Blue guifg=#40ffff guibg=#0000aa set statusline=%1*%F%m%r%h%w%=%(%c%V\ %l/%L\ %P%) set laststatus=2
Ссылки
- http://www.linux.com/feature/120126
- :help statusline
Ссылки
- Кратко о vim
- Подборка из десяти статей о vim
- Vim Tips Wiki
- Полезный cheat sheet для уже немного владеющих редактором
vi/vim
> [john@alt-devel dbmail]$ git commit
> Error detected while processing /home/john/.vimrc:
> line 4:
> E319: Sorry, the command is not available in this version: menu
> Encoding.koi8-r :e ++enc=koi8-r<CR>
export EDITOR=vim
По умолчанию используется vi из vim-minimal, который мало что умеет. Впрочем, ~/.vimrc имеет смысл писать так, чтобы /bin/vi всё-таки работал -- для этого команды, отсутствующие в минимальной версии vim, необходимо засунуть внутрь блоков "if 1"..."endif".
(vsu@)
Примеры конфигурации (~/.vimrc)
Переключение отображения файла в другую кодировку
set wildmenu set wcm=<Tab> menu Encoding.koi8-r :e ++enc=koi8-r<CR> menu Encoding.windows-1251 :e ++enc=cp1251<CR> menu Encoding.ibm-866 :e ++enc=ibm866<CR> menu Encoding.utf-8 :e ++enc=utf-8 <CR> map <F8> :emenu Encoding.<TAB>
Жмём F8 и выбираем кодировку
Сохранение файла в другой кодировке
:set fenc=koi8-r :w
или сразу
:w ++enc=koi8-r