Pensando en pasar de TextMate a vim para Rails dev. ¿Qué necesito?


Hago desarrollo de Ruby on Rails casi exclusivamente. Actualmente desarrollo en OS X usando TextMate. Tengo una máquina virtual en ejecución para emular lo más cerca posible el entorno en el que se implementará mi aplicación, y monte el código en un recurso compartido de Samba en OS X desde el invitado de la VM. A partir de ahí abro con TextMate y code away.

Estoy empezando a pensar que con los complementos adecuados y el tiempo dedicado al aprendizaje, podría ser mucho más productivo en vim directamente en la máquina virtual. Ahora mismo mi TextMate es básicamente stock, aunque creo que el plugin ProjectPlus es indispensable. Lo que estoy buscando son algunas sugerencias de recursos y complementos de vim (si esa es la terminología correcta) para emular de cerca las características que no estoy dispuesto a renunciar en TextMate. O al menos, razones convincentes por las que debería estar dispuesto a renunciar a ellos. Aquí hay una lista corta:

  • Capacidad de tener un árbol de proyecto (preferiblemente) plegable visible en todo momento o fácilmente conmutable.
  • Capacidad para vea el estado de SCM de un vistazo, ya sea dentro de este árbol de proyecto (preferible) o de otra manera. (Uso git casi exclusivamente si esto hace alguna diferencia.)
    • Ser capaz de ver una diferencia de lado a lado desde dentro de vim también sería genial
  • Capacidad para buscar a través de todo el proyecto a voluntad (supongo que :stop; grep -nr; fg; lograría esto, a menos que haya una mejor manera de hacerlo.)
  • Finalización del código, si es posible
Author: Josh Lindsey, 2010-02-16

10 answers

El plugin NERD Tree te da un árbol de proyecto plegable. Personalmente, me parece que el complemento netrw es más que suficiente, y esto generalmente viene instalado con Vim. Mientras que el árbol NERD se siente como si tratara de emular el comportamiento de otros IDE (y el cajón del proyecto de TextMate), siento que el plugin netrw hace las cosas de la manera Vim. Te sugiero que pruebes ambos y veas cuál prefieres.

El complemento fugitive proporciona una interfaz git para Vim (Ver Vimcasts: partes 1, 2, 3, 4 y 5).

El complemento ack es ideal para buscar un proyecto completo. Usted querrá leer en la lista de Vim quickfix para sacar el máximo provecho de esto.

La terminación de palabras de TextMate se activa con esc , y shift-esc. En Vim, obtienes una funcionalidad similar autocompletar usando ctrl-n y ctrl-p en el modo insertar. Comprobar :help ins-completion por (mucho!) más info.

Estoy ejecutando una serie de screencasts sobre el aprendizaje de Vim en vimcasts.org. Mi experiencia es con TextMate, pero he estado usando Vim a tiempo completo desde hace un tiempo. Mientras escribo esto, solo tengo 6 episodios, pero planeo cubrir cada uno de los puntos que has planteado en futuros episodios. Voy a tratar de volver a editar esta respuesta con enlaces a los screencasts a medida que se convierten disponible.

 27
Author: nelstrom,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-21 10:28:15
 6
Author: allenwei,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-16 05:30:10

Actualmente estoy en una posición similar a la tuya (pasando de TextMate a Vim)

Un recurso realmente bueno es este:

Http://robots.thoughtbot.com/post/166073596/intro-rails-vim

¡Buena suerte!

 4
Author: Ganesh Shankar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-15 22:06:52

Para la navegación de archivos es simplemente love CommandT
Esto funciona muy igual que la querida función commandT en textmate.

 4
Author: recursive_acronym,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-29 22:34:53

Es posible que desee comenzar con mi Ruby/Rails relacionados vimfiles que incluye soporte para rvm y git.

 2
Author: Kris,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-10-24 18:39:32

Este screencast también es genial http://blip.tv/file/1372096

Uso VIM y me gusta especialmente cómo rotar desde el modelo/vista y relacionado con el controlador..

 1
Author: VP.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-15 22:12:05

Echa un vistazo a la entrada del blog: De Textmate a VIM para codificadores Rails.

Los comentarios allí también pueden ser valiosos para usted.

 1
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-25 15:12:20

Todas las otras respuestas más:

Capacidad de tener un árbol de proyecto (preferiblemente) plegable visible en todo momento o fácilmente conmutable.

  • El proyecto .el plugin vim no funciona como el cajón de proyectos de TextMate, pero está cerca.
  • Con NERDTree, puede configurar marcadores y hacer que funcione un poco como un cajón de proyectos.
  • :help mkview y :help mksession también pueden ayudar.

Capacidad para ver el estado de SCM a mirada, ya sea dentro de este árbol del proyecto (preferible) o de otra manera. (Uso git casi exclusivamente si esto hace alguna diferencia.)

  • vcscommand.vim proporciona el mismo conjunto de comandos para múltiples SCM, funciona con Git, SVN, Mercurial {
  • Puede usar el complemento fugitive antes mencionado para mostrar el estado de Git en la línea de estado, :help fugitive-statusline.

Ser capaz de ver una diferencia de lado a lado desde dentro de vim sería genial también

  • fugitive proporciona el comando :Gdiff que hace precisamente eso.
  • Un plugin recientemente lanzado llamado Gitv intenta emular GitK en Vim. Me gusta mucho y el autor es muy sensible. En la vista de árbol, pulsa <CR> para abrir una confirmación anterior en otra ventana y D para ver una doble diferencia.

Finalización del código, si es posible

  • Hay algunas soluciones, si no es necesario que sea automático <C-x><C-o>, <C-n> y <C-p> será más que suficiente, si quieres "autocompletado" puedes probar estos pocos plugins. Mi favorito es autocomplpop.
 1
Author: romainl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-27 07:20:18

Busca un proyecto completo aquí.

Código de finalización: Normalmente se hace con ctrl-X entonces ctrl-O, mientras que en el modo insertar.

Integración de Git: git.vim

Árbol del proyecto: Nerdtree.vim

Buena suerte

 1
Author: Chris Jones,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-21 10:28:52

Publiqué un post extendido sobre este tema hoy, en el que explico cómo replicar 100 características de Textmate dentro de VIM. Es el producto de una gran cantidad de horas de investigación.

Por ejemplo explico:

  • Cómo replicar un Cajón de Proyecto
  • Cómo administrar pestañas
  • Cómo hacer comandos específicos de Rails (Seamos realistas: Muchos usuarios de Textmate son programadores de Rails)
  • Cómo encontrar y reemplazar
  • Cómo hacer todo el proyecto búsquedas

Leer el Artículo Original: Textmate A VIM

 0
Author: Jack Kinsella,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-22 13:21:03