LINUX.ORG.RU

История изменений

Исправление qrck, (текущая версия) :

удобную навигацию по проекту, в котором больше чем 2-3 тысячи файлов, и нужно постоянно по коду перемешаться туда-сюда?

NERDTree и вкладок мало? Я пилил довольно большой проект (FBReaderJ), как-то неудобств не испытывал.

Вот этого кстати тоже не уверен что хватит. Т.к. когда файлов больше 2-3 тысяч - часто просто не помнишь как именно назывался файл, где он находился. Помнишь часть имени или даже часть имени объекта, объявленном в том файле, тогда Ctrl+T/Ctrl+Shift+T, и по остаткам имени файла или объекта ReSharper все найдет.

развернуть LINQ выражение в for-цикл

Автоматизируемо.

Обещанные примеры, покажите как вот нижеприведенное автоматизировать в vim-е. На самом деле LINQ в for - это относительно простая задача пожалуй. А вот обратное - будет посложнее. Тем не менее, ReSharper любые из нижеприведенных конвертаций делает в обе стороны легко. Покажите как это можно автоматизировать в vim?

Пример 1:

var l = new string[10];
var res = false;

for (int i=0; i<l.Length; ++i)
{
	if (string.Compare(l[i], "something", StringComparison.OrdinalIgnoreCase) == 0)
	{
		res = true;
		break;
	}
}

легко конвертируется ReSharper-ом в 2 нажатия клавиши (Alt+Enter,Enter) в/из:

var l = new string[10];
var res = l.Any(t => string.Compare(t, "something", StringComparison.OrdinalIgnoreCase) == 0);

Пример 2:

var l = new int[10];
var res = 0;

for (int i=0; i<l.Length; ++i)
	res = res * 10 + l[i];

легко конвертируется полностью автоматически в/из:

var l = new int[10];
var res = l.Aggregate(0, (current,t) => current*10 + t));

Пример 3:

var l = new int[10];
var res = 0;

for (int i=0; i<l.Length; ++i)
{
	if (l[i] == 10)
		++ res;
}

легко конвертируется полностью автоматически в/из:

var l = new int[10];
var res = l.Count(0, t => t==10);

Пример 4, немного из другой оперы, но тоже - фиг это сделаться скриптом не понимающим семантики, конвертация LINQ запроса из канонической формы в «Method Chain» и обратно. Надо сказать оно легко переваривает куда более сложные запросы, с кучей вложенных join-ов, итп.

var l = new int[10];
var r = new int[10];

var q = from x in l where x > 10 join y from r on x equals y select x + y;

легко конвертируется полностью автоматически в/из:

var q = l.Where(x => x > 10).Join(r, x => x, y => y, (x,y) => x+y);

Т.е. что я хочу сказать - эта фиговина, ReSharper, не только понимает синтаксис языка, но и понимает что код делает. Все вышеприведенные примеры - сильно упрощенные примеры, для того что-бы показать концепцию так сказать. Может оно и куда более сложные вещи преобразовывать, но даже эти примеры - будут не по зубам скриптам на awk/sed/bash/perl.

В общем жду ответа - как это автоматизировать в vim.

Исходная версия qrck, :

удобную навигацию по проекту, в котором больше чем 2-3 тысячи файлов, и нужно постоянно по коду перемешаться туда-сюда?

NERDTree и вкладок мало? Я пилил довольно большой проект (FBReaderJ), как-то неудобств не испытывал.

Вот этого кстати тоже не уверен что хватит. Т.к. когда файлов больше 2-3 тысяч - часто просто не помнишь как именно назывался файл, где он находился. Помнишь часть имени или даже часть имени объекта, объявленном в том файле, тогда Ctrl+T/Ctrl+Shift+T, и по остаткам имени файла или объекта ReSharper все найдет.

развернуть LINQ выражение в for-цикл

Автоматизируемо.

Обещанные примеры, покажите как вот нижеприведенное автоматизировать в vim-е. На самом деле LINQ в for - это относительно простая задача пожалуй. А вот обратное - будет посложнее. Тем не менее, ReSharper любые из нижеприведенных конвертаций делает в обе стороны легко. Покажите как это можно автоматизировать в vim?

Пример 1:

var l = new string[10];
var res = false;

for (int i=0; i<l.Length; ++i)
{
	if (string.Compare(l[i], "something", StringComparison.OrdinalIgnoreCase) == 0)
	{
		res = true;
		break;
	}
}

легко конвертируется ReSharper-ом в 2 нажатия клавиши (Alt+Enter,Enter) в/из:

var l = new string[10];
var res = l.Any(t => string.Compare(t, "something", StringComparison.OrdinalIgnoreCase) == 0);

Пример 2:

var l = new int[10];
var res = 0;

for (int i=0; i<l.Length; ++i)
	res = res * 10 + l[i];

легко конвертируется полностью автоматически в/из:

var l = new int[10];
var res = l.Aggregate(0, (current,t) => current*10 + t));

Пример 3:

var l = new int[10];
var res = 0;

for (int i=0; i<l.Length; ++i)
{
	if (l[i] == 10)
		++ res;
}

легко конвертируется полностью автоматически в/из:

var l = new int[10];
var res = l.Count(0, t => t==10);

Пример 4, немного из другой оперы, но тоже - фиг это сделаться скриптом не понимающим семантики, конвертация LINQ запроса из канонической формы в «Method Chain» и обратно. Надо сказать оно легко переваривает куда более сложные запросы, с кучей вложенных join-ов, итп.

var l = new int[10];
var r = new int[10];

var q = from x in l where x > 10 join y from r on x equals y select x + y;

легко конвертируется полностью автоматически в/из:

var q = l.Where(x => x > 10).Join(r, x => x, y => y, (x,y) => x+y);

Т.е. что я хочу сказать - эта фиговина, ReSharper, не только понимает синтаксис языка, но и понимает что код делает.

В общем жду ответа - как это автоматизировать в vim.