Кодирование на Haskell через Emacs/Vim в Linux: организация файлов в проекты

У меня есть два вопроса относительно кодирования Haskell в Emacs/VIM в Linux:

  1. Если кто-то хотел организовать базу кода haskell в несколько проектов (где файлы данного проекта хранятся в определенной папке), то могут ли emacs и vim справиться с этим? Причина в том, что я использовал IDE раньше, когда все проекты загружались одновременно в сеанс, но я не уверен, как это будет работать для Emacs/VIM.

  2. Еще одна приятная вещь в IDE - это то, что я могу перейти к определению функции из данного проекта, даже если это определение функции находится в отдельном проекте (т.е. хранится в отдельной папке). Может ли Emacs/VIM справиться с этим?

Здесь было некоторое обсуждение: Haskell IDE для Windows?

3 ответа

Решение
  1. VIM/Emacs не волнует, как вы организуете свои файлы. Они в основном редакторы, так что вы можете использовать их для редактирования файлов независимо от того, как вы расположите структуру каталогов. Кроме этого, хорошо следовать некоторым стандартным соглашениям или адаптировать структуру для инструментов, которые вы собираетесь использовать. Вы можете взглянуть на структуру проекта Haskell. Также удобно использовать Cabal для построения вашего проекта и управления его зависимостями.
  2. VIM/Emacs может использовать индексные файлы Ctags для навигации в вашем проекте. Посмотрите Теги для доступных опций, как создать эти файлы индекса. Инструменты индексирования не ожидают какой-либо конкретной структуры проекта, поэтому, если вам нужно перемещаться по нескольким проектам, вы можете просто проиндексировать каталог с несколькими проектами в одном файле индекса.

Есть режим Emacs, который называется Projectile, который позволяет выполнять некоторые "проектные" функции, которые могут быть именно тем, что вы ищете. Я на самом деле не использовал его сам (я склонен придерживаться старого * nix способа простого редактирования файлов), поэтому я не могу дать вам подробности, но это не помешает проверить это.

Не уверен, правильно ли я понял суть вопроса. Следующее - мое предложение относительно вопроса управления несколькими проектами в Vim, независимо от используемого языка.

Вы можете воспользоваться сессиями Vim. С помощью нескольких пользовательских функций / сопоставлений клавиш в вашем.vimrc вы сможете хранить отдельный файл сеанса для каждого проекта, либо в каталоге проекта, либо в том, который вы бы посвятили файлам сеанса.

Это общие инструкции: http://vim.runpaint.org/editing/managing-sessions/ И там вы найдете несколько сценариев, которые специально решают проблему обработки нескольких сессий, специфичных для проекта: Как автоматически сохранить сессию vim при выходе и автоматическую перезагрузку при запуске, включая состояние разделенного окна?

Другие вопросы по тегам