История изменений
Исправление
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.