Pull to refresh

Comments 39

Конечно всегда можно настраивать самому, но иногда требуется просто конфиг для удобной работы на чужом компьютере. (например попросили настроить сервер) Свои конфиги тянуть лень, по этому есть замечательное месте где их взять :)
проще сделать тоже самое, только с урлом на свой конфиг =)
Это если у домашнего компа есть внешний IP :) В любом случае данный конфиг очень удобен (для меня) И отступы я люблю по 2 пробела.
А у меня mercurial-репозитарий для ~/.vimrc и ~/.vim c плагинами, файлами синтаксиса. Лежит на битбакете и личном redmine.
Очень удобно — везде и всегда своя IDE :) Если кому-то нужно, могу дать урл для импорта(средства для разработки RoR-приложений, безумно удобные снипеты а-ля textmate в .rb, .erb, штатные средства для подсветки php, c++ и прочих современных языков)
конечно давай, посмотреть всем хочется я думаю :)
Подсветка синтаксися для RoR лучше всего смотрится в Konsole тема «Тёмная пастель» с немного высветленным «Цвет 1» в её настройках для нормального отображения комментариев.
В репе также лежат плагины для html-сниппетов.
Отличная статья, спасибо! На днях тоже решил научится пользоватся vim'ом, так что вы мне очень помогли.
Еще полезная команда — retab. Заменяет табы на пробелы и обратно(в зависимости от значения expandtab)
Еще более life-changing будет cindent, автоматически применяющий выбранный с помощью cinoptions стиль кодирования, как при вводе, так и при переформатировании командой =
И вобще самой-самой life-changing будет indentexpr, которая позволяет задать собственную функцию для формирования отступов на новой строке.
Удобство cinoptions в том, что там есть по управляющей конструкции практически на любой элемент форматирования, упоминаемый в большинстве стандартов кодирования. И подправить это выражение достаточно просто. А кроме того, indentexpr для С и С++ выполняется с помощью cindent, согласно $VIMRUNTIME/indent/{c,cpp}.vim
indentexpr полезен когда нужно написать скрипт индента для какого нибудь языка, у которого синтаксис отличен от си. А так да — cindent наиболее простой и при этом наиболее гибкий вариант.
а возможно с их помощью организовать следующий стиль форматирования:
* при отступе от начала блока табуляция остаётся собой;
* при выравнивании текста относительно текста предыдущей строки табуляция заменяется пробелами;
* при нажатии '=' происходило форматирование выделенного текста в соотсветствии с этими правилами.

пример 1:

class C
{
void foo();
double boo();
};

в этом примере нужно, чтобы при нажатии одного или более табов в строке с boo после double курсор останавливался на позиции foo из предыдущей строки, т.е. достигалось автоматическое выравнивание имён функций. сейчас я это делаю вручную, нажимая пробел нужно число раз.

пример 2:

void foo()
{
for(int i = 0;
i < 10;
++i)
{
cout
'умный' хабраредактор ликвидировал фрагменты текста, содержащие угловые скобки. в первом примере отступы функций от начала класса должны быть реализованы табами, а выравнивание имён этих функций относительно друг друга — пробелами. во втором примере отступ от начала функции — табами, далее 'i < 10' & '++i' должны быть выровнены пробелами относительно слова 'int'. т.е. хочется всегда нажимать таб, но во всех случаях, кроме отступов от начала блока, табы чтобы заменялись заданным в настройках числом пробелов.
спасибо за '='.
От себя добавлю комбинацию '1G=G' — форматирует ('=') с 1ой строчки ('1G') до последней ('G')
Вместо 1G ещё можно gg
а как можно сделать форматирование кода?
Хм, если я правильно вас понял, то нужно выделить форматируемый участок кода и нажать =
Как-то пытался настроить подобное. Появился досадный «артефакт» — при копировании из веб-страницы в вим линии «съезжают» вправо. Кто-нибудь пытался побороть?

Вот пример:
1. Так выглядит скопированный в vim текст (.vimrc с конфигом из статьи):
import unittest

class TestStatisticalFunctions(unittest.TestCase):

def test_average(self):
self.assertEqual(average([20, 30, 70]), 40.0)
self.assertEqual(round(average([1, 5, 7]), 1), 4.3)
self.assertRaises(ZeroDivisionError, average, [])
self.assertRaises(TypeError, average, 20, 30, 70)

2. Вот так выглядит этот текст в оригинале:
import unittest

class TestStatisticalFunctions(unittest.TestCase):

def test_average(self):
self.assertEqual(average([20, 30, 70]), 40.0)
self.assertEqual(round(average([1, 5, 7]), 1), 4.3)
self.assertRaises(ZeroDivisionError, average, [])
self.assertRaises(TypeError, average, 20, 30, 70)
set paste
Вставляем
set nopaste

Можно забиндить на комбинацию клавиш
не знал. большое спасибо
Сталкивался пару раз с подобным при копировании снаружи. Решал следующим образом: визуальное выделение блока, затем команда =. Думаю, при желании можно настроить автоматическое форматирование фрагмента после вставки.
Материала набралось на вторую часть. Впрочем, кто бы сомневался :)
Небольшой оффтоп, но часто в редакторах, сразу после отступов, я настраиваю ту самую вертикальную полоску, на 80ой колонке. Хоть в vi, на сколько мне известно, нет подобной фичи, зато можно подкрашивать часть строк, вышедших за предел 80ой колонки.

match ErrorMsg '\%>80v.\+'
А может быть кто-нибудь знает если в vim что-нибудь похожее на ctrl+r в терминале? только с поиском не в истории а в файлах rails проета
скажите, а как отключить вот это:
# комментарий, нажимаем enter
# < — это вим сам добавляет, в конфигах, некоторых скриптах. в 7.0 не было, в 7.2, кажется, стало по-умолчанию.

и ещё, как временно отключить отступы и форматировани, например на время копипаста?
Отключение автоматического комментирования:
:set formatoptions-=ro

Про отступы при вставке написано выше.
":set formatoptions=-ro" в консоли помогает, а вот в .vimrc — нет. как его правильно туда вставить? добавление в конец «set formatoptions=-ro» не помогает. содержимое .vimrc тут.
Потому что нужно не =-, а -=
Это, мягко говоря, очень странно. Возможно у вас какой-то плагин это делает, не знаю.
Вместо smarttab'a с backspace'ом можно использовать Ctrl-d, Ctrl-t в режиме вставки (сдвигает строку под курсором на shiftwidth).
Only those users with full accounts are able to leave comments. Log in, please.

Articles