DotFiles/Editors/Vim: различия между версиями
Ilis (обсуждение | вклад) Нет описания правки |
Ilis (обсуждение | вклад) |
||
(не показана 1 промежуточная версия этого же участника) | |||
Строка 3: | Строка 3: | ||
'''Настройка Vim''' | '''Настройка Vim''' | ||
== Почтоцитирование == | == Почтоцитирование == | ||
Строка 14: | Строка 13: | ||
Аналогично, при необходимости вручную сформатировать <tt>N</tt> подряд идущих абзацев, можно сказать <tt><esc>gqN}</tt>. Другими словами, обычно вводится <tt><esc>gq<команда_перехода></tt>: <tt><esc>gq1G</tt> для форматирования строк от текущей позиции до первой строки, <tt><esc>gq15j</tt> -- для форматирования пятнадцати строк от текущей позиции вниз и т.п. | Аналогично, при необходимости вручную сформатировать <tt>N</tt> подряд идущих абзацев, можно сказать <tt><esc>gqN}</tt>. Другими словами, обычно вводится <tt><esc>gq<команда_перехода></tt>: <tt><esc>gq1G</tt> для форматирования строк от текущей позиции до первой строки, <tt><esc>gq15j</tt> -- для форматирования пятнадцати строк от текущей позиции вниз и т.п. | ||
== langmap == | == langmap == | ||
Строка 25: | Строка 21: | ||
<pre>set langmap=ёйцукенгшщзхъфывапролджэячсмитьбюЁЙЦУКЕHГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ;`qwertyuiop[]asdfghjkl;'zxcvbnm,.~QWERTYUIOP{}ASDFGHJKL:\"ZXCVBNM<></pre> | <pre>set langmap=ёйцукенгшщзхъфывапролджэячсмитьбюЁЙЦУКЕHГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ;`qwertyuiop[]asdfghjkl;'zxcvbnm,.~QWERTYUIOP{}ASDFGHJKL:\"ZXCVBNM<></pre> | ||
== Переключение раскладки == | == Переключение раскладки == | ||
Строка 74: | Строка 67: | ||
+set statusline=%<%f%h%m%r%=enc=%{&fileencoding}\ %b\ 0x%B\ %l,%c%V\ %P</pre> | +set statusline=%<%f%h%m%r%=enc=%{&fileencoding}\ %b\ 0x%B\ %l,%c%V\ %P</pre> | ||
== «Табы» и редактирование == | |||
== | |||
В седьмой версии Vim появились | В седьмой версии Vim появились «табы» как, например, в firefox. Это удобнее «окон», потому как буфер, открытый в табе не «спрятан». | ||
Подробнее об этом можно прочитать в <tt>:help tabpage</tt>, вот пара | Подробнее об этом можно прочитать в <tt>:help tabpage</tt>, вот пара «удобств»: | ||
По умолчанию открывается только 10 табов, остальные буфера появляются как | По умолчанию открывается только 10 табов, остальные буфера появляются как «спрятанные» окна. Устраняем ограничение: | ||
<pre>:set tabpagemax=99</pre> | <pre>:set tabpagemax=99</pre> | ||
Строка 93: | Строка 83: | ||
<pre>imap <M-Right> <C-O>gt | <pre>imap <M-Right> <C-O>gt | ||
imap <M-Left> <C-O>gT</pre> | imap <M-Left> <C-O>gT</pre> | ||
== Vim Status Line == | == Vim Status Line == |
Текущая версия от 17:11, 1 декабря 2008
Настройка 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