DotFiles/Editors/Vim: различия между версиями

Материал из ALT Linux Wiki
(→‎Vim: вставка из ./*)
 
(не показаны 2 промежуточные версии этого же участника)
Строка 1: Строка 1:
{{MovedFromFreesourceInfo|AltLinux/DotFiles/Editors/Vim}}
{{MovedFromFreesourceInfo|AltLinux/DotFiles/Editors/Vim}}


== Vim ==
'''Настройка Vim'''


* [[DotFiles/Editors/Vim/MailQuoting|Цитирование для почты]]
== Почтоцитирование ==
=== Почтоцитирование ===


Применение команды <tt>set tw</tt> применительно к vim из-под mutt рассмотрено [[ListRules/MUAsetup/Mutt |здесь]].
Применение команды <tt>set tw</tt> применительно к vim из-под mutt рассмотрено [[ListRules/MUAsetup/Mutt |здесь]].
Строка 15: Строка 14:
Аналогично, при необходимости вручную сформатировать <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> -- для форматирования пятнадцати строк от текущей позиции вниз и т.п.


* [[DotFiles/Editors/Vim/LangMap|"Отвязка" клавиатурных команд от раскладки (языка]])
== langmap ==
<!-- {{MovedFromFreesourceInfo|AltLinux/DotFiles/Editors/Vim/LangMap}} -->
 
=== langmap ===


vim умеет замечательную (хоть и не вполне идеальную) функцию, позволяющую задать соответствие, например, русских буковок латинице, на которую опираются команды (вроде <tt>dd5}P</tt>).
vim умеет замечательную (хоть и не вполне идеальную) функцию, позволяющую задать соответствие, например, русских буковок латинице, на которую опираются команды (вроде <tt>dd5}P</tt>).
Строка 26: Строка 22:
<pre>set langmap=ёйцукенгшщзхъфывапролджэячсмитьбюЁЙЦУКЕHГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ;`qwertyuiop[]asdfghjkl;'zxcvbnm,.~QWERTYUIOP{}ASDFGHJKL:\"ZXCVBNM<></pre>
<pre>set langmap=ёйцукенгшщзхъфывапролджэячсмитьбюЁЙЦУКЕHГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ;`qwertyuiop[]asdfghjkl;'zxcvbnm,.~QWERTYUIOP{}ASDFGHJKL:\"ZXCVBNM<></pre>


* [[DotFiles/Editors/Vim/CharSets|Переключение кодировки]]
== Переключение раскладки ==
<!-- {{MovedFromFreesourceInfo|AltLinux/DotFiles/Editors/Vim/CharSets}} -->
 
=== Переключение раскладки ===


Добавьте в <tt>~/.vimrc</tt>:
Добавьте в <tt>~/.vimrc</tt>:
Строка 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>


* [[DotFiles/Editors/Vim/TabbedEditing|"Табы"]]
== «Табы» и редактирование ==
<!-- {{MovedFromFreesourceInfo|AltLinux/DotFiles/Editors/Vim/TabbedEditing}} -->
 
=== "Табы" и редактирование ===


В седьмой версии Vim появились "табы" как, например, в firefox. Это удобнее "окон", потому как буфер, открытый в табе не "спрятан".
В седьмой версии Vim появились «табы» как, например, в firefox. Это удобнее «окон», потому как буфер, открытый в табе не «спрятан».


Подробнее об этом можно прочитать в <tt>:help tabpage</tt>, вот пара "удобств":
Подробнее об этом можно прочитать в <tt>:help tabpage</tt>, вот пара «удобств»:


По умолчанию открывается только 10 табов, остальные буфера появляются как "спрятанные" окна. Устраняем ограничение:
По умолчанию открывается только 10 табов, остальные буфера появляются как «спрятанные» окна. Устраняем ограничение:
<pre>:set tabpagemax=99</pre>
<pre>:set tabpagemax=99</pre>


Строка 94: Строка 84:
imap <M-Left> <C-O>gT</pre>
imap <M-Left> <C-O>gT</pre>


* [[DotFiles/Editors/Vim/StatusLine|status line]]
== Vim Status Line ==
<!-- {{MovedFromFreesourceInfo|AltLinux/DotFiles/Editors/Vim/StatusLine}} -->
 
=== Vim Status Line ===


Для более информативной статусной строчки (избыточность можно убрать по своему вкусу) можно сделать в командном режиме Vim (после Esc, если в режиме редактирования):
Для более информативной статусной строчки (избыточность можно убрать по своему вкусу) можно сделать в командном режиме Vim (после Esc, если в режиме редактирования):
Строка 117: Строка 104:
<tt>set laststatus=2</tt>
<tt>set laststatus=2</tt>


==== Ссылки ====
=== Ссылки ===
* [http://www.linux.com/feature/120126 http://www.linux.com/feature/120126]
* [http://www.linux.com/feature/120126 http://www.linux.com/feature/120126]
* <tt>:help statusline</tt>
* <tt>:help statusline</tt>


=== Ссылки ===
== Ссылки ==
* [http://freesource.info/wiki/Stat'i/KratkoOboVsjom/VIM Кратко о vim]
* [http://freesource.info/wiki/Stat'i/KratkoOboVsjom/VIM Кратко о vim]
* [http://durdn.com/blog/2008/11/26/vim-mind-share-soaring-roundup-of-10-vim-articles-recent-and-older-gems/ Подборка из десяти статей о vim]
* [http://durdn.com/blog/2008/11/26/vim-mind-share-soaring-roundup-of-10-vim-articles-recent-and-older-gems/ Подборка из десяти статей о vim]
Строка 127: Строка 114:
* [http://jmcpherson.org/editing.html Полезный cheat sheet] для уже немного владеющих редактором
* [http://jmcpherson.org/editing.html Полезный cheat sheet] для уже немного владеющих редактором


=== vi/vim ===
== vi/vim ==
> [john@alt-devel dbmail]$ git commit<br />
> [john@alt-devel dbmail]$ git commit<br />
> Error detected while processing /home/john/.vimrc:<br />
> Error detected while processing /home/john/.vimrc:<br />

Текущая версия от 17:11, 1 декабря 2008

Freesource-logo.png Blue Glass Arrow.svg MediaWiki logo.png
Эта страница была перемещена с freesource.info.
Эта страница наверняка требует чистки и улучшения — смело правьте разметку и ссылки.
Просьба по окончанию убрать этот шаблон со страницы.


Настройка 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

Ссылки

Ссылки

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