Pull to refresh

Comments 189

Вроде бы поставить Git или Mercurial гораздо проще, чем писать свои велосипеды плагины.
Вы правы и я сам пользуюсь svn и git когда это возможно. Но есть случаи, для которых оно не то чтобы невозможно, а просто не целесообразно. Например попросили меня срочно поправить по ftp файлик. Ну или когда я писал этот топик, я тоже делал бакапы =)
А вообще, цель статьи не дать готовый инструмент, а показать как этот инструмент можно сделать самому. На примере своих потребностей.
ИМХО все таки git init. в локальной папке — git commit -am 'Backup' — удобнее и даже не важно, что у НИХ git не прижился.
Я, кстати, предпочитаю оставлять бэкапы на гитхабе, после того, как у них вышел собственный клиент под винду ;)
гитхаб дорогой.
Информация значительно дороже.
но гитхаб же не единственное решение, зачем платить больше. Сила гитхаба — это социализация: обсуждение кода, комментарии, свои форки. Если это нужно — тогда да. Но мне не разу этого не нужно было в коммерческих продуктах, только в OpenSource.
Поэтому, лично я, пользуюсь гитхабом для открытых проектов: когда либо форкаю чей-то проект, либо выкладываю свое.
Все приватные проекты храню на repositoryhosting.com Проблем за несколько лет не наблюдалось.
6$ за два гигабайта? Это как-то дороговато.
ну смотря как считать. У меня сейчас там лежит около 30-ти проектов, которые занимают один гиг. Каждый дополнительный гиг стоит $1. На гитхабе для хранения такого количества репозиториев мне пришлось бы покупать Gold аккаунт за 100 долларов в месяц. За эти деньги я бы мог на RH докупить еще 84 гига. Помоему более чем достаточно.
В любом случае гитхаб получается достаточно дорогим.
А что это у вас за проекты такие, что они так много места занимают?
Да они немного места занимают ;) Пока.
Просто есть мысль взять папки Documents, Work, Archive и т.д. и сделать из них бэкап одним репозиторием.
Ну такие бэкапы не обязательно держать в облаке. Я для таких бэкапов пользуюсь машиной времени на внешний Thunderbolt Raid диск, все происходит в фоне и можно покапаться в разных версиях документов. Плюс инфрмация дублируется автоматически на двух дисках: если один полетит — на втором останется.
Но это под маком, уверен под виндой и линуксом есть подобные решения.
Дропбокс разве умеет сохранять историю изменений?
UFO landed and left these words here
А если за деньги — так вообще бесконечную.
Посмотрите в сторону, например, CrashPlan, тем более что для локальных бэкапов может хватить и бесплатной версии, а за $50 в год получаешь unlimited пространство для бэкапов. Версионность тоже поддерживается.

Сам пользуюсь уже несколько месяцев, весьма доволен, сделал полный бэкап в их облако + дополнительный бэкап самых нужных файлов на внешний винт, хоть один из бэкапов должен выжить :)
это пока нужно меньше 5-ти пользователей, а так как я отдаю доступ к репозиторию заказчику, то этот лимит быстро уходит.
Как только уходит лимит в 5 пользователей — BitBucket становится дороже RH. Но это конечно у каждого свои требования.
BitBucket даёт неограниченное количество репозиториев, дискового пространства, и умеет работать с git.
да, но ограничивает на количестве пользователей и при превышении этого лимита (5 пользователей) становится дороже RH.
Ogra в своём комментарии писал:
бэкапы на гитхабе
Относительно бэкапов через vcs, BitBucket подходит лучше, чем GitHub.
Официальный git под винду тоже весьма не плох был, еще до выхода Github for Windows.
Расскажите, а как отправить на печать текст из этого редактора?
Как получить имя файла я показал, осталось скормит его утилите печати, например lp
UFO landed and left these words here
Бекап на бумаге? Олдскул )
не появилось ли бесплатного плагина для работы по фтп или сфтп?
Бесплатного не появилось, но платный плагин не создает особых проблем.
Да, сильно не хватает плагина как в Notepad++
Некое время мне нужен был плагин NppExport для копирования текста со стилями (copy RTF to clipboard). Вот его действительно тогда очень не хватало.
Для этого есть плагин Highlight. Экспортирует в HTML и RTF.
Попробовал поставить под вин 7, к сожалению у меня этот плагин не заработал. Выделяю текст, пытаюсь сконвертить, скопировать или просто просмотреть как RTF – ничего не происходит.
У меня под win7 отлично всё работает. Может с кем-то конфликтует.
А можете кинуться ссылкой, а то не могу найти?.. Спасибо.
Обычный способ с монтированием томов самый простой.
В Nautilus, Файл->Подключиться к серверу, выбираете «cохранить пароль».
Слева в окне наутилуса в колонке снизу появится примонтированная удаленная папка, щёлкаете правой кнопкой 'добавить закладку', чтобы удобней было подключаться, и ваш сервер доступен легко из любой программы как локальная папка.
А в Sublime можно просто перетащить папку в «OPEN FILES».
Может, не совсем в тему, но что у него с русскими комментариями и синтаксисом PowerShell?
С русскими комментариями ОК у него всё. Пишите их в UTF-8.
Я буду писать их в том виде в котором мне удобно, не всегда можно использовать UTF8.

Здесь, после конвертации, оно открылось как надо, но что делать с кучей уже написанного кода?
File > Reopen with Encoding, и выбираем нужную кодировку.
Друзья, во первых нужно, дабы оно само открывало по умолчанию. Во вторых уже решено правкой конфига.
Пишите как угодно, мне-то что.
С русским у меня все хорошо. В меню есть пункт Reopen with encoding…
А само оно не умеет?

с Notepad++, с которого я и пытаюсь слезть, с этим проблем нет.
Само оно вроде по умолчанию работает с UTF-8. Ну а для меня это кодировка по умолчанию во всех проектах, поэтому проблем почти не возникает.
UFO landed and left these words here
UFO landed and left these words here
UFO landed and left these words here
UFO landed and left these words here
спасибо, я написал комментарий и полез разбираться…

Нашел путь интересней
wbond.net/sublime_packages/package_control/installation

Установил оттуда Powershell, но синтаксис там кривой, по крайней мере мои файлы не тянет:



Попробовал установку, описанную вами — результат тот-же… Пичаль…
UFO landed and left these words here
Мда, а вроде все хвалят…
После покупки доработать напильником :-(

Для истории и справедливости, тот же кусок в Notepad++

UFO landed and left these words here
Вот прямо сейчас удалил и (а что надо было сделать еще?) заново поставил (+рестарт сублайма) гитхабовский (качал кнопкой ZIP), результат тот же :-(
При этом, в пакете есть файл bin\test-file.ps1, там в строке 185-187 есть этот момент и тестовый файл работает… продуктивный нет…
А проблема в том, что у меня в строке с закрывающимся «тегом» '@ есть еще символы…

и как это пофиксить?
UFO landed and left these words here
Не помогло, вообще без изменений…

Строка 188…
При этом такойже баги для @" нету…
Пофиксил, предыдущие мои два коммента считать не действительными
UFO landed and left these words here
UFO landed and left these words here
Я не там правил, правил в распакованном скачанном архиве, а не в своем профиле
Добавил себе тоже ;)
Как всегда — комменты на хабре бывают полезнее статей ;)
UFO landed and left these words here
Зашёл сюда, чтобы спросить как это сделать! Спасибо огромное!
С комментариями это не у него, а у кодировки файла, по-видимому он не смог ее определить и открыл как UTF-8.
UFO landed and left these words here
Я бы сказал последователь
У него кстате есть vintage mode, думаю vim'овцам должно понравиться.
ага. попробовать, поплеваться, снести нафик.

какой прикол vintage mode без normal режима)
Каким боком он клон вима?
слово «бАкап» очень режет глаза.

backup ['bækʌp] — бэк-ап.
buck up — [бак' ап] — встряхивать.

iPad — не «айПад», а «айПэд».

Mom, please!
Да никто не говорит «бэкап» и «айпэд», кроме хипстеров.
)) А я говорю бэкап и айпад. Я полухипстер?
Зато «все» говорят «Хундай» и «пэ-хэ-пэ» и что в этом хорошего?
Лучше сразу правильно говорить. И хипстеры тут не причем…
А ещё «Нью-Йорк» и «Мексика», ну и что?
Это не то, вы бы еще Ганновер или шлакбаум вспомнили…
В чём разница-то?
æ гораздо ближе к «а», а не к «э». А buck up транслитерировать ещё можно как «бук ап», особенно если учесть кучу акцентов, в которых оно именно так и произносится. Другое дело, что «бекап» уже устоялось. А вот «iPad» — только «айпад», и никак иначе!
Не забудьте ещё добавить, что: symmetry ['sɪmətrɪ] — «симметри», а не «симметрия». У нас такое количество слов заимствовано… Вы их все предлагаете на английский манер произносить?
Симметрия — гораздо ближе к оригинальному "συμμετρία", нежели уродское symmetry ['sɪmətrɪ].
согласен, это греческое.

Вот пример заимствования из английского:

trolleybus ['trɔlɪbʌs] — троллейбус, а не тролибас
По ходу пора Хаб соответствующий открывать. Всё больше появляется статей о ST2. Хотелось бы их все в одном месте видеть.
Так и не смог им пользоваться: на больших проектах автокомплит и навигация работают их рук вон плохо, даже с плугинами для всяких *tag. А как colorer для сырцов и фар нормально работает.
У кого есть какие пожелание и идеи на счет плагина под ST2? Хочу что-то написать полезное, но все мои потребности вроде покрыли уже существующие плагины.

Надо бы сделать какой-то wish список, где пользователи могли бы описывать то, что им не хватает в редакторе и что можно реально сделать с помощь plugin API.
Неплохо было бы иметь нормальный ftp клиент. С выводом дерева в сайдбаре. Могу посадействовать, т.к. этого не хватает
Поделись, как вылечить то, что при монтировании через fuse соединение разрывается при простое в несколько минут? Это единственная причина, по которой приходится пользоваться сторонними клиентами.
Аналогичная проблема. Крайне нестабильная работа. Плюс ко всему иногда бывают зависания соединения, которые лечатся только перезагрузкой.
если подключаетесь через sftp, то попробуйте добавить строчку:
ServerAliveInterval 10
в /etc/ssh/ssh_config
Вам вроде ответили в том посте. Чем вам не подходит ColorPicker?
Разная суть, ColorPicker подбирает цвета, то о чём я говорю — это блок с уже использованными цветами, которые постоянно видно.
Понял. То есть это использованные цвета именно в этом css файле, так?
Можно просто дописать функционал ColorPicker и сделать отдельный таб «Top colors».
Да! Вы всё правильно поняли. Буду очень вам благодарен, если реализуете!
Ах да, ещё одна хотелка есть! Форматирование сыы, а-ля Aligment для html, чтобы из

.div {width: 50px; height: 50px;}


получалось

.div {
width: 50px; 
height: 50px;
}
Очень не хватает бандлов для phpdoc и, к сожалению, времени попробовать сделать самому. Было бы очень полезно. То что есть сейчас только рисует пустой комментарий без автокомплита по @. Хочется такой автокомплит, который будет работать внутри комментария в коде (@author, @param и т.д.) и иметь полный список тегов.

Вторая идея — выводить статус репозитория в проводнике. Т.е. делать svn status и раскрашивать имена папок в нужный цвет (иконки не нужны, только минималистичность, только хардкор).

Еще были какие-то идеи, если вспомню напишу.
Хочу посоветовать прекрасный инструмент для сравнения — Beyond Compare.
Аналогов по удобству и мощи я еще не встречал.

30$ за сравнивалку файлов? meld мой выбор.
Смешно, ведь статья про текстовый редактор ценой в 59$
UFO landed and left these words here
# -*- coding: utf-8 -*-
import sublime, sublime_plugin
import subprocess

class DiffCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        cur = num = 0
        views = sublime.active_window().views()
        for view in views:
            if view.id() == sublime.active_window().active_view().id():
                cur = num
            num += 1
        if num-1 != cur:
            subprocess.Popen([
                'C:\Program Files (x86)\WinMerge\WinMergeU.exe', 
                views[cur].file_name(), 
                views[cur+1].file_name()
            ]) 
Фигня ваше высказывание без доказательств.

И что-то я не нахожу Meld под Windows, только какие-то извращения?
Ну причём здесь доказательства. Вы попользуйте его немножко, и поймёте, что это офигенная вещь. Для начала скриншоты гляньте. А насчёт Windows — видимо, просто покамест не было кому его нормально запакетировать под винды. Займитесь, может? :)
>>Ну причём здесь доказательства.

А при том, что так выражаться как минимум некультурно.

Если Вы считаете, что Meld лучше, то пишите что это Ваше личное мнение:
«Я считаю что Meld лучше», или «Из того, что я пробовал мне больше понравился Meld»

Если Вы считаете, что Meld объективно лучше, то тут уже требуются доказательства.

Вот к примеру список того, чем Beyound Compare лучше:

* Windows support. I'm sure you can get Meld working on Windows, but I doubt it's easy, and our chief free Windows competitor, WinMerge, doesn't support Linux.
* Dedicated output panel for merges. Meld uses the merge-to-center approach, which we don't think is as intuitive as ours. WinMerge doesn't support 3-way comparisons at all.
* Our comparison algorithm can match up similar lines. Pretty much everyone else uses the same algorithm that GNU diff does, which can only do equals/not equals comparisons between lines. You can strip whitespace, or ignore case or a particular regular expression, but that's it. BC actually computes similarity scores for lines, so ones that have had non-trivial changes (renames, added parameters, etc) can be lined up correctly.
* Saved sessions that you can setup and use later. Workspaces containing multiple sessions.
FTP, SFTP, FTP over SSL, including support for multiple simultaneous connections. I know numerous people who use BC as their primary FTP client. Meld may support something like this through Gnome's VFS layer, but it wasn't obvious to me.
* Zip, Tar, GZip, Cab, Rar, 7-zip archives and BCSS snapshots. I don't know of any competitor that has archives files as well integrated as BC does.
* Data compare (grid) for CSV and tab delimited files.
* Hex compare for arbitrary binary files.
* Image compare for most major image formats.
* Replacements in text compare.
* Manual align/isolate in text compare.
* Alignment overrides (replacements) in folder compare.
* Source control integration (Windows only). Adds check-in/check-out/undo checkout support directly to the file and folder viewers. Supports any version control system that integrates into Visual Studio (pretty much all of them). Meld's version control integration is different and won't support as many Windows vcs's.
* Syntax highlighting, and file formats that define importance. A lot of competitors just have a single list of regular expressions that you ignore for all file types, without being able to have different ones for C++ files vs. HTML files.
* Printed/html/plain text differences reports.
* Command line scripting.
* Directory comparison supports excluding files based on their names, paths, sizes, last modified times, attributes, and source control status. This combined with sessions is especially powerful.
* Dedicated sync interface with mirror and update commands.
* Directory compare includes Copy/Move/Delete/Rename/Touch/SetAttributes. Meld, at least, doesn't have much for manipulating directory compares.
* Compares binary DFMs as text (only applicable for Delphi programmers).
* Dedicated support staff available via email, phone, and forums.

www.scootersoftware.com/vbulletin/showthread.php?t=4776
Одно это:
* Dedicated output panel for merges. Meld uses the merge-to-center approach, which we don't think is as intuitive as ours. WinMerge doesn't support 3-way comparisons at all.

разом перечёркивает все те преимущества (многие из которых достаточно спорные, а некоторые просто не имеют места) BC, про которые авторы написали.
Мне не нужен спор о том, какой инструмент «Лучший», каждый выбирает лучший инструмент для себя.
Под виндовс есть CodeCompare — самое приятное из того что я видел.
Мне нравится meld, использую его в работе. вот только нехватает фичи типа split diff, как в git add -p. было бы удобно разбить большую разницу на две маленьких, чтобы половину перенести, а половину оставить, например.
Или слить 10 разниц в одну, пусть даже у них есть одинаковые строки. Эх, мечты, мечты.
Split diff я делаю в hg crecord/qcrecord/qcrefresh. Ну не все ханки перебрасываю. В общем, с hg mq средств meldа становится более, чем достаточно.
вообще если привыкнуть к hg mq, то без них становится совсем тяжко.
но тем кто с ним хоть какое-то время не работал, объяснить что это самый удобный инструмент на свете — хрен там!
Вчера появилась потребность чистить код от trailing spaces. Из коробки sublime умеет их чистить при сохранении, а нужно было по запросу.
Вот такой плагинчик получился:

import sublime, sublime_plugin

class TrailingSpacesCleanerCommand(sublime_plugin.TextCommand):
	def run(self, edit):
		ws = self.view.find_all("[\t ]+$")
		ws.reverse()
		for r in ws:
			self.view.erase(edit, r)

Прикинул, что скорее всего это уже реализовано и юзается при
"trim_trailing_white_space_on_save": true


Так и есть. Нашел в Sublime Text 2/Packages/Default/trim_trailing_white_space.py

class TrimTrailingWhiteSpace(sublime_plugin.EventListener):
    def on_pre_save(self, view):
        if view.settings().get("trim_trailing_white_space_on_save") == True:
            trailing_white_space = view.find_all("[\t ]+$")
            trailing_white_space.reverse()
            edit = view.begin_edit()
            for r in trailing_white_space:
                view.erase(edit, r)
            view.end_edit(edit)
Я выше написал что оно есть. Но мне это не нужно для всех типов файлов. Я хотел по запросу.
Я понимаю, но зачем велосипедить? Просто используйте уже созданное. DRY
Я не велосипедил, я взял этот самый исходник и переделал в плагин, который можно вызывать не по событию сохранения файла, а по нажатию хоткея
А, понял. Сорри. Там все от EventListener идет. Ок.
Просто на первый взгляд показалось, что можно как-то использовать уже существующий плагин. Моя ошибка.
Сможете сделать то же самое, только не по запросу, а когда каретка переставляется в другую строку?

Т.е. вставляем текст или код, в конце которого есть пробел, ставим каретку в любую другую строку — пробелы в конце строк автоматически удаляются.

Такая функция есть в редакторе Rapid PHP, очень удобно было. Сейчас ее не хватает в Саблайме.
Есть событие onSelectionModified, но если повесить на него, тогда пробелы в конце строк будут убираться когда просто текст выделяешь.
Т.е. при переставлении каретки никак не сделать?
Вот так сразу не приходит идеи реализации
Вас не затруднит написать пример с событием onSelectionModified?
Какой пример нужен? Обработчик события делаем так:
import sublime, sublime_plugin

class ExampleOnSelectionModified(sublime_plugin.EventListener):
	def on_selection_modified(self, view):
		pass

А дальше все как обычно
Пришла идея реализации вашей хотелки. Чистит строку от пробелов, если переставить каретку на другую строку. Если вставлен фрагмент кода, то тоже чистит его весь.

# -*- coding: utf-8 -*-
import sublime, sublime_plugin

class ExampleOnSelectionModified(sublime_plugin.EventListener):
	was_selected = False
	selection = [0,0]
	last_selection = [0,0]
	last_line = 0
	def on_selection_modified(self, view):
		self.selection = [view.sel()[0].begin(), view.sel()[0].end()]
		size = abs(self.selection[0] - self.selection[1])
		is_selected = size != 0

		# Если сейчас нет выделенного фрагмента, а до этого был - чистим его
		if not is_selected and self.was_selected:
		 	trailing_white_space = view.find_all("[\t ]+$")
		 	trailing_white_space.reverse()
		 	edit = view.begin_edit()
		 	for r in trailing_white_space:
		 		if r.begin() >= self.last_selection[0] and r.end() <= self.last_selection[1]:
		 			view.erase(edit, r)
		 	view.end_edit(edit)

		# Если текст не выделен
		elif not is_selected:
			last_line = view.line(sublime.Region(self.last_selection[0], self.last_selection[1]))
			line = view.line(sublime.Region(self.selection[0], self.selection[1]))
			# Проверим переместили ли каретку на другую строку
			if last_line != line:
				edit = view.begin_edit()
				r = view.find("[\t ]+$", last_line.begin())
				# Если нашли пробелы, то убираем
				if r:
					view.erase(edit, r)
				view.end_edit(edit)
		self.was_selected = is_selected
		self.last_selection = self.selection
Обалденно! Огромное вам спасибо! То, что нужно =)
Эх. Обнаружился неприятный момент. Перестают работать умные отступы, когда нажимаешь Enter в конце строки.

Т.е. должно быть так:

image

а с плагином получается вот так:

image
Это можно решить, например проверив есть ли в строке что-то кроме отступов и если нет, то не чистить. Позже выложу исправленную версию
Исправил эту проблему и немного улучшил код

# -*- coding: utf-8 -*-
import sublime, sublime_plugin

class TrimTrailingWhiteSpaceOnNewLine(sublime_plugin.EventListener):
    was_selected = False
    selection = [0,0]
    last_selection = [0,0]
    def on_selection_modified(self, view):
        if view.settings().get("trim_trailing_white_space_on_new_line") == True:
            self.selection = [view.sel()[0].begin(), view.sel()[0].end()]
            is_selected = not view.sel()[0].empty()
            edit = view.begin_edit()
            # Если сейчас нет выделенного фрагмента, а до этого был - чистим его
            if not is_selected and self.was_selected:
                trailing_white_space = view.find_all("[\t ]+$")
                trailing_white_space.reverse()
                for r in trailing_white_space:
                    if r.begin() >= self.last_selection[0] and r.end() <= self.last_selection[1]:
                        view.erase(edit, r)
            # Если текст не выделен
            elif not is_selected:
                last_line = view.line(sublime.Region(self.last_selection[0], self.last_selection[1]))
                line = view.line(sublime.Region(self.selection[0], self.selection[1]))
                # Проверим переместили ли каретку на другую строку
                if last_line != line:
                    r = view.find("[\t ]+$", last_line.begin())
                    if r != None and r.end() < line.begin():
                        view.erase(edit, r)
            view.end_edit(edit)
            self.was_selected = is_selected
            self.last_selection = self.selection

Для активации плагина нужно в Preferences User добавить:

"trim_trailing_white_space_on_new_line": true
Замечательно, работает. Еще раз большое спасибо!

Пользуясь случаем, понаглею еще немного — с этим сможете справиться?
Не обещаю, но думаю что можно. Попробую на досуге
Попробовал реализовать, но столкнулся с такой проблемой: каретка возвращется на строку только полсле потери фокуса. Причем номер строки подсвечивается правильно, а каретка остается на месте. Попробую dev сборку, может они там это поправили.
Жаль нельзя свой обработчик на событие клика по номеру строки поставить. И управлять непосредственно кареткой нельзя. Чтобы переместить каретку нужно создавать новый region и добавлять его через view.sel().add
А можно ли его с помощью плагинов скрестить с отладчиком, например GDB?
Тогда получилась бы полноценная среда для многих проектов.
SublimeGDB — ставиться пакетным менеджером
… занимаюсь разработкой на php и работаю с множеством проектов одновременно. Так уж повелось, что система контроля версий у нас по множеству причин не прижилась...


омайнгадбл.
всегда косился криво на php-разработчиков… мдаааааааа…
Я не стану вам приводить те множество причин. Замечу, что для своих личных проектов я юзаю git. На работе на тех проектах, где возможно, svn. Не нужно коситься на разработчиков php — они тут не при чем. Проекты бывают разные и для редактирования десятка файлов раз в полгода контроль версий по сути и не нужен — достаточно бэкапов. Чтобы не быть голословным приведу в пример сайт на ModX. Зачем тут контроль версий? Код большей частью в БД, а для картинок оно и ни к чему.
затем что разработчики php тупо не видят всего того, что даёт система контроля версий) И отказываются видеть, глупо объясняя это тем что «такая мощь нам не нужна»
Не встречал таких, честно.
А если действительно не нужна? Я вот в hg (по необходимости git) использую только малую толику их возможностей, с которыми раньше справлялся десяток самописных скриптов (коммиты, ветки/форки, слияния). Стал использовать vcs только потому что это стандарт де-факто.
Статья так и не ответила на вопрос чем оно может облегчить жизнь после vim'а или emacs'а. После Eclipse или Geany — да, очевидно.
чем может облегчить мотоцикл жизнь по сравнению с машиной? :)
Скорее болид формулы-1 и спорткар. Понятно что у болидом куда как дольше учиться управлять, он не по всем дорогам поедет, да еще и настройки нужно настраивать какие-то, но то для чего он предназначен (скоростная езда) — он выполняет куда лучше и функциональней, чем спорткар. Впрочем, некоторым достаточно и спорткара, так что это не наезд, а скорее сравнение :)
Именно =) я пользую vim, но для некоторых вещей к примеру возня с SQL кодом я пользую саблайм.
А такой вопрос и не ставился) Я отношусь к той группе людей, которая не осилила emacs и vim. Остновимся на этом :)
Ну вот не очевидно, блин… Ох, не хочу устраивать споры с пеной у рта, но постараюсь спокойно обосновать…

У меня создаётся впечатление, что все пользователи vim/emacs (теперь и саблайм) попросту работают в небольших вебпроектах c 50-ю, ну в крайнем со 100-а html/js/python/ruby/php файлов, которые вероятно написаны ими, если не полностью, то на 60-70%… Что я этим хочу сказать? То, что в таком случае ориентироваться в таком коде не столь сложно, т.к. объемы небольшие, а знание своего кода хорошее. Тут как говорится не сильно много нужно и vim только во благо идёт…

Но когда у тебя ~12000 c++ файлов в проекте, то ты тратишь уйму времени без полноценных call hierarchy, inheritance tree, настоящего(!) контекстного(!!) suggestion + autocompletion, конечно же хорошего отладчика и настоящего рефакторинга… Ну пытался я в vim работать несколько месяцев — не смог… Просто не смог из-за объёма и сложности проекта… Тормознутый и всеми поливаемый грязью, Eclipse, выручает как никто другой в этой ораве кода при этом попутно проводя статический анализ кода. Заметьте, не java/python/php кода, а c++ кода, с которым мало кто хочет связываться в редакторах, ибо парсеры/валидаторы/анализаторы для него на диссертацию порой тянут. Как только вим/емакс/саблайм смогут облегчать работу с С++ кодом на таком уровне — я с удовольствием пересяду первый… А до этого момента не говорите мне vim — rules, eclipse — sux. На спорткаре вы поле не вспашете и уголь из карьера не вывезёте…
9K+ php файлов в проекте. Уйму времени не трачу (но проект знаю), все ок, использую vim и ctags. На 50-100 файлов как-то непохоже.
Мы пишем на Scala, Java — в команде 10 человек, только 3 пользуются Eclipse и IDEA. Никаких трудностей, поверьте. Исходники в с GutHub в zip-архиве — 2 гигабайта.
Sublime даже упрощает работу, так как легкий, и бегать, по такому количеству файлов совсем без трудностей.
Имхо. Если ты не можешь держать иерархию кода, над которым работаешь в голове — то кодить у тебя не получится. Более того я считаю, что память надо развивать. Если постоянно полагаться на помощь, то никогда ничего и не запомнишь. И печатать быстро не научишься.

Я когда-то сидел на jedit. Потом переехал на vim, основным толчком стало, что при большом кол-ве серверов он становится слишком удобен. Потом в течении нескольких лет vim у меня постепенно обрастал возможностями и сейчас даст фору любому эклипсу. Но у меня основной упор не на супер-автокомлит, а на удобное и быстрое редактирование и навигацию по файлам.

[mocksoul@XXХ ~/svn/trunk]$ svn info | grep Revision
Revision: 849836

[mocksoul@XXX ~/svn/trunk]$ find . -type f -name '*.cpp' | wc -l
   14005

[mocksoul@XXX ~/svn/trunk]$ find . -type f -name '*.c' | wc -l
    5073

[mocksoul@ХХХ ~/svn/trunk]$ find . -type f -name '*.py' | wc -l
   13871


и ниче, живём =). Вижак на этом объёме требует каких-то чудовищных ресурсов для своей работы. Эклипс кушает 5-6 гб ОЗУ.

Я конечно предположу что я умный, а вы тупой. Но т.к. в это не верю, поэтому и советую обратить внимание на опыт других людей.
У Вас сорцы убунты в свн? :D
Хотя не так уж и много… Я вполне справлялся, когда пользовался Geany. Навигация по коду и быстрое редактирование? А в линуксах с навигацией проблем нет. Консоль наше все. И что вы понимаете под быстрым редактированием? Я не верю что у вас в проекте все в одной куче огромной что там никак не соориентируешся) Мне порой и mcedit хватает.
deadlink@deadlink-pc:~/dev/android/cyanogen_mod_racer$ find . -type f -name '*.c' | wc -l
12701
deadlink@deadlink-pc:~/dev/android/cyanogen_mod_racer$ find . -type f -name '*.cpp' | wc -l
7477
deadlink@deadlink-pc:~/dev/android/cyanogen_mod_racer$ find . -type f -name '*.java' | wc -l
17146
grep, ack, vim, find, ctags — вот и вся навигация.
У нас тысячи разработчиков =)
А что за проект, если не секрет, если соизмеримо с сорцами Анройда?
один такой поисковик… )
и это только та область, с которой работаю я, а не всё подряд.
А где проверка того что файл записался? :)
Да, редактор впечатляет. Подумываю перелезть с прикипевшего Fraise/Smultron'а.
За материал — спасибо.
В TextWrangler есть полезная штука Process lines containing..., а как то же сделать с помощью Sublime?
Подскажите, а есть ли плагин для перехода к к местам объявления функций/переменных наподобие того как сделано в visual studio?
Есть, называется CTags. Индексация файлов происходит вручную — через хоткей ctrl+t ctrl+r.
Не знаю как оно в Visual Studio, но мне хватает ctrl+p @ и ctrl+p #
>Так уж повелось, что система контроля версий у нас по множеству причин не прижилась

Мазохисты?
А у кого-нибудь сей редактор не крашился внезапно? Пробовал на него переползти, да что-то пару раз он вылетел и я передумал…
Может какие-то плагины виноваты…
Под какой ОС у тебя проблема? Если linux, то запусти из консоли и смотри вывод ошибок.
А кто-нибудь нашел как делать индексирование файлов в проекте на C++ и statement completion?
Нашелся SublimeClang который вроде как делает то что нужно.
Не подскажите, есть ли полноценный автокомплит (для шарпа)?
Уже нашел, но правда пока так себе плагин :/
А не подскажете как в python можно определить кодировку? Достаточно просто определить utf8 это или нет. Пробовал chardet — но для всех файлов он показывает просто ascii. Хочу плагинчик для себя написать, чтоб при открытии файлов в windows1251 сам открывал их в правильной кодировке. Бывает откроешь файлик, поправишь что нить и сохранишь. И все. Прощай вся кириллица. Не всегда обращаешь внимание на кодировку, особенно если файл большой, а кириллица где-то в конце.
Нашел способ определения uncode. Если учесть что кодировка либо utf8, либо win1251 то больше и не нужно. Но… Комманда reopen почему-то не отрабатывает =( В отладке вижу что определяет верно, но файл в нужной кодировке не открывает. Есть идеи?
# -*- coding: utf-8 -*-
import sublime, sublime_plugin

class AutoEncoding(sublime_plugin.EventListener):
	def on_load(self, view):
		buf = view.substr(sublime.Region(0, view.size()))
		print view.file_name()
		try:
			unicode(buf)
		except Exception, e:
			print 'reopen'
			print view.run_command("reopen", {'encoding': 'Cyrillic (Windows 1251)'})
		else:
			print 'unicode'
Вопросы снимаются)
Проблема решается так:
"fallback_encoding": "Cyrillic (Windows 1251)",

Выше писали уже про fallback_encoding, но что-то я не понял для чего оно)
Only those users with full accounts are able to leave comments. Log in, please.