Тонкая настройка vim (делимся полезностями в .vimrc. Вопросы задавайте в отдельных темах!)

и другие vi-подобные редакторы

Модератор: /dev/random

Аватара пользователя
Sceptik
Сообщения: 84
ОС: Debian

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

Сообщение Sceptik »

Внимательно прочел всю тему) нашел очень много для себя нового.
Но так и не понял как можно сделать чтобы настройки зависили от конкретного типа файла
(рытьё в $VIM/* не помогло наверное просто плохо искал)
т.е я хочу примерно следующее
if (файл_C++)
<настройки>
...
endif

как это можно сделать?
Мы должны построить мирное и свободное общество, где уважают права и свободы, где нет угнетённых, обиженных и несправедливо обделённых, где нет места ненависти и крови... построить его любой ценой.
Спасибо сказали:
Аватара пользователя
BlackStar
Сообщения: 1338
Статус: We are all Kosh
ОС: Fedora 10
Контактная информация:

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

Сообщение BlackStar »

:h filetype
LightLang Team
Спасибо сказали:
Аватара пользователя
Sceptik
Сообщения: 84
ОС: Debian

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

Сообщение Sceptik »

BlackStar
Спасибо за наводку!
Привожу решение

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

au FileType c,cpp,h,hpp map <F5> :make<CR>
au FileType c,cpp,h,hpp map <F6> :!./%:r<CR>
Мы должны построить мирное и свободное общество, где уважают права и свободы, где нет угнетённых, обиженных и несправедливо обделённых, где нет места ненависти и крови... построить его любой ценой.
Спасибо сказали:
Аватара пользователя
plumbum
Сообщения: 169
ОС: Debivan
Контактная информация:

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

Сообщение plumbum »

Вот такой вопрос нарисовался: возможно ли в vim7 задать функцию которая будет вызываться при смене режима? Хочу сделать, что бы каждый режим отображался своим цветом фона.
ivan-a-r_1.0-19791224.3_ru_i786.deb (testing)
Спасибо сказали:
Аватара пользователя
BlackStar
Сообщения: 1338
Статус: We are all Kosh
ОС: Fedora 10
Контактная информация:

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

Сообщение BlackStar »

Например так:

autocmd InsertEnter * hi Normal guibg=green
autocmd InsertLeave * hi Normal guibg=blue
LightLang Team
Спасибо сказали:
Аватара пользователя
WarlorD
Сообщения: 728
Статус: хочешь пропатчить KDE под FreeBSD - спроси меня как!
ОС: FreeBSD, Debian GNU\Linux

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

Сообщение WarlorD »

Хмм, а вот вопрос возник, как сделать функцию, удалающую строку по регекспу? На пустую-то заменить легко, а вот полностью удалить?
FreeBSD
Debian GNU\Linux
Компьютер позволяет решать все те проблемы, которые до изобретения компьютера не существовали.
Спасибо сказали:
sergio_nsk
Сообщения: 14

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

Сообщение sergio_nsk »

WarlorD писал(а):
09.02.2007 19:48
Хмм, а вот вопрос возник, как сделать функцию, удалающую строку по регекспу? На пустую-то заменить легко, а вот полностью удалить?


:g/{шаблон}/d

:help :g
:g[lobal]/{шаблон}/[команда]
Спасибо сказали:
Аватара пользователя
WarlorD
Сообщения: 728
Статус: хочешь пропатчить KDE под FreeBSD - спроси меня как!
ОС: FreeBSD, Debian GNU\Linux

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

Сообщение WarlorD »

sergio_nsk
thanks
FreeBSD
Debian GNU\Linux
Компьютер позволяет решать все те проблемы, которые до изобретения компьютера не существовали.
Спасибо сказали:
Аватара пользователя
plumbum
Сообщения: 169
ОС: Debivan
Контактная информация:

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

Сообщение plumbum »

BlackStar, спасибо. То что надо
ivan-a-r_1.0-19791224.3_ru_i786.deb (testing)
Спасибо сказали:
vladka
Сообщения: 15
ОС: debian

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

Сообщение vladka »

Народ есть такие кто юзает пхп под вимом ? поскажите plz, можно ли в виме компилить php code (устаносить путь к компилятору и makeprg ?)
+ увидеть сразу html страничку ? или что бы сам opery с этой строничкой открывал на худой конец :)
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian
Контактная информация:

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

Сообщение diesel »

vladka писал(а):
15.02.2007 19:48
или что бы сам opery с этой строничкой открывал на худой конец :)


можно.
:.! firefox linuxforum.ru &
можно это же повесить на хоткей/команду итп .... примеров в этом топике достаточно :)
Спасибо сказали:
NameRec
Сообщения: 8

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

Сообщение NameRec »

Не подскажете ли, как обеспечить маппирование Alt-комбинаций клавиш? Например, мне хочется, чтобы GVIM закрывался по Alt+X: пишу в vimrc:
map <M-x> :confirm qa <CR>
При попытке применить это в режиме вставки получаю букву "o".

:map даёт:
... ... ...
ш :confirm qa <CR>
... ... ...

Я заметил, что при наборе буквенных клавиш с Alt GVIM их преобразует в некий набор символов. Очень хотелось бы узнать: как правильно назначать свои команды на Alt-комбинации клавиш.

PS: VIM v7.0 для Windows. OS: Windows XP SP2.
Спасибо сказали:
Аватара пользователя
pento
Сообщения: 403
ОС: Fedora 10

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

Сообщение pento »

NameRec
маппить надо для всех режимов
Спасибо сказали:
NameRec
Сообщения: 8

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

Сообщение NameRec »

Очень прошу меня извинить за назойливость, в VIM я новичок, чайник, ламер - как хотите. Не могли бы Вы объяснить чуть-чуть поподробенее, как это для всех режимов? Мне казалось, что :map <M-x> :... работает для всех режимов? Если Вас не затруднит: приведите, пожалуйста пример.
Спасибо!
Спасибо сказали:
Аватара пользователя
BlackStar
Сообщения: 1338
Статус: We are all Kosh
ОС: Fedora 10
Контактная информация:

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

Сообщение BlackStar »

:h map-overview
LightLang Team
Спасибо сказали:
NameRec
Сообщения: 8

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

Сообщение NameRec »

:h map-overview внимательно читал до обращения сюда. Google просматривал. Нет ли каких нибудь практических рекомендаций? Меня смущает, что в результате команды :map обнаруживается не строка вида:
<M-x> :confirm qa <CR>
a:
ш :confirm qa <CR>
мне представляется, что отсутствие реакции на Alt+X обусловлено именно этим. Кроме того, как я уже говорил, нажатие Alt+X приводит к появлению буквы "o" в режиме вставки и, если маппировать:
map o :confirm qa
при нажатии Alt+X происходит выход и редактора. Может быть Вы знаете, почему это может происходить? Т.е. я имею ввиду, что может быть дело не в команде map, а в том, что VIM выполняет перекодировку символов, набираемых с помощью Alt? Где это посмотреть? Очень хотелось бы сделать из GVIM полноценное IDE, но вот такие мелочи сильно портят жизнь...
Спасибо сказали:
Аватара пользователя
BlackStar
Сообщения: 1338
Статус: We are all Kosh
ОС: Fedora 10
Контактная информация:

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

Сообщение BlackStar »

:map - распространяется на режимы: нормальный, визуальный, командный. Для режима вставки используется команда: imap.

imap <M-x> <Esc>:confirm qa<CR>
LightLang Team
Спасибо сказали:
jsv
Сообщения: 67

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

Сообщение jsv »

NameRec писал(а):
20.02.2007 13:27
Меня смущает, что в результате команды :map обнаруживается не строка вида:
<M-x> :confirm qa <CR>
a:
ш :confirm qa <CR>

Ну, видимо, терминал/иксы/винда или что там у вас по Alt-x посылает не <M-x>, а что-то другое. И правильно делает, кстати. :)

Чтобы узнать, что именно приходит, можно нажать в режиме вставки ^V atl-x и посмотреть, что вставится. Именно это и надо мапировать.

Но я бы не советовал этого делать, такие сочетания совершенно не переносимы между терминалами и операционками.
Спасибо сказали:
NameRec
Сообщения: 8

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

Сообщение NameRec »

В .vimrc у меня содержались команды:
imap <M-x> <Esc>:confirm qa<CR>
map! <M-x> :confirm qa <CR>
map <M-x> :confirm qa <CR>
lmap <M-x> :confirm qa <CR>
nmap <M-x> :confirm qa <CR>
cmap <M-x> :confirm qa <CR>
xmap <M-x> :confirm qa <CR>
smap <M-x> :confirm qa <CR>
vmap <M-x> :confirm qa <CR>

Первую я вставил по Вашей рекомендации. Вот что выдаёт :imap
... ... ...
ш <Esc>:confirm qa<CR>
... ... ...

Alt+X по-прежнему не работает. Появилось ощущение, что дело в кодировке буфера. Есть какие-нибудь мысли?
Спасибо сказали:
jsv
Сообщения: 67

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

Сообщение jsv »

NameRec писал(а):
20.02.2007 11:05
PS: VIM v7.0 для Windows. OS: Windows XP SP2.

Ага, пропустил самое интересное. :)
В винде ещё надо не забыть :set winaltkeys=no
Должно помочь (во всяком случае когда-то давно у меня работало, правда, это ещё под win98 было), хотя всё равно не советую.
Спасибо сказали:
NameRec
Сообщения: 8

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

Сообщение NameRec »

jsv писал(а):
20.02.2007 14:53
Ну, видимо, терминал/иксы/винда или что там у вас по Alt-x посылает не <M-x>, а что-то другое.

Мне известно, что реально посылается латинская буква "o".

jsv писал(а):
20.02.2007 14:53
И правильно делает, кстати. :)

Чтож тут правильного? По документации <M-x> синоним Alt+X. В куче примеров (см. Cream for VIM) - тоже.

jsv писал(а):
20.02.2007 14:53
Чтобы узнать, что именно приходит, можно нажать в режиме вставки ^V atl-x и посмотреть, что вставится. Именно это и надо мапировать.

Про ^V я узнал от Вас. Интересно. Но у меня после ^V рисуется символ "^" а при нажатии на Alt+X ничего не происходит, т.е. ничего не выводится в позиции курсора.

jsv писал(а):
20.02.2007 14:53
Но я бы не советовал этого делать, такие сочетания совершенно не переносимы между терминалами и операционками.

Почему? Неужели в Linux не работает Alt+X? Или во FreeBSD? Что, собственно, не является переносимым?
Спасибо сказали:
NameRec
Сообщения: 8

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

Сообщение NameRec »

jsv писал(а):
20.02.2007 15:01
В винде ещё надо не забыть :set winaltkeys=no
Должно помочь (во всяком случае когда-то давно у меня работало, правда, это ещё под win98 было),

Увы - не помогает :((. Как и следует из документации горячие клавиши в меню работать перестали, но ситуация не изменилась. Кроме того, по документации, положение этого флага по-умолчанию (winaltkeys=no) означает приоритет меню в обработке Alt-комбинаций, другие же Alt-сочетания доступны для маппирования.

jsv писал(а):
20.02.2007 15:01
... хотя всё равно не советую.

Мне по роду работы приходится иметь дело только с Windows, поэтому для меня на первом месте вопросы удобства (в моём понимании), а не совместимости. Ну раз уж речь зашла о последней, хотелось бы выяснить: я правильно понимаю, что в *nix Alt-сочетаниями пользоваться не принято? Мне это кажется странным потому, что я видел в примерах .vimrc использование, в частности Alt+A, Alt+F и пр. Cream for VIM поставляется с такими сочетаниями в cream-keys.vim. Что, собственно, здесь плохого?

Сейчас мне кажется, что дело в кодировке. Я выяснил, что в cp1251 Alt+X означает латинскую "o", в utf-8 уже другое. Интересно: по какому принципу VIM преобразует Alt-последовательности?
Спасибо сказали:
jsv
Сообщения: 67

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

Сообщение jsv »

NameRec писал(а):
20.02.2007 15:33
я правильно понимаю, что в *nix Alt-сочетаниями пользоваться не принято?

Alt-сочетаниями не принято пользоваться в виме. Ими принято пользоваться в емаксе :)

В виме обычно работают в терминале, а терминалы обычно транслируют alt+<символ> одним из 2 способов: либо устанавливая 8-й бит, либо посылая последовательнось <escape>+<символ>. То бишь их довольно трудно отличить от русских букв в одном случае и от последовательного нажатия 2 разных кнопок -- в другом. К слову сказать, в вимовской нотации <M-x> как раз и означает x с установленным 8-м битом, именно поэтому вам :map ш и показывает.
Спасибо сказали:
NameRec
Сообщения: 8

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

Сообщение NameRec »

jsv писал(а):
20.02.2007 16:17
В виме обычно работают в терминале, а терминалы обычно транслируют alt+<символ> одним из 2 способов: либо устанавливая 8-й бит, либо посылая последовательнось <escape>+<символ>. То бишь их довольно трудно отличить от русских букв в одном случае и от последовательного нажатия 2 разных кнопок -- в другом. К слову сказать, в вимовской нотации <M-x> как раз и означает x с установленным 8-м битом, именно поэтому вам :map ш и показывает.

:ohmy:Я проникся. :huh:Круто. Мне бы такое в голову не пришло. Это многое объясняет. Интересно, есть ли возможность заставить GVIM всегда транслировать Alt-последовательности в <ESC> + <клавиша>?
Спасибо сказали:
Аватара пользователя
nonstop
Сообщения: 132
ОС: Slackware

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

Сообщение nonstop »

после презентации Vim Andrei Zmievski выложил интересные доки
"VIM for (PHP) Programmers" slides and resources
и собственно pdf
коротко и без лишних слов
отличная агитка :)
slackware - linux for human brains
Спасибо сказали:
NameRec
Сообщения: 8

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

Сообщение NameRec »

nonstop писал(а):
22.02.2007 12:37
после презентации Vim Andrei Zmievski выложил интересные доки
"VIM for (PHP) Programmers" slides and resources
и собственно pdf
коротко и без лишних слов
отличная агитка :)

Спасибо за ссылку. Только чувствую, что доводить до состояния "привычного" Multi-Edit придётся долго... Но попробую!
Спасибо сказали:
Аватара пользователя
pento
Сообщения: 403
ОС: Fedora 10

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

Сообщение pento »

Кто-нибудь может объяснить толково, чем отличается обычный маппинг типа

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

" F3 - list all errors
nmap <F3> :copen<cr>

от такого

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

" F3 - list all errors
nnoremap <F3> :copen<cr>

?
Вот nore вообще для чего?
Спасибо сказали:
Аватара пользователя
nonstop
Сообщения: 132
ОС: Slackware

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

Сообщение nonstop »

pento писал(а):
22.02.2007 22:10
Вот nore вообще для чего?

:help map
:nm[ap] {lhs} {rhs} *:nm* *:nmap*
Map the key sequence {lhs} to {rhs} for the modes
where the map command applies. The result, including
{rhs}, is then further scanned for mappings. This
allows for nested and recursive use of mappings.
:no[remap] {lhs} {rhs} *:no* *:noremap*
Map the key sequence {lhs} to {rhs} for the modes
where the map command applies. Disallow mapping of
{rhs}, to avoid nested and recursive mappings. Often
used to redefine a command. {not in Vi}
slackware - linux for human brains
Спасибо сказали:
Аватара пользователя
pento
Сообщения: 403
ОС: Fedora 10

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

Сообщение pento »

(nonstop @ Feb 23 2007, в 11:26) писал(а):Disallow mapping of
{rhs}, to avoid nested and recursive mappings.

Можешь пояснить?
Спасибо сказали:
Аватара пользователя
nonstop
Сообщения: 132
ОС: Slackware

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

Сообщение nonstop »

pento писал(а):
23.02.2007 14:23
(nonstop @ Feb 23 2007, в 11:26) писал(а):
Disallow mapping of
{rhs}, to avoid nested and recursive mappings.

Можешь пояснить?

запрещает навесить на клавишу что-то еще, т.е. перекрыть предыдущий map
теория, надо попробовать самому
slackware - linux for human brains
Спасибо сказали:
Ответить