Comments 39
Конечно всегда можно настраивать самому, но иногда требуется просто конфиг для удобной работы на чужом компьютере. (например попросили настроить сервер) Свои конфиги тянуть лень, по этому есть замечательное месте где их взять :)
+1
0
проще сделать тоже самое, только с урлом на свой конфиг =)
+1
Это если у домашнего компа есть внешний IP :) В любом случае данный конфиг очень удобен (для меня) И отступы я люблю по 2 пробела.
0
А у меня mercurial-репозитарий для ~/.vimrc и ~/.vim c плагинами, файлами синтаксиса. Лежит на битбакете и личном redmine.
Очень удобно — везде и всегда своя IDE :) Если кому-то нужно, могу дать урл для импорта(средства для разработки RoR-приложений, безумно удобные снипеты а-ля textmate в .rb, .erb, штатные средства для подсветки php, c++ и прочих современных языков)
Очень удобно — везде и всегда своя IDE :) Если кому-то нужно, могу дать урл для импорта(средства для разработки RoR-приложений, безумно удобные снипеты а-ля textmate в .rb, .erb, штатные средства для подсветки php, c++ и прочих современных языков)
+1
Отличная статья, спасибо! На днях тоже решил научится пользоватся vim'ом, так что вы мне очень помогли.
+2
Про smarttab не знал, спасибо
+1
Еще полезная команда — retab. Заменяет табы на пробелы и обратно(в зависимости от значения expandtab)
+5
Еще более life-changing будет cindent, автоматически применяющий выбранный с помощью cinoptions стиль кодирования, как при вводе, так и при переформатировании командой =
+2
И вобще самой-самой life-changing будет
indentexpr
, которая позволяет задать собственную функцию для формирования отступов на новой строке. 0
Удобство cinoptions в том, что там есть по управляющей конструкции практически на любой элемент форматирования, упоминаемый в большинстве стандартов кодирования. И подправить это выражение достаточно просто. А кроме того, indentexpr для С и С++ выполняется с помощью cindent, согласно $VIMRUNTIME/indent/{c,cpp}.vim
0
indentexpr полезен когда нужно написать скрипт индента для какого нибудь языка, у которого синтаксис отличен от си. А так да — cindent наиболее простой и при этом наиболее гибкий вариант.
+1
а возможно с их помощью организовать следующий стиль форматирования:
* при отступе от начала блока табуляция остаётся собой;
* при выравнивании текста относительно текста предыдущей строки табуляция заменяется пробелами;
* при нажатии '=' происходило форматирование выделенного текста в соотсветствии с этими правилами.
пример 1:
class C
{
void foo();
double boo();
};
в этом примере нужно, чтобы при нажатии одного или более табов в строке с boo после double курсор останавливался на позиции foo из предыдущей строки, т.е. достигалось автоматическое выравнивание имён функций. сейчас я это делаю вручную, нажимая пробел нужно число раз.
пример 2:
void foo()
{
for(int i = 0;
i < 10;
++i)
{
cout
* при отступе от начала блока табуляция остаётся собой;
* при выравнивании текста относительно текста предыдущей строки табуляция заменяется пробелами;
* при нажатии '=' происходило форматирование выделенного текста в соотсветствии с этими правилами.
пример 1:
class C
{
void foo();
double boo();
};
в этом примере нужно, чтобы при нажатии одного или более табов в строке с boo после double курсор останавливался на позиции foo из предыдущей строки, т.е. достигалось автоматическое выравнивание имён функций. сейчас я это делаю вручную, нажимая пробел нужно число раз.
пример 2:
void foo()
{
for(int i = 0;
i < 10;
++i)
{
cout
0
'умный' хабраредактор ликвидировал фрагменты текста, содержащие угловые скобки. в первом примере отступы функций от начала класса должны быть реализованы табами, а выравнивание имён этих функций относительно друг друга — пробелами. во втором примере отступ от начала функции — табами, далее 'i < 10' & '++i' должны быть выровнены пробелами относительно слова 'int'. т.е. хочется всегда нажимать таб, но во всех случаях, кроме отступов от начала блока, табы чтобы заменялись заданным в настройках числом пробелов.
0
спасибо за '='.
От себя добавлю комбинацию '1G=G' — форматирует ('=') с 1ой строчки ('1G') до последней ('G')
От себя добавлю комбинацию '1G=G' — форматирует ('=') с 1ой строчки ('1G') до последней ('G')
+1
а как можно сделать форматирование кода?
0
Как-то пытался настроить подобное. Появился досадный «артефакт» — при копировании из веб-страницы в вим линии «съезжают» вправо. Кто-нибудь пытался побороть?
Вот пример:
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)
Вот пример:
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)
0
sorry, хабр съел пробелы
0
Материала набралось на вторую часть. Впрочем, кто бы сомневался :)
0
Небольшой оффтоп, но часто в редакторах, сразу после отступов, я настраиваю ту самую вертикальную полоску, на 80ой колонке. Хоть в vi, на сколько мне известно, нет подобной фичи, зато можно подкрашивать часть строк, вышедших за предел 80ой колонки.
match ErrorMsg '\%>80v.\+'
+1
А может быть кто-нибудь знает если в vim что-нибудь похожее на ctrl+r в терминале? только с поиском не в истории а в файлах rails проета
0
скажите, а как отключить вот это:
# комментарий, нажимаем enter
# < — это вим сам добавляет, в конфигах, некоторых скриптах. в 7.0 не было, в 7.2, кажется, стало по-умолчанию.
и ещё, как временно отключить отступы и форматировани, например на время копипаста?
# комментарий, нажимаем enter
# < — это вим сам добавляет, в конфигах, некоторых скриптах. в 7.0 не было, в 7.2, кажется, стало по-умолчанию.
и ещё, как временно отключить отступы и форматировани, например на время копипаста?
0
Вместо smarttab'a с backspace'ом можно использовать Ctrl-d, Ctrl-t в режиме вставки (сдвигает строку под курсором на shiftwidth).
0
Накину пару ссылок для истории:
Vim Wiki:
vim.wikia.com/wiki/Indenting_source_code
Vimcasts:
vimcasts.org/episodes/tabs-and-spaces/
vimcasts.org/episodes/indentation-commands/
Vim Wiki:
vim.wikia.com/wiki/Indenting_source_code
Vimcasts:
vimcasts.org/episodes/tabs-and-spaces/
vimcasts.org/episodes/indentation-commands/
0
Only those users with full accounts are able to leave comments. Log in, please.
Настройка отступов в VIM