VIM + JSLint?

120

Paso mis días en vim, actualmente escribiendo mucho JavaScript. He estado tratando de encontrar una manera de integrar JSLint o algo similar en vim para mejorar mi codificación. ¿Alguien ha logrado hacer algo como esto?

Editar:

Intenté esto: Verificación de sintaxis de Javascript Desde Vim , desafortunadamente la salida es muy cruda.

ben lemasurier
fuente

Respuestas:

34

Puede seguir las instrucciones del servicio web JSLint + integración VIM o hacer lo que yo hice:

Descargue http://jslint.webvm.net/mylintrun.js y http://www.jslint.com/fulljslint.js y colóquelos en un directorio de su elección.

Luego agregue la siguiente línea al comienzo de mylintrun.js:

var filename= arguments[0];

y cambie la última línea de código en mylintrun.js ("print (...)") a:

 print ( filename + ":" + (obj["line"] + 1) + ":" + (obj["character"] + 1) + ":" + obj["reason"] );

Esto hace que en mylintrun.js se genere una lista de errores que se puede usar con la ventana de corrección rápida de VIM (: copen).

Ahora configure lo siguiente en VIM:

set makeprg=cat\ %\ \\\|\ /my/path/to/js\ /my/path/to/mylintrun.js\ %
set errorformat=%f:%l:%c:%m

donde tienes que cambiar / my / path / to / js por la ruta de SpiderMonkey y /my/path/to/mylintrun.js por la ruta donde colocas los archivos JS.

Ahora, puede usar : make en VIM y usar la ventana de corrección rápida (: he quickfix-window) para saltar de un error a otro.

f3lix
fuente
¿Por qué captura el búfer y lo pasa como argumento a mylintrun?
jamessan
@jamessan: el script mylintrun.js lee el archivo de stdin. Así que para eso está el gato. Para la salida de error, mylintrun.js también necesita el nombre del archivo, por lo que se proporciona como argumento. Puede modificar el script para abrir el archivo para leerlo en lugar de leerlo desde stdin (haciendo que el gato sea innecesario). Pero no quería molestarme con esto ... y creo que hay un problema al leer archivos si tiene un motor JavaScript compilado sin FileObject
f3lix
cuál es 'el camino a SpiderMonkey' en su máquina - Tengo algunos en el mío
Dr. Frankenstein
No puedo acceder a mylintrun.js, ¿hay una ubicación alternativa? parece estar muerto
bluekeys
1
Los enlaces a mylintrun.js y fulljslint.js están rotos, lo que hace que esta respuesta sea menos útil porque depende en gran medida de ellos. ¿Puedes actualizar con URL que funcionen? De lo contrario, tendré que eliminar esta respuesta, que es un fastidio porque se ve bastante bien y ha ayudado a mucha gente. Gracias.
Kev
187

La forma de mejores prácticas en la OMI es:

  1. Instale el complemento Syntastic Vim : el mejor verificador de sintaxis para muchos idiomas, además de que se integra con la ventana de lista de ubicaciones de Vim (== corrección rápida ).
  2. Elija una de las dos opciones siguientes:

JSLint

  1. Instalar jsl(JSLint ejecutable) utilizar más el gestor favorito de paquete (de Ubuntu apt-get, Mac hogarbrew , etc.).

Jshint.com impulsado por la comunidad (mejor que JSLint)

  1. Instale node.js usando su administrador de paquetes favorito.
  2. Instale el Administrador de paquetes de nodo : 'curl https://npmjs.org/install.sh | sh ' EDITAR: npm ES PARTE DE node.js AHORA
  3. Instale jshint globalmente: 'npm install jshint -g'
  4. Ponga su archivo de configuración jshint en su directorio $ HOME : '~ / .jshintrc'
  5. Sobrescriba el archivo de Syntasticsyntax_checkers/javascript.vim con éste - EDITAR: YA NO ES NECESARIO CON LA VERSIÓN SINTÁSTICA MÁS NUEVA.

¡Disfrutar! :)

Ory Band
fuente
1
Estoy intentando esto ahora mismo. Intenté clonar Syntastic y usar el comando "rake install" y luego reemplazó el archivo javascrip.vim con el suyo. Todavía no puedo entender cómo usarlo: SyntasticEnable no hace nada por lo que puedo ver. Aunque seguiré intentándolo ..
Claes Mogren
2
Ok, noté que Syntastic requiere ballon_eval, que no es compatible con MacVim. Lástima ..
Claes Mogren
1
Intenté agregarlo, espero que (o una versión más bonita) se elimine github.com/scrooloose/syntastic/pull/47
Claes Mogren
9
Pasé mucho tiempo tratando de averiguar por qué no parecía estar sucediendo nada ... si extrajo el .jshintrc de Ory, tenga en cuenta que hay una coma al final de "google" en el objeto "predef" que hace que jshint no se cargue y Syntastic fallar silenciosamente.
ThePants
1
jsl para Windows: javascriptlint.com/download.htm también, tenga cuidado con el archivo jsl.vim para este problema: vim.1045645.n5.nabble.com/…
Andrew
17

Otra opción es jslint.vim de Jesse Hallet. Está disponible en GitHub y funciona con o sin la ventana QuickFix de Vim. ¡Es un buen complemento!

Alex Kahn
fuente
1
+1 para esto. Funciona genial. Cómodamente descargable desde vim.org/scripts/script.php?script_id=2729 . Tenga en cuenta que en Windows deberá instalar Ruby.
mm2001
3
También asegúrese de revisar JSHint, mencionado a continuación.
Alex Kahn
El proyecto ya no está en desarrollo.
OrangeTux
6

He sido muy feliz usando node-lint

sudo npm -g install jslint

Entonces golpea esto en algún lugar de tu .vim

set makeprg=jslint\ %
set errorformat=%-P%f,
        \%E%>\ #%n\ %m,%Z%.%#Line\ %l\\,\ Pos\ %c,
        \%-G%f\ is\ OK.,%-Q

Ahora :makeejecutará jslint. Los errores aparecen en la ventana de corrección rápida.

bluekeys
fuente
3

Aquí están las instrucciones de Mac OS actualizadas para noviembre de 2012. Se supone que tiene Homebrew instalado para obtener Node.js, y que ya ha instalado Syntastic para Vim (yo uso https://github.com/carlhuda/janus que proporciona esto automáticamente):

$ brew install node.js
$ npm install -g jshint

Luego agregue '/ usr / local / share / npm / bin' a su PATH (probablemente en ~ / .bashrc). Por ejemplo, agregue la línea: export PATH="$PATH:/usr/local/share/npm/bin"

reinicia tu Terminal y comprueba que

$ jshint

es ejecutable desde la línea de comandos. Syntastic descubrirá jsHint automáticamente. ¡Reinicia MacVim y disfruta!

Shaun Dychko
fuente