Как стать автором
Обновить

Комментарии 128

эта пять +)

большое спасибо)
Для меня очень актуально для меня =) как раз сегодня этим вопросом хотел заморочится =) Спасибо!
кстати а как насчет банделсов? как в textmate?
Честно говоря, никогда в глаза textmate не видела. Может скажешь поконкретнее что именно нужно? А я уже посмотрю у себя как это делается или найду плагин.
ну к примеру вводиш echo жмеш tab получаеш echo 'string'; // и курсор находится на string
или к примеру ifelse -> tab
получаеш:
if (condition)
{
# code…
}
else
{
# code…
}
ну я поняла. В комменте выше ответила. Просто на моем этапе изучения языка, мне это пока не нужно
:help :abbreviate
В стандартной надстройке, которую я использовала здесь этого нет, но можно настроить. В интернете что-то по этой теме есть, но надо искать.

Вообще плагины для вима пишутся на какой-то модификации лиспа. Более человекоподобной. И построено все как раз на них.
Лисп тут ни при чем. У vim свой язык для написания скриптов.
Там что-то подобное… Похоже на лисп, но в более упрощенном варианте.
И совсем не похоже. Больше всего он похож на BASIC. В том смысле, что синтаксис строки кода определяется командой.

call MyFunc(myArg)

но

let myVar = MyFunc(myArg)

И вообще, очень велик шанс, что для vim8 скрипты уже будем писать целиком на Python. Сейчас же к нему есть только интерфейс из vim script.
«if has(»autocmd")
" au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$")
" \| exe «normal! g'\»" | endif
«endif

а разве есть такие конструкции в бэйсике? Там и ифы в середину строки не вставляются, и комментарии через одинарную кавычку, а не двойную. Кстати, я не знаю ни одного языка, где комментарии обозначались бы двойной кавычкой. Больше похоже на какой-то язык вывода. м?
И BASIC и vim script — командные ЯП. В обоих языках синтаксис строки определяется ключевым словом-командой, с которого она начинается. На этом их сходства заканчиваются.

Кстати, " — команда, означающая комментарий. т.е. начинает комментарий только если находится в начале строки, в остальных случаях — это строковые кавычки.
ну это-то понятно. Просто понять что это конкретно проблематично. Вот и предположила
кто-то минусанул, значит знает что это за язык) просветите, пожалуйста
Вы путаете VIM и EMACS.
НЛО прилетело и опубликовало эту надпись здесь
Вы тут путаете понятия. Bundles в Textmate — это наборы. В них входят команды, сниппеты, макросы, описания синтаксиса и т.д.
То что вы назвали Bundle на самом деле Snippet.
Поправь скриншот, а то он не кликабельный
а он и не кликабельный. Вот залила большего размера. Кликабельный. У меня там самое основное. Вряд ли что-либо особенно интересное можно найти)
А какая тема оформления Гнома на скрине? :)
скачала из интернета. Creamy Black. Хз найдешь ли ты ее же… Но тема приятная.
Спасибо большое за название. Нашел. Поставил. Понравилось. :)

Для тех, кому тоже приглянулась темка, вот ссылочка: gnome-look.org/content/show.php/Creamy?content=69315

Прошу прощения за оффтоп в каментах.
скриншот… что находится в предпоследнем снизу файле? :)
Хорошая статья
В этом файле находится сравнительный анализ тестов серверов. Там 30 различных организаций жесткий дисков, вообще пространства и т.д.

Наверное пройдусь как-нибудь по нему. Не по самим логам, конечно. А распишу что лучше использовать, почему… Но это позже.

Спасибо
Меня шокирует сочетание слов «Женщина» и «линукс».
Пишите пожалуйста много и чаще.
… с уважением =)
Обращать на это внимание — всё равно что показывать пальцем на негра на улице.
Незнаю как неграм, но всегда думал что женщинам внимание нравится, тем более что я ничего плохого не имел ввиду, наоборот
ничего себе сравнение!
и все таки он кликабельный и кликается он сюда www.radikal.ru/
НЛО прилетело и опубликовало эту надпись здесь
Имеется.
НЛО прилетело и опубликовало эту надпись здесь
Я работаю с автополнонением через exuberant tags. Там автодополнение идет по словарю, то есть он подставляет варианты из тех слов что знает. Я сомневаюсь что средствами плагинов можно сделать автодолнение в зависимости от контекста для каждого языка.
НЛО прилетело и опубликовало эту надпись здесь
настраиваем, но для того, чтобы понять что и в каком контексте используется, необходимо компилировать код. Или я что-то неправильно понимаю
НЛО прилетело и опубликовало эту надпись здесь
Парсят. Выделяют переменные, классы, методы функции в отдельном окошке тагов, если его открывать. Я не ковырялся особо, может быть и можно их настроить хорошо. Но в стандартной настройки они работают просто как словарь.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Не, чтобы получить полностью контекстное автодополнение — надо эвалить код. И делается это средствами самого перл, ибо only perl can parse perl.
хм… для меня перл — расширенный баш. Не более) классы и обьекты я на нем не пишу. Поэтому информацию по этой ветке я посмотрю и почитаю. Полезно. Так что можно сказать спасибо за указание моих ошибок.
Постойте-ка, а ка же Ctrl+X Ctrl+O посл имени объекта и точечки? Оно очень даже контекстное.
да, есть такой мод для Emacs называется sepia, он якобы умеет это — потому что запускает в фоне интепретатор перла (но его автодополнятор я так и не изнасиловал, он что-то автодополнял, но что я так и не понял) CPerl мод весьма толково дополняет — пытясь угадать что тебе нужно.

а еще в Sepia есть удобный sepia-repl наподобие лиспового REPL'а в котором можно писать perl код который сразу будет эвалюироваться — удобно, когда нужно что-то попробовать, чтобы не создавать 1.pl 2.pl test.pl whatever.pl

Как редактор да. Возможно настроить и чтобы автодополнял по умному. Но для этого надо искать сторонние пакеты, или писать свои, чтобы получить автодополнение по типу как в Zend Studio. По крайней мере как это только средствами плагинов vim, я не слышал. Те же exuberants tags являются пакетом системы, а не модулем вим. Самплагин как я помню называется ctags, для которого требуется этот пакет.
НЛО прилетело и опубликовало эту надпись здесь
Можно
используя сишный tags
кстати, вмест ctags посоветую cscope. Там можно найти, например, где данный метод вызывается, плюс всё, что умеет ctags
:help compl-omni
НЛО прилетело и опубликовало эту надпись здесь
Ну не знаю. На практике ничего сделать не получилось. Попробовал я настроить этот omni-complete, для этого генерировал огромный tag-file по всему проекту. Нормальных результатов он не выдаёт (выдаёт кучу каких-то посторонних методов). К тому же каждый комплит зависает секунд на 7-8, что абсолютно не приемлемо.
У меня он двухмегабайтный tags просматривает за несколько миллисекунд. Есть подозрение, что какой-то не в меру умный плагин пытается что-то сделать, в результате тратит кучу времени и всё-равно выдаёт всё подряд.
Сорри :). Беру часть своих слов обратно. Всё работает. У меня просто $this не работал, так я руки и опустил. Работает довольно быстро, если написать часть названия метода, а потом вызывать комплит. А так если после -> ничего не писать, то ищет секунд 10.
>Но таким же путем это делается и для любого другого языка.
таки для, простите, любого? А для java можно хотя бы на уровне netbeans'а (про идею, конечно молчу)?
можно настроить. Но для java лучше все-таки eclipse
НЛО прилетело и опубликовало эту надпись здесь
eclim.sourceforge.net/
Или наоборот vimplugin.org/

В обоих случаях работают вполне реальные eclipse и vim. Вся разница — в интерфейсе.
На eclim не смотрел, а vimplugin просто встраивает окошко Vim в клипсу, при этом в этом встроенном Vim у вас нет доступа к функциям автодополнения клипсы.
Серьёзно? :D У меня он вообще не встал. :) Но eclim умеет многое, в том числе автодополнение. Ещё автодополнение есть в java.vim. Там именно парсилка, а не регулярные выражения.
По NERDTree есть интересное видео в виде гифки, которое демонстрирует его возможности:
www.flickr.com/photos/30496122@N07/2862367534/sizes/o/
Нет, расскажите мне наконец, что есть в NERDTree, чего нет в стандартном netrw (:h netrw)?
Дерево?
А, понятно :) Спасибо.
Стоп, наберите ка :Explore а потом пару раз нажмите i
:) Что ещё?
Ухты, не знал, не знал :) Ну тогда так: даже учитывая то, что дерево в netrw есть, пользоваться им в NERDTree намного удобнее. Просто попробуйте :)
Ok :)
его приятней как :Sex вызывать :)
НЛО прилетело и опубликовало эту надпись здесь
ахаха!!! :-D

я все файлы, где что-либо приходится анализировать так называю. И даю им порядковые номера. Там всего-лишь логи тестов)
В самом начале — ссылка на vim.org — пробел в ссылке… поправьте :)
спасибо, исправила
НЛО прилетело и опубликовало эту надпись здесь
Во! А расскажите в чем разница между miniBufExpl и табами в 7ом виме? Табы делают miniBufExpl устаревшим?
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Чот я не понял… а разве NERDTree не дублирует всего лишь некоторые из возможностей включенного в вим по умолчанию где-то с шестой версии netrwPlugin?
NERDTree намного мощнее. Ну а назначение и у NERDTree и у netrw одно — ходить по каталогам и открывать из них файлы. Так что в каком-то смысле дублирует конечно. Ну как Vim дублирует notepad.
Я с NERDTree использую ещё и FuzzyFinder. Очень удобно переключаться между файлами — Ctrl+f, вводите сочетание символов из названия желаемого файла и VIM в drop-down списке показывает возможные варианты. Что-то подобное вроде в Textmate есть.
Vim хорош! Жалко что только недавно это осознал
Не видал еще чтоб vim так заколбасило
Хабр завалил вим.орг…
Я знал, что такое может быть, но всё равно как-то не по себе…
Хабр тут ни при чём, vim.org уже давно периодически пролёживает целыми сутками.
Я честно читал маны в попытках найти в Виме хоткей для дублирования текущей строки и способ включения фолдинга. Но безуспешно, возможно, потому что грипп. В результате, я пока пользуюсь jEdit'ом.
> дублирования текущей строки

* yyp
* :help i_CTRL-Y

> способ включения фолдинга.

$ grep fold .vimrc
set foldenable
set foldcolumn=0
set foldmethod=syntax
set foldlevelstart=99
Вобщем, грипп лучше всё-таки вылежать.
perl-support не пробовал, спасибо, посмотрю. Еще могут оказаться полезными след. маппинги:
vmap _c :s/^/#/g<Enter> " закомментировать блок кода (vmode)
vmap _C :s/^#//g<Enter> " раскомментировать

nnoremap <silent> _t :%!perltidy -q<Enter> " пропустить выделенный блок кода через perltidy
vnoremap <silent> _t :!perltidy -q<Enter> " пропустить весь файл  через perltidy
" проверка синтаксиса по :make
autocmd FileType perl set makeprg=perl\ -c\ %\ $*
Лучше
:compiler perl
Спасибо, не знал
Простой вопрос, который уже давно меня мучает в vim — принудительная идентация блока.
1. «Shift-v», выделяю блок.
2. ">"
3. Делается одинарный отступ но при этом выделение теряется. Как итог — приходится второй раз выделять, чтобы сделать бОльший отступ на этом блоке.

Гуру вима! Хелп ми :) Как не терять выделение после идентации?
> второй раз выделять, чтобы сделать бОльший отступ на этом блоке.

Во-первых, лучше n->, а во-вторых — = и autoindent вам в помощь.

> Как не терять выделение после идентации?

:help gv
А вы после этого нажмите точку (.), и этот же блок будет сдвинут ещё раз. :)
или забиндить вот это:
vmap < <gv
vmap > >gv
в конфиг ~/.vimrc или ~/.gvimrc
Лучше в ~/.vimrc, это же не GUI-специфичный мэппинг.
И еще один вопрос в дополнению к предыдущему. Как работать с несколькими файлами одновременно без использования окон — те деления экрана. Например:

> vim 1.txt 2.txt

Как затем между этими файлами переключатсья?
:b, bnext, next etc…

Опять же, читаем :help windows.
imho, так не очень удобно, особенно когда открыто много файлов. Я делаю так:
:ls (или :buffers_
Отображается список буферов, типа:
1 index.php
2 style.css
3 script.js

Нажимаем нужный порядковый номер и CTRL-^ — вуаля.
Подробнее :help buffers.
> imho, так не очень удобно
> [...]
> :help buffers

Дык я ж и говорю — :help windows, а там уже кому как хочется. Да и плагинов хватает.
Например так:
www.vim.org/scripts/script.php?script_id=159 — minibufexpl

И это — в ~/.vimrc

" F6 — предыдущий буфер
map <F6> :bp<cr>
imap <F6> <esc>:bp<cr>

" F7 — следующий буфер
map <F7> :bn<cr>
imap <F7> <esc>:bn<cr>
Я делаю vim -p 1.txt 2.txt и хожу по ним Ctrl-стрелками:
map ^[[C :tabn^M
map ^[[D :tabp^M
imap ^[[C ^[:tabn^M
imap ^[[D ^[:tabp^M
У меня вот так:

nmap <S-F2> :ls:bimap <S-F2> :ls:b
Пардон, кусок сожрался

nmap <S-F2> :ls<CR>:b<Space>
imap <S-F2> <Esc>:ls<CR>:b<Space>
www.vim.org/scripts/script.php?script_id=42 Посмотрите еще в сторону этого плагина. Я ползуюсь им, удобно. И замаппил такие комбинации клавишь:

«F5 — просмотр списка буферов

nmap :BufExplorervmap :BufExplorerimap :BufExplorer» F6 — предыдущий буфер
nmap :bpvmap :bpi
imap :bpi

" F7 — следующий буфер
nmap :bnvmap :bni
imap :bni
НЛО прилетело и опубликовало эту надпись здесь
> он не понимает код
А VS может раскрасить мне исходник на D? А vim может. ;)

> он не в курсе того, что и как нужно собрать и от чего оно зависит.
А VS в курсе? 0_o И как оно определяет зависимости? Собирать можно всех научить с помощью внешних утилит.

По исходнику на D кстати вполне реально автоматически определить зависимости, но подозреваю, что в VS это не реализовано. И правильно. Есть программка, которая делает именно это и незачем её реализовывать по пять раз в каждой IDE и редакторе.
НЛО прилетело и опубликовало эту надпись здесь
Но и не все программируют на C/C++.

Научить vim использовать внешнюю утилиту для отстройки приложения и показывания в отдельном окошке ошибок компиляции с переходом между ними по хоткею можно за 10 минут.
НЛО прилетело и опубликовало эту надпись здесь
gtags помогает.
Нужно признать, для интегрированных сред разработок (всё в одном) написано больше средств (в основном MS, Sun и IBM :]), но мне удобнее когда одна программа выполняет одну функцию. vim — для чтения и редактирования кода, gtags — для анализа кода, и т.д.
Само собой с аккуратной интеграцией друг в друга, но сохранением возможности работать самостоятельно :)
НЛО прилетело и опубликовало эту надпись здесь
ИМХО не стОит, если Вам больше по душе интегрированные среды. С vim+gtags придётся использовать ещё как минимум svn/hg/что-там-у-вас и make. Кого-то это сильно раздражает. И просто на смену привычек уйдёт немало времени.
Эмуляторы vim покрывают в лучшем случае 40% используемой мной функциональности. Была в NetBeans одно время фича Editor Servers, позволявшая использовать vim вместо умолчального блокнота. Где-то в районе 3-го NetBeans её перестали поддерживать, но в vim поддержка до сих пор сохранилась, чем успешно воспользовался vimplugin.org/ для eclipse.
НЛО прилетело и опубликовало эту надпись здесь
Vim безусловно хорош, один из самых лучших текстовых редакторов. Вообще за такой софт разработчикам надо памятник при жизни ставить :) Но понять весь его потенциал не так просто, надо копать глубже. Многие просто не понимают азов работы в нем и бросают дальнейшее использование и зря. На оф. сайте vim написано — «Vim is a highly configurable text editor built to enable efficient text editing». Как говорится, ППКС ;)
НЛО прилетело и опубликовало эту надпись здесь
эм…
наверное надо просто повесить за моником vim cheat sheet и уяснить режимы редактора. а так же понять, что делают последовательности типа c3w.

А плагины — дело наживное, главное знать, что они есть :)
Раз пошла такая пьянка…
Давно хотел поделиться опытом. В ближайшее время напишу статейку про MacVim, плюс можно будет скачать все настройки.

Какой приятный у вас шрифт в терминале. Как называется?
неплохо если бы кто нить взялся написать небольшую статью типа «Эффективная работа в Vim» :)
хотелось бы по русски почитать для начинающих с примерами:
как проверять орфографию, работать с буфером, с несколькими отрытими файлами, с html, перекодировка, поиск и замена…
Для начала можно пройти vimtutor. Он и на русском есть. Потом можно почитать этот самый блог с начала. Там есть и про работу с несколькими файлами, и про html, и про кодировки. Проверка орфографии — :help spell
А если нет проблем с английским языком — вот лучший в мире учебник: www.vi-improved.org/tutorial.php
Спасибо симпотичной девушке за замечательную статью :D +1 в карму
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории