Pull to refresh

Comments 70

Вам почетное уважение, за то, что на протяжении такого срока пользуетесь этим редактором! Я бы так не смог, возможно из-за того, что не привык!
как раз дольше пользуясь начнешь и привыкать )
судя с моего опыта — пары-тройки недель терпения достаточно, потом уже в кайф
Я сперва тоже не особо хотел им пользоваться, но при правке скриптов удалённо приходилось пользовать именно vim, дальше и локально стал его иногда использовать, подстроил под себя. Всё-таки это очень хороший редактор, просто надо его настроить под себя и научиться им пользоваться. «Порог вхождения» в него не самый низкий, но оно того стОит…
Спасибо, узнал много нового, снова левелап :)

set listchars=tab:··
set list
Что-то не хочет работать…
А если set encoding=utf8 в самом начале и .vimrc в нём же сохранить?
хм, никак. Оно должно работать в консоли? В том же .vimrc в блоках if…
По идее да. А если не в .vimrc писать, а после запуска эти опции выставить — тоже не работает?
Не работает, только в том же .vimrc в конце некоторых строк пишет. Видимо, он действительно обрабатывает только реальные \t, как написали ниже.
Ну да, только табуляции подсвечиваются. Если табуляция развернулась в пробелы — это уже не табуляция, а пробелы Вим к сожалению подкрашивать не умеет, только неразрывные.
Интересный конфиг, совсем недавно дополнял свой, и как раз искал, что-то подобное.
Если можно, возможно-ли увидеть Ваш полный конфиг?
Как раз в новом проекте начал активно использовать VIM. Спасибо за статью — как нельзя кстати!
set listchars=tab:··
работает в файлах с настоящими символами \t, например, откройте Makefile от любого вашего проекта.
для мейкфайлов не забывайте set noet или вводите в мейкфайлах реальные табы как Ctrl-V-TAB.
:retab в открытом буфере причешет табы к текущим настройкам.
UFO landed and left these words here
А как писать мейкфайлы, если таб ставит 4 пробела?
nmake с этим ладит, а вот make…
для табов внутри мейкфайлов можно следовать рекомендации :h et
«To insert a real tab when 'expandtab' is on, use CTRL-V»

но я для Мейкфайлов ввожу :set noet
au FileType crontab,fstab,make set noet ts=8 sw=8
Могу сходу добавить полезную строчку:

set paste #При копипасте корректно проставляются все отступы
да, это удобная опция. но я ее не сохранил в самом конфиге по причине того, что она портит автоотступы. ввожу ее по мере необходимости.
на этот случай можно вписать так:
set pastetoggle=
Блин. Ну за столько лет ведь можно было понять, что использование vim — бестолковое занятие, и зайузать емакс ^__^
ок. неиспользуй.
UFO landed and left these words here
я вижу многих заинтересовала проблема табов в мейкфайлах. вспомнил, что в нашем проекте мы используем
# vim: set tabstop=4 shiftwidth=4 noexpandtab:
комментарии в конце файлов с тегами(modeline), которые вим умеет парсить при открытии:
:h modeline или :h vim:

это потрясающая штука, хранить некоторые настройки для вима в самих исходных кодах проекта.
Так и не смог привыкнуть к VIM, но не могу не отдать дань уважения, поскольку весьма мощный и гибкий редактор. В руках умелых превращается в удобный и незаменимый инструмент. Автору спасибо за вариант «для ленивых»)
set ignorecase
Я ещё добавляю set smartcase — Vim ищет игнорируя регистр если искомое выражение не содержит большие буквы, в противном случае учитывает регистр.
Отличный .vimrc :) Я ещё всегда использую такие настройки:
set number — показывает номера строк; для программирования очень полезно.
syntax on — активирует syntax highlighting для огромного числа языков программирования, это число можно ещё увеличить с помощью плагинов.
на самом деле номера строк не особенно нужны. vim позволяет в нормальном режиме перейти к нужной строке
можно сразу при открытии файла параметром к vim передать номер строки, на которую перевести курсор
кстати да. не все знают, что запуск в коммандлайне vim file.txt +123 сразу после открытия переместит курсор в нужную строчку
Оно-то да, но когда номера в явном виде показываются, как-то нагляднее. Например, если файл большой, сразу видно какой приблизительно сегмент редактируешь.
Хотя, возможно, у меня это просто дань привычке со времен Eclipse/Visual Studio.
А кстати, почему вы не используете set encoding=utf8? Из-за корявой работы русской langmap в этом случае, или по какой-то другой причине?
А может все же выложите весь файл? Он у вас прокомментирован надеюсь? :)
он мутант, да и по своему опыту знаю, что лучше создать с нуля, на основе вот таких вот кусочков, чем взять сразу чей-то. для любителей затюненого сразу вима я бы посоветовал обратить внимание на cream for vim.
Я, возможно, не прав, но у Вас ошибка в опции fencs — кодировка ucs-2 указана после восьмибитных кодировок, а согласно докам:

vimdoc.sourceforge.net/htmldoc/options.html#%27fencs%27
An entry for an 8-bit encoding (e.g., «latin1») should be the last, because Vim cannot detect an error, thus the encoding is always accepted.

И чуть ниже даны примеры ошибочных значений.

А максимизировать окно в win32 по-моему проще через стандартную команду:
au GUIEnter * simalt ~x

А максимизировать окно в win32 по-моему проще через стандартную команду:
Не сработает в винде с русским интерфейсом.
Не сработает в винде с русским интерфейсом.

А вот этого не знал, спасибо.
Эта штука эмулирует нажатие <Alt+Space>, а потом клавиши x, которая является шорткатом для Maximize. Но это работает только в англоязычном интерфейсе. Можно наверное попробовать туда вместо x правильную русскую букву подложить, но мне негде проверить. Да и в конфиге прийдется определять язык системы каким-то образом.
Правда я в винде максимизирую с помощью set lines=999 columns=999, не знаю зачем автор извернулся с вызовом функции из дллки.
что-то меня там не устроило под винду, поэтому пришлось делать так. раньше тоже был simalt ~x
хм, с ucs-2 действительно ошибка. но мне не мешает абсолютно. пока будет так. спасибо.
Народ, скажите как правильно в виме вставлять фрагмент кода из буфера. При включенном set ai при вставке текста он лесенкой сдвигается вправо. Каждый раз делать set noai напрягает, а в некоторых случаях еще и не помогает.
Может есть какой-то известный способ?
:set pastetoggle=<F2>
и перед вставкой нажать F2.
habrahabr.ru/blogs/vim/65518/#comment_1833859

или в конфиге пропишите
set pastetoggle=Теперь когда нужно что-то вставить из буфера, жмёте Ф10, вставили, нажали ещё раз и вернули в прежний режим.
Перед вставкой часто забываешь нажать pastetoggle, поэтому есть другое решение. Можно нажимать после вставки (если табы разъехались) кнопку, на которую забита следующая последовательность:

inoremap <silent> <C-u> <ESC>u:set paste<CR>.:set nopaste<CR>gi

В данном случае это Ctrl-u
Упс, меня не только опередили, но еще и хабраразметка моё <F5> зажевала.
В общем-то я хотел предложить то же, что и monsterzz чуть выше.
Давайте, я тоже пару моментов добавлю:

set backspace=2 — что бы нажатие клавиши Backspace и через конец строки и отступы.
set wrapmargin=5 — отступ от правой границы окна, где надо начинать перенос. Удобнее textwidth, если размеры окна изменяются.
set tildeop "~" в vim используется для изменения регистра текущего символа. Строго говоря, эта операция нарушает идеологию vi о том, что для каждой операции можно добавлять movement. Эта опция включает такую возможность, теперь, например, "~W" изменит регистр до конца слова.
set scrolloff=3 — сколько строк вверху и внизу экрана показывать при скроллинге. Очень удобно.

Еще я себе ставлю set laststatus=2 но автор, насколько я понимаю, стремится, наоборот, сохранить рабочее поле экрана. YMMV.

Вообще, первая команда, которую надо поставить в vim — set nocompatible и отключить (нужную только олдовым хакерам BSD 4.4-Lite) совместимость с vi Билла Джоя. Он сразу станет удобней работать.
спасибо большое за scrolloff.
set nocompatible конечно же есть. last status и статусная строка имеют вид
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 " always show the status line
nocompatible устанавливается автоматически, если есть .vimrc или .gvimrc.
Для опции backspace я бы указал set backspace=indent,eol,start, так правильнее, нагляднее и понятнее, поддержка set backspace=2 оставлена из соображений совместимости.
а фолдингом не пользуемся?
:set foldenable
*жмет :wq вместо кнопки «написать»*
вот бы такую штуку, чтобы он предлагал фолдинги — как kate и другие редакторы.
В смысле, есть вот у меня пара скобочек { и } — а вимчик отображает на левых полях какую-нить кнопоку типа «свернуть в фолд». Такое не знаете как сделать?
set foldmethod=syntax
set foldcolumn=3

Слева появится колонка шириной в 3 символа, обозначающая где какие фолдинги и какого уровня. По ней можно будет кликать для сворачивания-разворачивания. Но кликать мышкой в Vim — это как-то не очень правильно с идеологической точки зрения, быстрее делать всё с клавиатуры.
set foldmethod=manual
и использование
zf%
с установленным matchit для меня более подходяще. а вот за наводку на foldcolumn спасибо
класс, спасибо! Гы-гы, открываешь новый файл — а там все в закрытых складках… поищу опцию, чтобы были открытые
foldlevel
0 — все фолды закрыты. 1 — открыт один уровень, все остальные закрыты. И т.д.
да, у меня похожий vimrc. Там еще строчек сто настроек всяких плагинов, скриптиков, которые выполняют ctags и прочего. Однажды покорпел над созданием компактного файла системных тегов и добавил set tags+=~/.vim/systags
Спасибо за
set listchars=tab:··
set list

Еще у меня такая штука есть:
set statusline=%t\ %y%m%r[%{&fileencoding}]%<[%{strftime(\"%d.%m.%y\",getftime(expand(\"%:p\")))}]%k%=%-14.(%l,%c%V%)\ %P — делает очень информативную статус-строку
Очень доставляет также
set wildmenu — менюшки в консольке
Использование иксового клипборда:
set clipboard+=unnamed

Мимо меня когда-то прошла конфигурация, в которой цветом строки статуса показывался текущий язык.
Как это можно сделать?
Я знаю только как цветом курсора показать текущий язык ввода, если для ввода на другом языке используется keymap. Для этого нужно задать разный цвет для highlight групп Cursor и lCursor.

А так, чтобы строку статуса менять — не видел. Если найдёте — расскажи́те.
Спасибо за
set listchars=tab:··
set list

Я использую такие значения:
set listchars=tab:»\ ,trail:·,eol:¶

Тогда получается совсем как в популярных IDE
Парсер — нехороший человек. А можете как-нибудь читаемей написать?
По-моему, основная мораль статьи — важные конфиги надо класть в VCS
Еще иногда полезна подсветка строки и столбца курсора
:set cursorline
:set cursorcolumn
Дополнительно set wrap удобно включить:

Если вам не хочется, чтобы перенесенные строки мешались с номерами строк.
set showbreak=\ \ \ \ \ \ >

Символ > будет зеленый
hi NonText guifg=#0030ff ctermfg=green
Only those users with full accounts are able to leave comments. Log in, please.