Страница 1 из 20

Тонкая настройка vim

Добавлено: 06.10.2004 10:15
Warderer
Господа, как я понимаю, немалое количество обитающих здесь использует редактор vim в качестве постоянного редактора. Давайте делиться с другими всевозможными полезностями, которые у вас прописаны в .vimrc? С пояснениями? Из самого простого:
syntax on " включить подсветку синтаксиса.
set autoindent " установить автоотступ

Продолжите?

Re: Тонкая настройка vim

Добавлено: 06.10.2004 10:26
JaGoTerr
set expandtab " вставлять пробелы, а не табы
set softtabstop=4 " величина отступа

ЗЫ: тока у меня это в ~/.exrc , если кому важно

Re: Тонкая настройка vim

Добавлено: 06.10.2004 10:59
flook
map <F5> :wa^V^M:make^V^M
map <F6> :cope^V^M
map <F7> :cp^V^M
map <F8> :cn^V^M

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

Re: Тонкая настройка vim

Добавлено: 06.10.2004 11:10
Warderer
Ух, хорошо пошло! Спасибо! Продолжаем? Тема-то благодатная...

Re: Тонкая настройка vim

Добавлено: 06.10.2004 11:57
madskull
set ignorecase
игнорировать прописные/строчные при поиске

set background=dark
насильно заставить его считать, что терминал с темным фоном (у меня, почему-то, в x-терминалах он считает, что фон белый и делает соответствующую расцветку синтаксиса)

highlight Comment ctermfg=darkgreen
указать цвет комментариев

set langmap=Ж:,йq,цw,уe,кr,еt,нy,гu,шi,щo,зp,х[,ъ],фa,ыs,вd,аf,пg,рh,оj,лk,дl,э',яz,чx,сc,мv,иb,тn,ьm,б\,,ю.,ё`
возможность использовать команды при русской раскладке

set hlsearch
при поиске помечать все найденные строки

set incsearch
при поиске перескакивать на найденный текст в процессе набора строки

PS Раз уж зашел разговор о vim'е - напомните комбинацию клавиш, которая восстанавливает "Визуальное выделение". Вылетело из головы, а в хелпе найти не могу.

Re: Тонкая настройка vim

Добавлено: 06.10.2004 19:03
xorader
во... модифицировал свой соот-о:

Код: Выделить всё

$ cat .vimrc
syntax on               "  включить подсветку синтаксиса.
set nowrap              " не разрывать строку
set backup              " создавать .bak файлы (по умолчанию <oldname>~)
set autoindent          " установить автоотступ
colorscheme elflord     " меням цветовую схему
set sidescroll=5        " прокрутка вправо/влево когда строка заежает за край и вы по ней ползаете
set listchars+=precedes:<,extends:>     " показывать символы > или < если есть, что слева/справа строки
set ignorecase          " игнорировать прописные/строчные при поиске
set incsearch           " при поиске перескакивать на найденный текст в процессе набора строки
                " указать цвет комментариев
highlight Comment ctermfg=darkgrey


" собрать дерево, посмотреть на ошибки прыгнуть на следующую и на предыдущую соответственно.
map <F5> :wa^V^M:make^V^M
map <F6> :cope^V^M
map <F7> :cp^V^M
map <F8> :cn^V^M

" возможность использовать команды при русской раскладке
set langmap=Ж:,йq,цw,уe,кr,еt,нy,гu,шi,щo,зp,х[,ъ],фa,ыs,вd,аf,пg,рh,оj,лk,дl,э',яz,чx,сc,мv,иb,тn,ьm,б\,,ю.,ё`

" насильно заставить его считать, что терминал с темным фоном
" set background=dark


Добавлено:
виртуальное выделение: "ctrl+v" -- это ? или просто "v" ищешь ?
закончить выделение клавишей "y" (заносит выделеное в буфер)
или "d" (удалить выделеное и занести в буфер удалённое)

это ?

Re: Тонкая настройка vim

Добавлено: 06.10.2004 22:34
madskull
(xorader @ Среда, 06 Октября 2004, 19:03) писал(а):Добавлено:
виртуальное выделение:  "ctrl+v"  -- это ? или просто "v" ищешь ?
закончить выделение клавишей "y" (заносит выделеное в буфер)
или "d" (удалить выделеное и занести в буфер удалённое)

это ?


Почти. Например, выделяю я по Ctrl+V, делаю что-то, скажем ">" увеличиваю отступ, или заменяю в выделенном. После любого действия выделение пропадает. Так вот, есть какая-то кнопочка, когда выделение снова появляется и можно продолжать работать с этим блоком.

Блин, хреновая вещь - склероз. Долго пользовался этой "кнопочкой", но потом просто вылетело из головы...

Re: Тонкая настройка vim

Добавлено: 07.10.2004 10:52
xorader
вспомнишь - скажи, тоже интересно :)

Re: Тонкая настройка vim

Добавлено: 07.10.2004 14:07
madskull
Таки гугль рулит.
надо нажать: gv

И вообще, нашел http://www.vim.org/htmldoc/quickref.html
Полезная весчь

Re: Тонкая настройка vim

Добавлено: 07.10.2004 23:26
sdk
А вот мои примочки:

1. Так как я кодю на C++, мне очень нравиться такая штука:

inoremap { {<CR>}<Esc>O

И т.о. как только я нажимаю в insert-mode { у меня вставляются сразу открывающая и закрывающая фигурные скобки, и курсор позиционируется на новой строчке между ними. Причем insert-mode не убирается, поэтому можно сразу писать дальше код :).
Я уже очень к этой привязке привык :). Пробовал сделать нечто похожее с круглыми скобками, но как-то не прижилось, убрал.

2. Еще у меня есть строка

Код: Выделить всё

autocmd VimLeavePre * silent mksession ~/.vim/lastSession.vim

При выходе сохраняет все открытые буферы, маппинги и еще много чего :).
Иногда (когда нужно восстановить последнюю сессию работы) я делаю ":source ~/.vim/lastSession.vim".

3. Так как у меня vim -- дефолтный $EDITOR везде, включая и mc, то я забацал

Код: Выделить всё

nmap <F10> :qa<CR>

Потому как с давних пор (когда еще вима не знал) сильно пристрастился выходить по F10 из mc-шного вьювера и редактора :).

4. Еще до смерти привык к автодополнению Tab-ом:

Код: Выделить всё

imap <Tab> <C-N>


Много еще чего есть (копилось года полтора), но файл .vimrc на работе, а это я (будучи дома) первое что вспомнилось написал :).

Re: Тонкая настройка vim

Добавлено: 08.10.2004 01:01
madskull
Не, у меня F10 давно замаплен на :x
А F11 на :q!

Но всё равно интересно посмотреть на твой .vimrc который на работе

Re: Тонкая настройка vim

Добавлено: 12.10.2004 15:48
brazhe
Wow!
Клёво, а у меня особо ничего нет
(кое-что из приведенных выше neat-things оюязательно вставлю в свой .vimrc)

Часто открыто много файлов,
что бы удобнее было переходить:

nmap <F3> :bp<CR>
imap <F3> <ESC> :bp<CR>i<Right>
nmap <F4> :bn<CR>
imap <F4> <ESC> :bn<CR>i<Right>

Кстати, почему-то у меня при
set langmap ...

не работает буфер "* (то есть при попытке "*yy) только бибикает :(

Если строчку с langmap закомментировать, то работает.

И еще, никто не пользовался VimNotes? Что за зверь?

Re: Тонкая настройка vim

Добавлено: 12.10.2004 16:04
madskull
Вопрос в тему про несколько открытых файлов:
Для редактирования нескольких файлов одновременно я делаю:
из командной строки: vi -o file1 file2
в виме: :sp file2
Получается окно, разделенное на н-цать частей. Довольно удобно.
Но не всегда нужно.

А вот как бы еще сделать, чтоб можно было редактировать несколько файлов в "полноэкранном" режиме. Т.е., как если бы сделать vi file1 file2
Но! При этом можно было бы переходить между ними не сохраняя их?
А то несколько раздражает сохранять каждое изменение перед :bp :bn (мало того, иногда даже это совсем не нужно).

Re: Тонкая настройка vim

Добавлено: 13.10.2004 11:02
JaGoTerr
2madskull:
Если правильно понял вопрос, то ответ, собственно, элементарный:

Код: Выделить всё

nmap <F5> :bp!<CR>
imap <F5> <Esc>:bp!<CR>a
nmap <F6> :bn!<CR>
imap <F6> <Esc>:bn!<CR>a


Можно ещё финт ушами сделать... Если не очень много файлов открыто (скажем так - не более 10, хотя ограничение взято практически с потолка и влияет лишь на удобство работы).
Так вот... Открываешь каждый файл в отдельном окне. Все они расположены друг над другом (то есть обычный :split). И перемещаешься между ними следующими биндингами:

Код: Выделить всё

nmap <F7> <C-W>k<C-W>_ " окно вверх
imap <F7> <Esc><C-W>k<C-W>_a " окно вверх
nmap <F8> <C-W>j<C-W>_ " окно вниз
imap <F8> <Esc><C-W>j<C-W>_a " окно вниз

имхо, прикольно.

Re: Тонкая настройка vim

Добавлено: 13.10.2004 11:12
madskull
Про перемещение между окнами - естесственно известно, ибо как же тогда работать. Но 8 окошек - это круто :)
Тут три открываешь - уже неудобно...

А про "!" как-то я не догадался...

Re: Тонкая настройка vim

Добавлено: 13.10.2004 12:55
JaGoTerr
(madskull @ Среда, 13 Октября 2004, 10:12) писал(а):Про перемещение между окнами - естесственно известно, ибо как же тогда работать. Но 8 окошек - это круто :)
Тут три открываешь - уже неудобно...

Так в том и "финт ушами", что каждое раскрывается на максимально возможное пространство. Для этого там на конце <C-W>_ и прописано. То есть активное окно - большое, а остальные занимают всего лишь по две строчки каждое. И к тому же всегда видно какие окна открыты и куда листать (вперёд или назад), чтобы найти нужное.

ЗЫ: Что-то у меня подозрение, что ты не попробовал :), а поэтому недопонял, как же это доолжно работать (и работает!).

ЗЗЫ: А вообще эта тема меня натолкнула на попытки настроить себе вим посерьёзнее, чем было. Настроил :) Вечером закину сюда. Хотя в большинстве своём это просто развитие тех "идей", что были высказаны здесь + недолгое чтение хелпа.

Re: Тонкая настройка vim

Добавлено: 13.10.2004 13:11
madskull
(JaGoTerr @ Среда, 13 Октября 2004, 12:55) писал(а):
(madskull @ Среда, 13 Октября 2004, 10:12) писал(а):Про перемещение между окнами - естесственно известно, ибо как же тогда работать. Но 8 окошек - это круто :)
Тут три открываешь - уже неудобно...

Так в том и "финт ушами", что каждое раскрывается на максимально возможное пространство. Для этого там на конце <C-W>_ и прописано. То есть активное окно - большое, а остальные занимают всего лишь по две строчки каждое. И к тому же всегда видно какие окна открыты и куда листать (вперёд или назад), чтобы найти нужное.




Сорри, действительно на "_" не обратил внимание. Вот теперь рулез! Самое оно! Спасибо!

Re: Тонкая настройка vim

Добавлено: 13.10.2004 20:42
JaGoTerr
Вот мой нынешний вариант .vimrc, если кому-то ещё интересна тема :)

Код: Выделить всё

set autoindent
set tabstop=4
set softtabstop=4
set shiftwidth=4
set smarttab
set expandtab
colors desert
syntax on
set background=dark
set ignorecase
set smartcase
set hlsearch
set incsearch
set nowrap
set listchars+=precedes:<,extends:>
set sidescroll=5
set sidescrolloff=5
set guifont=terminus

" автодополнение фигурной скобки (так, как я люблю :)
imap {<CR> {<CR>}<Esc>O<Tab>

" автодополнение по Control+Space
imap <C-Space> <C-N>

" 'умный' Home
nmap <Home> ^
imap <Home> <Esc>I

" выход
imap <F12> <Esc>:qa<CR>
nmap <F12> :qa<CR>

" сохранение текущего буфера
imap <F2> <Esc>:w<CR>a
nmap <F2> :w<CR>

" сохранение всех буферов
imap <S-F2> <Esc>:wa<CR>a
nmap <S-F2> :wa<CR>

" список буферов
imap <S-F4> <Esc>:buffers<CR>
nmap <S-F4> :buffers<CR>

" закрыть буфер
imap <C-F4> <Esc>:bd<CR>a
nmap <C-F4> :bd<CR>

" открыть буфер
imap <F3> <Esc>:e<Space>
nmap <F3> :e<Space>

" следующий буфер
imap <F6> <Esc>:bn!<CR>a
nmap <F6> :bn!<CR>

" предыдущий буфер
imap <F5> <Esc>:bp!<CR>a
nmap <F5> :bp!<CR>

" окно ниже и развернуть
imap <C-F8> <Esc><C-W>j<C-W>_a
nmap <C-F8> <C-W>j<C-W>_

" окно выше и развернуть
imap <C-F7> <Esc><C-W>k<C-W>_a
nmap <C-F7> <C-W>k<C-W>_

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

" окно выше
imap <F7> <Esc><C-W>ka
nmap <F7> <C-W>k

" окно левее
imap <S-F7> <Esc><C-W>ha
nmap <S-F7> <C-W>h

" окно правее
imap <S-F8> <Esc><C-W>la
nmap <S-F8> <C-W>l

" сборка с сохранением
imap <F9> <Esc>:wa<CR>:make<CR>
nmap <F9> :wa<CR>:make<CR>

" пересборка с сохранением
imap <C-F9> <Esc>:wa<CR>:make<Space>clean<CR>:make<CR>
nmap <C-F9> :wa<CR>:make<Space>clean<CR>:make<CR>

" открыть окно результатов компиляции
imap <S-F9> <Esc>:copen<CR>
nmap <S-F9> :copen<CR>

" следующая ошибка
imap <C-F10> <Esc>:cn<CR>i
nmap <C-F10> :cn<CR>

" предыдущая ошибка
imap <S-F10> <Esc>:cp<CR>i
nmap <S-F10> :cp<CR>

" вкл/выкл отображения номеров строк
imap <F1> <Esc>:set<Space>nu!<CR>a
nmap <F1> :set<Space>nu!<CR>

" вкл/выкл отображения найденных соответствий
imap <S-F1> <Esc>:set<Space>hls!<CR>a
nmap <S-F1> :set<Space>hls!<CR>

Re: Тонкая настройка vim

Добавлено: 13.10.2004 22:16
sdk
2madskull:
Про переключение буферов без сохранения: ты просто обязан стянуть с www.vim.org из раздела scripts плагин miniBufExplorer! :) Один из первых (если упорядочить по рейтингу). Он мало того, что позволяет перескакивать без сохранения между буферами (при этом визуально обозначая буферы с несохраненными изменениями), но и еще позволяет включить ИМХО очень удобную фичу: по разделенным окнам можно скакать используя CTRL- {h,j,k,l} вместо обычных CTRL-W CTRL-W ... И это ИМХО сильно удобнее чем приведенные выше варианты. Во всяком случае, я так к этому привык, что жизнь моя без этой фичи теряет краски :lol:.

А свой .vimrc принести с работы я буду забывать еще очень долго :unsure:.

Re: Тонкая настройка vim

Добавлено: 14.10.2004 10:06
Warderer
добавил себе
set showmatch " проверка скобок
set history=500 " увеличение истории команд
filetype plugin on
filetype indent on
set undolevels=100
set ttyfast

Редактирование в vim благодаря нашим общим усилиям становится все удобнее и удобнее! Это просто праздник какой-то!

Re: Тонкая настройка vim

Добавлено: 15.10.2004 17:41
madskull
(sdk @ Среда, 13 Октября 2004, 22:16) писал(а):2madskull:
Про переключение буферов без сохранения: ты просто обязан стянуть с www.vim.org из раздела scripts плагин miniBufExplorer! :) Один из первых (если упорядочить по рейтингу). Он мало того, что позволяет перескакивать без сохранения между буферами (при этом визуально обозначая буферы с несохраненными изменениями), но и еще позволяет включить ИМХО очень удобную фичу: по разделенным окнам можно скакать используя CTRL- {h,j,k,l} вместо обычных CTRL-W CTRL-W ...  И это ИМХО сильно удобнее чем приведенные выше варианты. Во всяком случае, я так к этому привык, что жизнь моя без этой фичи теряет краски :lol:.

А свой .vimrc принести с работы я буду забывать еще очень долго  :unsure:.


Что-то не работает. Точнее, в чистой консоли работают CTRL- {h,j,k,l} , но не работают CTRL+стрелки. А в х-терминале - ничего не работает.

Re: Тонкая настройка vim

Добавлено: 15.10.2004 21:36
sdk
А там надо какую-то переменную в 1 установить по-моему. По умолчанию это все выключено. Почитай начало скрипта (там где описание идет).

Кстати, я сегодня на работе от нечего делать написал два "текстовых скринсэйвера" под вим (в смысле на вимовском языке). Они просто делают всякие штучки-дрючки с текстом в текущем окне (типа zone-out в emacs-e) :). Никто не хочет глянуть/потестировать?

Re: Тонкая настройка vim

Добавлено: 15.10.2004 23:13
madskull
(sdk @ Пятница, 15 Октября 2004, 21:36) писал(а):А там надо какую-то переменную в 1 установить по-моему. По умолчанию это все выключено. Почитай начало скрипта (там где описание идет).


Да это-то поставил, конечно. Все равно не едут лыжи...

Re: Тонкая настройка vim

Добавлено: 16.10.2004 01:16
elide
Никто не хочет глянуть/потестировать?
зачем спрашивать? клади. кому надо сами стянут. я - стяну! (:

Re: Тонкая настройка vim

Добавлено: 17.10.2004 15:51
JaGoTerr
Ну да, я бы тоже попробовал сие чудо :)

Re: Тонкая настройка vim

Добавлено: 17.10.2004 19:47
sdk
ОК, положу, но не раньше завтра, потому как сие чудо я оставил на работе :).
А если проклятая простуда завтра не пройдет и я решу поболеть дома денек, то послезавтра :).

2madskull:
Хм-м-м, тогда странно. У меня все фурыкает.

Re: Тонкая настройка vim

Добавлено: 17.10.2004 23:03
elide
sdk
ну ты уж если на работу-то пойдешь, то и конфиг притащи заодно (: а то ведь опять забудешь (:
Добавлено:
люди, решил я тут себе настроить langmap... вроде как работает, но только в коммандном режиме. а вот при переходе в линейный... можно сделать так, чтобы на команды типа :цй была нормальная реакция?

Re: Тонкая настройка vim

Добавлено: 18.10.2004 01:07
sdk
Я вот тоже бы не прочь, чтобы не было :цй, но, цитирую хелп:
Символы вашего языка будут восприниматься как обычные латинские символы в соответствии с таблицей, заданной в значении данной опции, в следующих случаях:
  o в Обычном/Визуальном режиме (команды, имена буферов и регистров,
    пользовательские привязки)
  o в режиме Вставки/Замены: имена регистров после ввода CTRL-R
  o в режиме Вставки/Замены: привязки
 
Символы, которые вводятся в режиме командной строки, никак не затрагиваются настройками данной опции.

Re: Тонкая настройка vim

Добавлено: 18.10.2004 23:52
elide
не... ну это я читал... я думал, может какой workaround есть для этого дела...
Добавлено:
люди, а давайте колитесь, кто и что имеет для удобного использования фолдинга!
я вот нашел на том же vim.org плагин AutoFold... но или он сишный текст уж очень как-то странно сворачивает, или я чего-то не понимаю...

Re: Тонкая настройка vim

Добавлено: 19.10.2004 11:01
madskull
(elide @ Понедельник, 18 Октября 2004, 23:52) писал(а):не... ну это я читал... я думал, может какой workaround есть для этого дела...
Добавлено:
люди, а давайте колитесь, кто и что имеет для удобного использования фолдинга!
я вот нашел на том же vim.org плагин AutoFold... но или он сишный текст уж очень как-то странно сворачивает, или я чего-то не понимаю...

Я тоже ковырялся, пытался под перл фолдинг сделать. Не работает при старте, хоть ты тресни. Пришлось пока забить, до времени, когда будет время и желание.