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

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

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

Аватара пользователя
Attila
Сообщения: 125
Статус: Тролль-Лѣсовичокъ
ОС: Свободная aka ArchLinux

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

Сообщение Attila »

очень прошу структурировать это раздел в виде FAQ'а или иначе. Ведь очень много ценной и полезной информации, а пользоваться - неудобно. (Сам я vim'e новичок, так что выполнить этотблагородный труд врядли смогу... :blush:)
Спасибо сказали:
Аватара пользователя
pento
Сообщения: 403
ОС: Fedora 10

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

Сообщение pento »

Attila, Кстати хорошая идея. Если будет время на выходных, то займусь =)
Спасибо сказали:
Аватара пользователя
NorthDragon
Сообщения: 62
ОС: ArchLinux
Контактная информация:

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

Сообщение NorthDragon »

А можно в виме как-нибудь настроить, что-бы при использовании автодополнения список уменьшался, а не исчезал по мере дальнейшего набора текста(как во всех ИДЕ).....
Спасибо сказали:
Аватара пользователя
GRS
Сообщения: 236
Статус: C++ Pro
ОС: Suse10.2/XP

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

Сообщение GRS »

Народ поскажите какой вы ctags используете. Никак я не пойму. Вот тут где-то в теме упоминается версия 5.6, на vim.org я нашел ctags версии только 2.0, 2.1. Зато там какой-то мегапопулярный taglist, у него версий много.
Хочется себе сделать аналагично, как в этом посте на скрине.

И вообще я как-то в них запутался.

И еще вот хочется узнать, что за скрипт вот это делает

elide,
=== особенно для выявления ошибок компиляции
ах вот вы как это делаете... собираете в отдельном терминале, а потом глазками по номерам строк находите ошибки в тексте?
а мы-то, глупые, собираем прямо из vim и потом пользуемся автоподсветкой строк с ошибками и переходом между ошибками одним нажатием....


///////

Так впринципе все понятно, rc на 2 страницах выше Elide скачал :) Там вроде все есть.

У меня вот какой вопрос остался по vim, как там вкладками пользоватся, как настроить свои конбинации клавиш ? И почему так мало мануалов по этому, сплошные мануалы со списком команд в сети лежат, а том как что-нибудь на свое поправить без поллитры не сообразишь.

И вот еще что вспомнил.
Хочется две полезные фичи из Visual Assist.
1) Быстрый переход по горячим клавишам между h и cpp соответствующими (одинаковое имя и находятся в одном каталоге).
2) По нажатию горячей клавиши список всех открытых файлов и чтобы можно было нужный выбрать набрав 2-3 символа и вниз/вверх пару раз нажать, выделить нужный файл и его сделать активным.

Такие штуки или какие-нибудь похожие по функциональности уже созданы ?
Спасибо сказали:
Аватара пользователя
sarutobi
Сообщения: 676
Статус: Добрость и скромнота
ОС: Debian 5, FreeBSD 6.2/8.0
Контактная информация:

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

Сообщение sarutobi »

настроить свои комбинации клавиш - :h [ion]map
для тегов я использую taglist :TlistSessionSave <file> :TlistSessionRestore <filename>
Если интеерсно - могу как и elide бросить свой .vimrc и список плагинов
Fire and water, earth and sky - mistery surrounds us, legends never die!
Спасибо сказали:
err
Сообщения: 5
ОС: gentoo linux/ freebsd

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

Сообщение err »

Есть ли аналог eshell в emacs у vim (gvim)? Я нашел некий vimshell (http://www.wana.at/vimshell/), но с gvim он отказался работать.
:shell убог и не совсем то, что надо.
Спасибо сказали:
Аватара пользователя
kadavr
Сообщения: 55
ОС: MOPS 5.1

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

Сообщение kadavr »

по поводу ctags я уже писал где то на предыдущей странице. ctags -- сторонняя программа, она составляет нечто вроде сводки по всем классам, методам и полям в С/С++ файлах. А плагины типа taglist и omnicppcomplite используют ctags. У меня нормально всё работает только с последней версией ctags (5.6)
Спасибо сказали:
Аватара пользователя
NorthDragon
Сообщения: 62
ОС: ArchLinux
Контактная информация:

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

Сообщение NorthDragon »

NorthDragon писал(а):
01.06.2007 16:04
А можно в виме как-нибудь настроить, что-бы при использовании автодополнения список уменьшался, а не исчезал по мере дальнейшего набора текста(как во всех ИДЕ).....


Неужели никто даже не задумывался о такой фиче?
Спасибо сказали:
enov
Сообщения: 31
ОС: Suse 10.2, Slackware 12

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

Сообщение enov »

err писал(а):
02.06.2007 19:22
Есть ли аналог eshell в emacs у vim (gvim)? Я нашел некий vimshell (http://www.wana.at/vimshell/), но с gvim он отказался работать.
:shell убог и не совсем то, что надо.


у меня проблемы с PHP 5
Спасибо сказали:
Аватара пользователя
BlackStar
Сообщения: 1338
Статус: We are all Kosh
ОС: Fedora 10
Контактная информация:

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

Сообщение BlackStar »

NorthDragon писал(а):
06.06.2007 16:08
NorthDragon писал(а):
01.06.2007 16:04
А можно в виме как-нибудь настроить, что-бы при использовании автодополнения список уменьшался, а не исчезал по мере дальнейшего набора текста(как во всех ИДЕ).....


Неужели никто даже не задумывался о такой фиче?


Ничего не настраивал - список уменьшается.
Вложения
screenshot3.png
screenshot2.png
screenshot1.png
LightLang Team
Спасибо сказали:
Аватара пользователя
NorthDragon
Сообщения: 62
ОС: ArchLinux
Контактная информация:

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

Сообщение NorthDragon »

BlackStar писал(а):
06.06.2007 21:39
Ничего не настраивал - список уменьшается.

Значит все-такие задумывались.... разработчики вима :)) буду смотреть что у меня не так настроено
Спасибо сказали:
Аватара пользователя
nonstop
Сообщения: 132
ОС: Slackware

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

Сообщение nonstop »

slackware - linux for human brains
Спасибо сказали:
bear-cub
Сообщения: 20

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

Сообщение bear-cub »

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

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

как я понял, поправте что не так
:set foldexpr=
<поисковое выражение начала блока>
? <уровень вкладки ДО блока>
: <поисковое выражение конца блока>
? <уровень вклади БЛОКА>
: <уровень вкладки ПОСЛЕ блока>

<поисковое выражение>=
getline(v:lnum)=~'<текст, который ищем>'

Собственно я пытаюсь добится вложенных складок по принципу {{{ и }}}
только вместо {{{ и }}} хочу сделать --< и --</

Вот пример:
--<folding 1>
--<folding 2-1>
print 'some 1'
--</folding 2-1>

--<folding 2-2>
print 'some 2'
--</folding 2-2>
print 'some 3'
--</folding 1>
Спасибо сказали:
Аватара пользователя
nonstop
Сообщения: 132
ОС: Slackware

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

Сообщение nonstop »

slackware - linux for human brains
Спасибо сказали:
Аватара пользователя
nonstop
Сообщения: 132
ОС: Slackware

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

Сообщение nonstop »

vim открыт почти целый день, добавил в statusline часы

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

set statusline=%<%f\ %h%m%r%=%-14.(%l,%c%V%)\ %P\ %{strftime(\"%a\ %b\ %d\ -\ %H:%M\")}


если кто не видел еще:
http://www.viemu.com/vi-vim-cheat-sheet.gif
slackware - linux for human brains
Спасибо сказали:
algol84
Сообщения: 1

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

Сообщение algol84 »

Добрый день!
Простите за банальный вопрос новичка...
Как мне в консольном Vim ввести символы #, №? Где то видел, что есть последовательность символов для отображения, но вот где видел, найти не могу теперь :(((
Ps. # вводится при русской раскладке, но неудобно в си переключаться взад назад...
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

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

Сообщение sash-kan »

algol84, наверно, разговор про

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

:h digraph.txt
?
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
GRS
Сообщения: 236
Статус: C++ Pro
ОС: Suse10.2/XP

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

Сообщение GRS »

Проблема с плагинами.

Стоит vim 6.4, которые уже никто не поддерживает, поэтому скачал 7.1 и собрал его. Прав рутовсих нет, поэтому запихал в свою дирикторию bin. Создал скриптик и запускаю его через runvim.
Хотел уже собственно сделать заключетильное дело, установить плагины и пользоватся ими - и фиг.
Вначале установил все котороые у меня были (BufExplorer,OmniComplete,taglist) - при старте куча ошибок
Error detected while processing /home/***/.vim/plugin/complete.vim:
line 12:
E117: Unknown function: omni#cpp#settings#Init
line 13:
E121: Undefined variable: g:OmniCpp_ShowScopeInAbbr
E15: Invalid expression: g:OmniCpp_ShowScopeInAbbr
line 14:
E121: Undefined variable: g:OmniCpp_ShowPrototypeInAbbr
E15: Invalid expression: g:OmniCpp_ShowPrototypeInAbbr
line 15:
E121: Undefined variable: g:OmniCpp_ShowAccess
E15: Invalid expression: g:OmniCpp_ShowAccess
line 43:
E746: Function name does not match script file name: omni#cpp#complete#Init
line 565:
E746: Function name does not match script file name: omni#cpp#complete#Main
Error detected while processing /home/***/.vim/plugin/cpp.vim:


Решил их по очереди установить и опробовать. Первый по алфавиту BufExplorer. Вставил его в нужное место (~/,vim/plugin), запускаю runvim (версия 7.1 при старте, bufexplorer написанона работает с 7.0 и выше). Читаю доку к плагину.
USAGE *bufexplorer-usage*

To start exploring in the current window, use: >
\be or :BufExplorer
To start exploring in a newly split window, use: >
\bs or :SBufExplorer
To start exploring in a newly (forced) vertical split window, use: >
\bv or :VSBufExplorer


Попробовал все команды - ни одну vim говорит не знаю. Команды \be - и другие начинающие со обратного слеша, он не дает ввести.

В чем проблема, как решить ?
Спасибо сказали:
Аватара пользователя
sarutobi
Сообщения: 676
Статус: Добрость и скромнота
ОС: Debian 5, FreeBSD 6.2/8.0
Контактная информация:

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

Сообщение sarutobi »

В запущенном vim
выполните :version и убедитесь что запущенный вим версии 7.0 или 7.1 - в младших версиях omnicomplete отсутствует
выполните :helptags /home/user/.vim/doc - если плагины устанавливались правильно, то после этого можно смотреть справку через :help <команда>
поищите в /home/user/.vimrc фразу leader - вполне возможно что значение "/" переопределено (let mapleader="new mapleader")
не так давно elide выкладывал свой .vimrc. Посмотрите в него - там много интересного
Fire and water, earth and sky - mistery surrounds us, legends never die!
Спасибо сказали:
Аватара пользователя
pento
Сообщения: 403
ОС: Fedora 10

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

Сообщение pento »

А не подскажет кто, как можно отступ "декоративный" сделать слева от текста...ну как полоса нумерации линий, только без этой нумераци.
А в полноэкранном режиме не совсем удобно работать?
Перекрасить цифры нумерации в цвет фона не предлагать :)
Спасибо сказали:
Аватара пользователя
sarutobi
Сообщения: 676
Статус: Добрость и скромнота
ОС: Debian 5, FreeBSD 6.2/8.0
Контактная информация:

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

Сообщение sarutobi »

попробуй
set foldcolumn=2
Fire and water, earth and sky - mistery surrounds us, legends never die!
Спасибо сказали:
Аватара пользователя
pento
Сообщения: 403
ОС: Fedora 10

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

Сообщение pento »

sarutobi, ооо!
Большое спасибо! :)
Спасибо сказали:
Аватара пользователя
inline
Сообщения: 72
ОС: Gentoo

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

Сообщение inline »

Поставил плагин tSkeleton, написал шаблоны. Только одно не нравится: есть, например, шаблон

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

/********************************************************************
 * <+FILE NAME+>                                                     *
 ...

и каждый раз, с различной длиной имени файла, звездочка справа съезжает неизвестно куда - приходится вручную поправлять. Подскажите, как сделать длину <+FILE NAME+> фиксированной (т.е. при необходимости дополняющейся пробелами)?
Спасибо сказали:
xvadim
Сообщения: 4
ОС: Fedora 7

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

Сообщение xvadim »

Можно ли как-то заставить работать дополнение слов по Ctrl-n, Ctrl-p в utf8? langmap ведь не работает. А переключаться каждый раз на английский при редактировании русских текстов грустно.
Спасибо сказали:
beholder
Сообщения: 29

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

Сообщение beholder »

Вообще то хоткеи в insert mode работают и без langmap'а.
Спасибо сказали:
xvadim
Сообщения: 4
ОС: Fedora 7

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

Сообщение xvadim »

>Вообще то хоткеи в insert mode работают и без langmap'а.
В gvim почему-то не работает Ctrl-n, Ctrl-p, а вставляются русские буквы т и з. Это как-то можно побороть? Или это глюк GTK?
Спасибо сказали:
HhyperR
Сообщения: 12
ОС: Ubuntu Feisty

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

Сообщение HhyperR »

Допилил наконец-то свой vim. Щас буду делиться находками :)

set title - Показывать заголовок в терминале
set autoread - Если файл изменился, автоматически обновить буфер

Если вам мешают рядом с файлами file.swp и file~ (т.е. бэкапы всякие), можно сделать что б они сохранялись в одной директории:

set backupdir=~/.vim/tmp,/tmp
set directory=~/.vim/tmp,/tmp

Я заставил работать русскую раскладку в utf-8 вот этим (переключать надо ctrl+shift-6)
set keymap=russian-jcukenwin
set iminsert=0
set imsearch=-1

Что б при запуске не писалось про детей уганды :) можно сделать так:
set shortmess+=I (я вобще сделал shortmess=tToOI)

Вот мой statusline (в дополнение к стандартному показывает кодировку и время последнего изменения файла):
set statusline=%t\ %y%m%r[%{&fileencoding}]%<[%{strftime(\"%d.%m.%y\",getftime(expand(\"%:p\")))}]%k%=%-14.(%l,%c%V%)\ %P

Что б убрать строчки "-----" в фолдингах и "|" в вертикальных разделителях окон:
set fillchars=vert:\ ,fold:\ (в конце должен быть пробел)

Закрывать фолдинги автоматически (мне показалось очень удобно)
set foldclose=all

Это для режима list
set listchars+=tab:>-,trail:-,extends:>,precedes:<,nbsp:%

Для нормальной работы backspace в режиме вставки:
set backspace=indent,eol,start

y, d, c и т.д. без указания регистра используют иксовый clipboard
set clipboard+=unnamed

Клавишу <f1> лучше занять под что-то полезное:
set pastetoggle=<F1>

Тоже неплохая фича для блочного выделения (ctrl-v) (не знаю как написать, смотрите сами :))
set virtualedit=block

Если ваш терминал поддерживает 256 цветов (вроде все новые версии на данный момент), лучше это поставить:
set t_Co=256
А так же поставить colorscheme которая это поддерживает, например desert256

Консольные менюхи для выбора кодировки и перевода строки:
menu Encoding.KOI8-R :edit ++enc=koi8-r<CR>
menu Encoding.Windows-1251 :edit ++enc=cp1251<CR>
menu Encoding.IBM-866 :edit ++enc=ibm866<CR>
menu Encoding.UTF-8 :edit ++enc=utf-8<CR>
menu EOLformat.Unix :set fileformat=unix<CR>
menu EOLformat.DOS :set fileformat=dos<CR>
menu EOLformat.Mac :set fileformat=mac<CR>
Вызвать менюхи по f8
map <S-F8> :emenu Encoding.<C-Z>
map <C-F8> :emenu EOLformat.<C-Z>

Переназначить клавишу Y на более логичное действие (moolenaar сам это советует)
map Y y$

Полезно если надо один раз скопировать и много раз заменить выделение (иначе надо копировать в именованый регистр)
vnoremap p "_dP

Что б не тянутся к esc в режиме вставки (мне кажется самое удобное)
imap jj <Esc>

Пробел всё равно работает как клавиша l, пусть открывает фолдинги
nmap <Space> zo
Q - для режима Ex, который практически никогда не используется, пусть закрывает фолдинги
nmap Q zc

Удобный переход по окнам:
map <C-H> <C-W>h
map <C-J> <C-W>j
map <C-K> <C-W>k
map <C-L> <C-W>l

Удобные функции для мапингов которые должны работать во всех режимах:
function! Map_ex_cmd(key, cmd)
execute "nmap ".a:key." " . ":".a:cmd."<CR>"
execute "cmap ".a:key." " . "<C-C>:".a:cmd."<CR>"
execute "imap ".a:key." " . "<C-O>:".a:cmd."<CR>"
execute "vmap ".a:key." " . "<Esc>:".a:cmd."<CR>gv"
endfunction
function! Toggle_option(key, opt)
call Map_ex_cmd(a:key, "set ".a:opt."! ".a:opt."?")
endfunction

Использовать так:
call Toggle_option("<S-F11>", "list")
call Toggle_option("<C-F11><C-F11>", "wrap")
call Toggle_option("<C-S-F11>", "spell")
call Toggle_option("<C-F11><F11>", "cursorcolumn")
call Map_ex_cmd("<F2>", "write")
call Map_ex_cmd("<F10>", "qall")
call Map_ex_cmd("<S-F10>", "qall!")
call Map_ex_cmd("<F11>", "nohlsearch")

В режиме вставки подсвечивать текущую строку и сделать statusline темно-красным
autocmd InsertEnter * set cursorline
autocmd InsertEnter * highlight StatusLine ctermbg=52
autocmd InsertLeave * highlight StatusLine ctermbg=236 - заменить на нормальный цвет statusline (посмотреть можно с помощью :hi StatusLine)
autocmd InsertLeave * set nocursorline

При нажатии q: подсвечивать statusline темно-зеленым
autocmd CmdwinEnter * highlight StatusLine ctermbg=22
autocmd CmdwinLeave * highlight StatusLine ctermbg=236

При создании нового заголовочного файла C\C++ вставлять следующее:
#ifndef HEADER_FILE_NAME_H
#define HEADER_FILE_NAME_H
тут курсор
#endif

function! NewHFile()
let filename=substitute(toupper(expand("%:t")), '[^A-Z]', '_', 'g')
execute "normal i"."#ifndef ".filename."\<cr>"."#define ".filename."\<cr>\<cr>\<cr>\<cr>"."#endif"."\<esc>0kk"
set nomodified
endfunction
autocmd BufNewFile *.h,*.hpp,*.H,*.hh call NewHFile()

*.h распознавать как файл С, для С++ надо использовать .hh, .H, или .hpp
autocmd BufNewFile *.h set filetype=c

В буфере справки отключать номера строк
autocmd FileType help setlocal nonumber


Позже напишу про плагины

PS Скриншот на лоре: http://www.linux.org.ru/view-message.jsp?m...che=-1464923429
PPS Мой vimrc: http://hhyperr.narod.ru/vimrc.html
Спасибо сказали:
HhyperR
Сообщения: 12
ОС: Ubuntu Feisty

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

Сообщение HhyperR »

Немного доделал тему desert256

colorscheme desert256

Подсветка текущей строки в режиме вставки (см. пред. пост) и текущего столбца (если включено set cursorcolumn)
highlight CursorColumn ctermbg=233
highlight CursorLine cterm=none ctermbg=233

highlight Folded ctermbg=234 ctermfg=136 - Фолдинги
highlight LineNr ctermfg=238 - Номера строк
highlight MatchParen ctermbg=240 - Подсветка парной скобки
highlight NonText ctermbg=232 ctermfg=235 - Всякие "~" внизу экрана
highlight Pmenu ctermbg=52 - Меню автодополнения
highlight StatusLine cterm=none ctermbg=236 - statusline текущего окна
highlight StatusLineNC cterm=none ctermbg=236 ctermfg=243 - остальных окон
Строка для табов:
highlight TabLine cterm=none ctermbg=236 ctermfg=145
highlight TabLineFill ctermfg=236
highlight TabLineSel cterm=none ctermbg=240 ctermfg=253
Вертикальный разделитель окон:
highlight VertSplit ctermfg=236
Спасибо сказали:
Аватара пользователя
pento
Сообщения: 403
ОС: Fedora 10

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

Сообщение pento »

Таки тоже себе поставил :)

autocmd InsertEnter * set cursorline
autocmd InsertLeave * set nocursorline
Спасибо сказали:
Ответить