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

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

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

Аватара пользователя
xorader
Сообщения: 1030
Статус: собирающий миры
ОС: Debian

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

Сообщение xorader »

кстати, посоветуйте как лучше к vim a(i)spell прикрутить ? на гугле сейчас найду, конечно (так как видел примеры), но может кто что ещё посоветует ? :)
Molchanov Alexander (aka Xor)
*offtopic* - ololo!
Спасибо сказали:

sdk
Бывший модератор
Сообщения: 210

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

Сообщение sdk »

А у меня стоит

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

set foldmethod=indent

И таким образом все-все файлы (и на баше, и на перле, и на сях, и на плюс-плюсах) фолдятся по отступу, который у меня стоит равным 3 (set shiftwidth=3).
Еще я нахожу очень удобной команду нормального режима zi -- она переключает фолдинг.

xorader
Видел на www.vim.org соответствующий плагин, но никогда не пользовался.

PS. Скриптик я закинул. См. сюда
Серьезность - это способ сделать простые вещи сложными.
Если много знать - устанут глаза. Если много спать - то нет.
Нас никому не сбить с пути - нам пофигу куда идти.
:-)
Спасибо сказали:

Аватара пользователя
madskull
Сообщения: 1019
Статус: Экс-металлюга

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

Сообщение madskull »

Вот как бы сделать не так (set foldmethod=indent):

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

sub do_split
{
+--  3 lines: my ($conf) = @_;-----------------------------------
}


а вот так

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

+--  6 lines: sub do_split--------------------------------------------

автоматически
ArchLinux / IceWM
Спасибо сказали:

sdk
Бывший модератор
Сообщения: 210

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

Сообщение sdk »

madskull
Попробуй вот так: (пришлось пошерудить доки)

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

:set foldmethod=expr
:set foldexpr=getline(v:lnum)=~'^sub'&&getline(v:lnum+1)=~'^{'?'>1':getline(v:lnum)=~'}'?'s1':'-1'


У меня на тестовом примере заработало :).

ЗЫ. В виме нет ничего невозможного -- убеждаюсь снова и снова! :thumbsup:
Серьезность - это способ сделать простые вещи сложными.
Если много знать - устанут глаза. Если много спать - то нет.
Нас никому не сбить с пути - нам пофигу куда идти.
:-)
Спасибо сказали:

Аватара пользователя
madskull
Сообщения: 1019
Статус: Экс-металлюга

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

Сообщение madskull »

Бывает, "хвосты" остаются. Но все равно спасибо за наводку, на досуге поковыряю.

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

+--  7 lines: sub _msg------------------------------------------------
    exit(-1) unless $lvl;
    return '';
}  

Добавлено:
И ковырять особо не пришлось

:set foldexpr=getline(v:lnum)=~'^sub'&&getline(v:lnum+1)=~'^{'?'>1':getline(v:lnum)=~'^}'?'s1':'-1'

PS Пожалуй, покруче перла будет...
Добавлено:
Да, в командном режиме работает на ура. Но если вставить в ~/.vimrc -- не пахает...
Добавлено:
Видимо, в файле конфигурации надо строку "set foldexpr=" как-то по другому изобразить. Но вот как -- пока не могу найти.
Добавлено:
(Я вас не утомил?)
Все заработало, неправильно (не полностью) скопировал строку.
Помогло set debug=msg
ArchLinux / IceWM
Спасибо сказали:

sdk
Бывший модератор
Сообщения: 210

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

Сообщение sdk »

:)
Только что хотел сказать, что забыл второй "^".
Насчет .vimrc -- думаю дело в "квоттинге" этой монстрообразной строчки.
Скорее всего надо где-то поставить лишние слэши (за-escape-ить, так сказать :) ).
Эксперементировать сейчас не буду, потому как отбываю спать :).
Добавлено:
Ни в коем разе не утомился :).
Рад что все ОК.
Серьезность - это способ сделать простые вещи сложными.
Если много знать - устанут глаза. Если много спать - то нет.
Нас никому не сбить с пути - нам пофигу куда идти.
:-)
Спасибо сказали:

Аватара пользователя
valeri_ufo
Бывший модератор
Сообщения: 274
Статус: Everywhere, yet nowhere

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

Сообщение valeri_ufo »

незнаю может каму интересно вот мой vimrc

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

syntax on
set hlsearch
set ruler
set number
set tabstop=4
set bs=2
set ignorecase
"set endofline=on
"set insertmode=off
"set sol=on

set backup
set backupdir=~/.vimbk

"my highlights !
highlight Comment font= cterm=NONE ctermfg=yellow
highlight Todo font= cterm=underline ctermbg=yellow ctermfg=red

"MAPs
map <C-b> <Left>
map <C-f> <Right>
map <C-n> <Down>
map <C-p> <Up>
map <C-a> <Home>
map <C-e> <End>
map <S-f> <C-Right>
map <S-b> <C-Left>
"map <M-f> <C-Right>
"map <M-b> <C-Left>
map ?     <Undo>
"map <C-r> <Redo>
nmap <F10> :qa<CR>
nmap <F9> :wq!<CR>

несовсем мой он, со мной им поделились, мне довольно удобно с ним
Спасибо сказали:

Аватара пользователя
xorader
Сообщения: 1030
Статус: собирающий миры
ОС: Debian

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

Сообщение xorader »

а я себе таки добавил vimspell с utf-8 :)
http://bugs.gentoo.org/show_bug.cgi?id=66341#c5
так что вот добавились строчки:

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

" highlight SpellErrors ctermfg=red cterm=underline term=reverse
let spell_executable = "aspell"
let spell_language_list = "ru,en"
let spell_auto_type = "txt,mail,text,none"
let spell_guess_language_ft = "txt,mail,text"
nmap \sr :SpellSetLanguage ru<CR>
nmap \se :SpellSetLanguage en<CR>

писать письма в vim'е такой мегарулез!!! ням ням ням прямо :)) (*щастливо зажмуривается*)
Molchanov Alexander (aka Xor)
*offtopic* - ololo!
Спасибо сказали:

sdk
Бывший модератор
Сообщения: 210

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

Сообщение sdk »

2xorader:
А ты какой почтовик используешь?
А то я вот жду-недождусь когда KDE-шники прикрутят VimPart к KMail... :)
Серьезность - это способ сделать простые вещи сложными.
Если много знать - устанут глаза. Если много спать - то нет.
Нас никому не сбить с пути - нам пофигу куда идти.
:-)
Спасибо сказали:

Аватара пользователя
xorader
Сообщения: 1030
Статус: собирающий миры
ОС: Debian

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

Сообщение xorader »

mutt (слез с sylpheed-claws :) )
Molchanov Alexander (aka Xor)
*offtopic* - ololo!
Спасибо сказали:

Аватара пользователя
Sonic
Сообщения: 478

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

Сообщение Sonic »

Может это в FAQ засунуть? И по мере возможности дополнять?
LinuxForum.ru :: Форум пользователей ОС Linux
Спасибо сказали:

Аватара пользователя
serg_sk
Бывший модератор
Сообщения: 2749
Статус: <3 Anime
ОС: Gentoo Linux <3

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

Сообщение serg_sk »

Sonic, пока ИМХО, не стоит, вот когда разговор закончиться, то тоды слепить усе в кучу у в FAQ!
Не ждали?! А я приперся!
Помойка Gentoo'шника
-------
Спасибо сказали:

Аватара пользователя
madskull
Сообщения: 1019
Статус: Экс-металлюга

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

Сообщение madskull »

Не скоро он закончится....
ArchLinux / IceWM
Спасибо сказали:

Аватара пользователя
Warderer
Модератор
Сообщения: 1055
Статус: киберпИнгвин на гусеничном ходу
ОС: Debian unstable

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

Сообщение Warderer »

А в insert-mode как сделать автокомплит путей? Иногда очень надо...
Читаю вслух с выражением маны - $50/ч + стоимость звонка. Настраиваю сервисы за Вас - $100/ч + стоимость выезда и проживания.
И восемь строк матом...(бесплатно)
Спасибо сказали:

sdk
Бывший модератор
Сообщения: 210

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

Сообщение sdk »

Пишешь часть пути, потом Ctrl-X + Ctrl-F.
Дальше -- перебор вариантов с помощью обычных Ctrl-N, Ctrl-P.
Серьезность - это способ сделать простые вещи сложными.
Если много знать - устанут глаза. Если много спать - то нет.
Нас никому не сбить с пути - нам пофигу куда идти.
:-)
Спасибо сказали:

Аватара пользователя
madskull
Сообщения: 1019
Статус: Экс-металлюга

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

Сообщение madskull »

Век живи - век учись! А все равно дурнем помрешь.

А как дату/время вставить?
ArchLinux / IceWM
Спасибо сказали:

sdk
Бывший модератор
Сообщения: 210

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

Сообщение sdk »

:read !date

Для подстройки формата вывода надо почитать date --help :).
Серьезность - это способ сделать простые вещи сложными.
Если много знать - устанут глаза. Если много спать - то нет.
Нас никому не сбить с пути - нам пофигу куда идти.
:-)
Спасибо сказали:

Аватара пользователя
madskull
Сообщения: 1019
Статус: Экс-металлюга

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

Сообщение madskull »

Вот спасибо! Как раз хотел спросить, как вставить вывод любой команды.

Зато я знаю, как можно с помощью внешних команд творить что-нибудь с текстом.
Например, сортировка всего текста:
:%!sort

Или выделенного фрагмента
:'<,'>!sort

:thumbsup:
ArchLinux / IceWM
Спасибо сказали:

sdk
Бывший модератор
Сообщения: 210

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

Сообщение sdk »

Не за что :).
Зато я знаю, как можно с помощью внешних команд творить что-нибудь с текстом.
Например, сортировка всего текста:
:%!sort

Или выделенного фрагмента
:'<,'>!sort

Да, это тоже приятно! :)

А еще я иногда играюсь в vim-е в тетрис и сокобан. Вы эти чудеса видели? :)
Если нет, то срочно посмотрите. Они лежат в первой 20 (упорядоченной по рейтингу) в разделе скриптов на www.vim.org.

Кстати, еще фишка:
Когда пишу проги я часто вставляю в код комментарии типа:

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

// TODO: не забыть добавить виртуальный деструктор
(потому как все время забываю ;) )
или

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

// FIXME: похерить этот #inlcude и вывод в std::cerr ниже

Так вот. А потом, когда я решаю поисправлять отложенные напоследок вещи типа этих, я пишу

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

:grep -r "TODO" * (естесственно, :pwd должна выдавать директорию с исходниками)
потом
:copen

И скачу по списку :). Рай на земле :).
Может это и банально, но надеюсь, что кому-то поможет ;).

Кстати, а вы слышали, что читатели Linux Journal в очередной раз выбрали vim лучшим редактором? :)

Лирическое отступление:
Тетрисом, сокобаном, календарем с заметками, встроенным автодополнением всего и вся (включая автоматически поиск слов для дополнения в #include-ах), я пытаюсь поразить воображение своих соработников. Но они какие-то вяловатые личности :). Восхищаться восхищаются, а потом говорят: твой распрекрасный vim учить долго, времени нет. Как будто, они совсем не тратят каждый день лишние часы работая в убогих редакторах а-ля блокнот :). На меня это иногда тоску наводит :unsure:.
Серьезность - это способ сделать простые вещи сложными.
Если много знать - устанут глаза. Если много спать - то нет.
Нас никому не сбить с пути - нам пофигу куда идти.
:-)
Спасибо сказали:

Аватара пользователя
madskull
Сообщения: 1019
Статус: Экс-металлюга

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

Сообщение madskull »

Про календарь подробнее, плиз
ArchLinux / IceWM
Спасибо сказали:

sdk
Бывший модератор
Сообщения: 210

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

Сообщение sdk »

А есть скрипт.
Отображает календарь и позволяет вводить на каждое число заметки :). Почти не пользуюсь, но прикольная штука, может кому пригодится :).
Серьезность - это способ сделать простые вещи сложными.
Если много знать - устанут глаза. Если много спать - то нет.
Нас никому не сбить с пути - нам пофигу куда идти.
:-)
Спасибо сказали:

Аватара пользователя
bogus
Сообщения: 160

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

Сообщение bogus »

А вот подскажите мне: я иногда, поредактировав чего-нибудь, по привычке жму C-s. И вим от этого впадает в коматозное состояние. Это можно исправить? Или, как его из этого состояния выводить?
Как всякое несовершенное существо я могу ошибаться. Простите меня.
jabberId = foldl (flip (:)) [] "ur.rebbaj@43sugob"
Спасибо сказали:

Аватара пользователя
xorader
Сообщения: 1030
Статус: собирающий миры
ОС: Debian

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

Сообщение xorader »

C-q ? :)
Molchanov Alexander (aka Xor)
*offtopic* - ololo!
Спасибо сказали:

Аватара пользователя
bogus
Сообщения: 160

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

Сообщение bogus »

да, спасибо :)
Как всякое несовершенное существо я могу ошибаться. Простите меня.
jabberId = foldl (flip (:)) [] "ur.rebbaj@43sugob"
Спасибо сказали:

gimalay
Сообщения: 4

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

Сообщение gimalay »

Очень удобный плугин SuperTab, отступы, обычно, расставляются только в начале строки, и там <Tab> работает как обычно, ведь и дополнять собствнно нечего :) , а в остальных случаях срабатывает автодополнение, запоминает тип последнего атодополнения...

Экономит массу телодвижений.
Спасибо сказали:

sdk
Бывший модератор
Сообщения: 210

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

Сообщение sdk »

А вот еще из полезностей: нажатие Ctrl-Y вставит символ, который находится на строке выше на той же позиции, что и курсор, Ctrl-E -- соответственно на строке ниже. Попробуйте, объяснить сложно :).
Серьезность - это способ сделать простые вещи сложными.
Если много знать - устанут глаза. Если много спать - то нет.
Нас никому не сбить с пути - нам пофигу куда идти.
:-)
Спасибо сказали:

Аватара пользователя
Warderer
Модератор
Сообщения: 1055
Статус: киберпИнгвин на гусеничном ходу
ОС: Debian unstable

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

Сообщение Warderer »

Не представляю себе случаев, когда бы мне это могло пригодиться... Но прикольно...
Читаю вслух с выражением маны - $50/ч + стоимость звонка. Настраиваю сервисы за Вас - $100/ч + стоимость выезда и проживания.
И восемь строк матом...(бесплатно)
Спасибо сказали:

sdk
Бывший модератор
Сообщения: 210

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

Сообщение sdk »

А вот мне это очень часто пригождается когда я пишу программы, например, когда у меня есть объект, с которым я делаю несколько действий подряд, например:

QTable* signalTable = new QTable();
signalTable->setText(0,1,"text");
signalTable->setText(0,2,"again");
signalTable->setColumnStretchable(3);
итд.

Выделенные части я набираю тыкая Ctrl-Y :thumbsup:
Серьезность - это способ сделать простые вещи сложными.
Если много знать - устанут глаза. Если много спать - то нет.
Нас никому не сбить с пути - нам пофигу куда идти.
:-)
Спасибо сказали:

Аватара пользователя
madskull
Сообщения: 1019
Статус: Экс-металлюга

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

Сообщение madskull »

(sdk @ Четверг, 02 Декабря 2004, 22:28) писал(а):А вот мне это очень часто пригождается когда я пишу программы, например, когда у меня есть объект, с которым я делаю несколько действий подряд, например:

QTable* signalTable = new QTable();
signalTable->setText(0,1,"text");
signalTable->setText(0,2,"again");
signalTable->setColumnStretchable(3);
итд.

Выделенные части я набираю тыкая Ctrl-Y :thumbsup:

Здорово! Но я тоже сам не догадался, зачем это можно использовать :)
ArchLinux / IceWM
Спасибо сказали:

sdk
Бывший модератор
Сообщения: 210

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

Сообщение sdk »

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

Так что вы не одиноки :P
Серьезность - это способ сделать простые вещи сложными.
Если много знать - устанут глаза. Если много спать - то нет.
Нас никому не сбить с пути - нам пофигу куда идти.
:-)
Спасибо сказали: