Ejecutar en cmd.exe desde Sublime Text
Uno de los pocos puntos negativos de este excelente editor de código es que si compilamos y ejecutamos nuestros programas en Java, C++, etcétera con algún Build Sytem, nuestro programa se compilará y ejecutará mostrando el resultado satisfactoriamente si este NO requiere interacción con el usuario. En cambio, si nuestro programa debe leer algún dato, como por ejemplo (std::cin >> entrada;) en el caso de C++, nuestro programa no se ejecutará como es debido y la ejecución terminará con fallos.
NOTA
Debes cambiar "tu_usuario" por el nombre de tu usuario. Además el directorio AppData está oculto por defecto, así que deberás configurar visibles los archivos y directorios ocultos para poder verlo. Esto se hace en:
Aplican los cambios y click en aceptar, ahora si, si miras tu capeta de usuario, donde están "Mis documentos", "Mi musica" y demás, aparecerán unas carpetas nuevas, entre ellas la que nosotros necesitamos, AppData.
Cuando os encontréis en la carpeta Default, debéis abrir el archivo exec.py, así que os aconsejo que lo hagáis con Sublime Text por ejemplo ya que necesitaremos tener las líneas numeradas para hacer los cambios.
Para ello hacéis doble click sobre el archivo, saldrá una ventanita donde deberemos elegir la segunda opción.
En la nueva ventana buscáis Sublime Text entre todos los programas que aparecerán, si no está, hacéis click en Examinar..., y en la carpeta Archivos de programa, entráis en Sublime Text 2 y seleccionáis el .exe llamado sublime_text.exe, luego pincháis en aceptar y listo.
Hecho esto ya con doble click podréis abrir el archivo exec.py, así que ahora toca ir a la línea 154, donde debéis comentarla colocando una almohadilla delante y añadir la siguiente línea a continuación, dejándolo todo así:
Hecho esto guardamos y listo, tan solo reinicia Sublime Text, y la próxima vez que quieras ejecutar tu Build System, se abrirá un cmd.exe donde se ejecutará tu aplicación directamente.
Para solventar esto, y después de múltiples intentos de solucionarlo mediante Build System, es necesario modificar un archivo de configuración de Sublime Text llamado exec.py, para conseguir que al ejecutar nuestro Build System, la ejecución de nuestro programa se haga en el cmd.exe, donde no tendremos ningún problema en introducir datos para nuestros programas.
Dicho todo esto, tan solo necesitamos añadir una linea al archivo exec.py de Sublime Text que se encuentra en la ruta:
C:\Users\tu_usuario\AppData\Roaming\Sublime Text 2\Packages\Default\exec.py
NOTA
Debes cambiar "tu_usuario" por el nombre de tu usuario. Además el directorio AppData está oculto por defecto, así que deberás configurar visibles los archivos y directorios ocultos para poder verlo. Esto se hace en:
Inicio > Panel de control > Opciones de carpeta > Ver > Mostrar archivos, carpetas y unidades ocultos
Aplican los cambios y click en aceptar, ahora si, si miras tu capeta de usuario, donde están "Mis documentos", "Mi musica" y demás, aparecerán unas carpetas nuevas, entre ellas la que nosotros necesitamos, AppData.
Cuando os encontréis en la carpeta Default, debéis abrir el archivo exec.py, así que os aconsejo que lo hagáis con Sublime Text por ejemplo ya que necesitaremos tener las líneas numeradas para hacer los cambios.
Para ello hacéis doble click sobre el archivo, saldrá una ventanita donde deberemos elegir la segunda opción.
En la nueva ventana buscáis Sublime Text entre todos los programas que aparecerán, si no está, hacéis click en Examinar..., y en la carpeta Archivos de programa, entráis en Sublime Text 2 y seleccionáis el .exe llamado sublime_text.exe, luego pincháis en aceptar y listo.
Hecho esto ya con doble click podréis abrir el archivo exec.py, así que ahora toca ir a la línea 154, donde debéis comentarla colocando una almohadilla delante y añadir la siguiente línea a continuación, dejándolo todo así:
# self.proc = AsyncProcess(cmd, merged_env, self, **kwargs) os.system("cmd /C " + " ".join(cmd) + " & echo. & echo [Programa finalizado] & pause")
Archivo exec.py modificado |
Sos grande, muchas gracias!...
ResponderEliminar;)
EliminarHola! Oye, una pregunta: ¿Esto también funciona para linux? (en especifico linux mint 14).
ResponderEliminarPues esta solución es solamente para cmd.exe de Windows, pero acabo de hacer una entrada para poder hacer esto mismo en Linux, es una solución un tanto extraña pero sirve.
Eliminarhttp://ayudasprogramacionweb.blogspot.com/2013/01/ejecutar-en-terminal-linux-sublime-text.html
Este es el enlace, saludos!.
Muchas gracias, voy a probar con C
ResponderEliminarMuchas gracias, voy a probar con C
ResponderEliminarhola, no hay algun video tutorial por ahi que tengas donde se explica todo esto?
ResponderEliminarize todo lo que dice desde esto que ice primero http://ayudasprogramacionweb.blogspot.com.es/2012/12/compilar-y-ejecutar-cpp-desde-sublime-text.html y luego ice ese http://ayudasprogramacionweb.blogspot.com.es/2012/12/ejecutar-en-cmdexe-desde-sublime-text.html pero no me funciona, te doy una imagen que me aparece por un lapso de tiempo muy corto http://i45.tinypic.com/rhv9uh.jpg me sale eso y se desaparece al instante
ResponderEliminarMe pasa lo mismo que a ti! sabes como se puede solucionar el problema??
EliminarSaludos, si el CMD.exe se cierra muy rápido, quiere decir que ha habido algún error (obvio xD).
EliminarAsí que lo único que se me ocurre es que compruebes abriendo un CMD.exe si tu compilador es visible, es decir que cuando en el cmd pones javac o g++ o cualquier otro compilador, estos programas respondan, sino debes añadir la ruta de la carpeta donde se encuentran en la variable de entorno PATH en el siguiente enlace explico como hacerlo para java, sería igual con cualquier otro compilador.
http://ayudasprogramacionweb.blogspot.com/2012/11/compilar-y-ejecutar-java-en-cmd-windows.html
Otro posible problema puede ser que te hayas equivocado creando el Sublime Build, compruébalo ejecutándolo sin la modificación del cmd, a ver si anda bien, o modificando el archivo exec.py.
No se me ocurren más cosas, espero que tengáis suerte. =)
No a habido ningun error, ya que lo compilo y ejecuto con el devc++ y me corre perfectamente el programa que en realidad lo probé con un simple "hola mundo" no se que es lo que hice mal, ya que segui todas las instrucciones al pie de la letra pero se cierra apenas lo ejecuto...
EliminarEste comentario ha sido eliminado por el autor.
EliminarMen si vas a este link y haces todo exactamente como lo dice:
Eliminarhttp://ayudasprogramacionweb.blogspot.com/2012/12/compilar-y-ejecutar-java-desde-sublime-text.html
y luego vas a este que es en el cual estamos:
http://ayudasprogramacionweb.blogspot.com/2012/12/ejecutar-en-cmdexe-desde-sublime-text.html
NOTA: Cabe destacar que esto lo hice con el subleme text 2
Veras como la vida es mas sencilla y todo te funciona excelentemente bien ami me funciono a la perfección te lo recomiendo que lo hagas así. Saludos Cordiales
Me pasa lo mismo que "Ad_gs", como puedo evitar que se cierre enseguida la ventana cmd.exe? traté con un "system("PAUSE");" pero no me funcionó. Ayuda please, me gusta mucho este ide
ResponderEliminarprueba con un getchar ();
ResponderEliminary si no te funciona usa un scanf("%d");
Alguien ya encontró la solución sobre el cierre precipitado del cmd?
ResponderEliminarAl parecer esto sucede cuando guardas tu archivo con palabras separadas por ejemplo si guardamos como "hola" si funciona y no se cierra la venta, pero si guardamos como "hola mundo" esta se cierra. Me acabo de dar cuenta de ese error, pero no se como solucionarlo.
ResponderEliminarA mi tambien se me cierra, pero solo cuando aparece un error, y me gustaría saber como evitarlo porque asi se podría ver el error. Muchisimas gracias por estos posts!
ResponderEliminarSaludos, he estado repasando la función que debemos modificar, os.system() y lo he solucionado con un pequeño cambio, ahora cuando aparece un error el cmd no se cierra y deja ver el error.
EliminarLa entrada ya está corregida así que copiar de nuevo la linea del método os.system() en vuestro archivo exec.py y todo debería ir genial.
cual es ese cambio amigo porfavor comenta
Eliminarcopia esto y pega en la linea 155: os.system("cmd /C " + " ".join(cmd) + " & echo. & echo [Programa finalizado] & pause") El problema se soluciona quitando un "&" al metodo os.system().
Eliminaramigo Dios te bendiga llevo dias tratando de hacer eso
ResponderEliminarde verdad muchas gracias funciono
Saludos Erik Ordóñez, por algún extraño motivo se borró tu comentario. Lo que te podría decir es que repasaras el sublime-build, tengo algunas entradas donde lo explico, además intenta que las rutas que utilizas en él no contengan espacios en blanco, puede que de algún error por eso.
ResponderEliminarSaludos
Muy buen post, gracias.
ResponderEliminarT la reventaste!! Gracias
ResponderEliminarme sale "cmd" no se reconoce como un comando interno o externo.
ResponderEliminarHola que tal. saben porque me sale este error.
ResponderEliminar"g++" no se reconoce como un comando interno o externo,
programa o archivo por lotes ejecutable.
[Finished in 1.0s with exit code 1]
[shell_cmd: g++ "C:\Users\Solange\Documents\CodeBLOCKS\basico02.cpp" -o "C:\Users\Solange\Documents\CodeBLOCKS/basico02" && "C:\Users\Solange\Documents\CodeBLOCKS/basico02"]
[dir: C:\Users\Solange\Documents\CodeBLOCKS]
[path: C:\ProgramData\Oracle\Java\javapath;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;c:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\DTS\bin;]
Tengo windows 8.1 y descargue sublime text 3. :)
ResponderEliminarSi es que eres MiCHI
ResponderEliminarHola amigo primero que todo te doy mis felicitaciones por todas tus entradas del blog,son de gran aporte a la comunidad que le gusta el Sublime. Mi pregunta es con Sublime text 3 donde busco el exec.py y no existe o por lo menos no, en la ruta de arriba. Que se haría en tal caso? y gracias de antemano!
ResponderEliminara mi me ocurre lo mismo si alguien tiene la solución. es de agradecer. Gracias
Eliminarcreo que ya tengo la solución
EliminarUn poco de un truco, pero los siguientes trabajó para mí. Resulta que se puede reemplazar el código en algunos de los paquetes por defecto, incluyendo el código responsable de la salida de vía de acceso:
Vaya a C: \ Archivos de programa \ Sublime Text 3 \ Paquetes
Extraer Default.sublime-paquete (en realidad es un archivo zip) y obtener el exec.py archivo (no dejar la carpeta extraída dando vueltas en el directorio)
Cree el directorio por defecto en C: \ Users \ usuario \ AppData \ Roaming \ Sublime Text 3 \ Packages, y lugar exec.py en ella
Abrir exec.py y comente (lugar # al principio de la línea) la siguiente línea, en la línea 245 para mí
self.append_string (proc, self.debug_text)
Reiniciar Sublime Text
Este comentario ha sido eliminado por el autor.
EliminarGracias por tu aporte, yo también estoy usando Sublime Text 3 y no encontraba el archivo. Solo una corrección, la línea que tienes que editar es la 199 (Si tienes ST3) ahí verás la misma que en el post y luego lo editas, quedando así:
Eliminar199 self.proc = AsyncProcess(cmd, shell_cmd, merged_env, self, **kwargs)
200 os.system("cmd /C " + " ".join(cmd) + " & echo. & echo [Programa finalizado] & pause")
Gracias, al fin logre hacerlo funcionar en Sublime Text 3.
ResponderEliminarComo lo hiciste funcionar en el Sublime Text 3? a mi no me sale.
Eliminarhttp://superuser.com/questions/617511/sublime-text-do-not-print-path-of-build-command/654815#654815
EliminarMuchas gracias de antemano amigo me fue de gran ayuda.
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarYo también estoy buscando el exec.py en sublime text 3. :/
ResponderEliminarDefault.sublime-paquete este archivo no esta en sublime text 3. Como le hacemos??
ResponderEliminarCuando intento compilar un programa en sublime me da error con el main y system("pause").
Errores:
con el main: In function 'int main()':
con el systema: error: 'system' was not declared in this scope system("PAUSE");
Alguna sugerencia.
en sublime text 3 (la vercion portable):
ResponderEliminar1)copien el archivo "Default.sublime-package" de la carpeta Packages de su instalacion de sublime.
2) descomprimanlo en alguna carpeta de su escritorio
3) busquen el exec.py y hagan los cambios que dice el post
4) peguen el archivo en "Sublime Text 3\Data\Packages\Default\exec.py" (si no existe la carpeta ,la crean)
otra manera de hacerlo ,sin tocar los archivos de sublimetext, puede ser usando el comando start de batch. un ejemplito para python :
Eliminar{
"cmd": ["start", "python", "-i", "-u", "$file" ],
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"selector": "source.python",
"shell": true
}
en caso quiero que compile en la misma consola de sublime text , no que me llame a la consola de cmd...
Eliminar¿Buenos días Alguien puede ayudarme con esta consulta?
ResponderEliminarhe instalado el Package Control en Sublime tex 2. Pero no encuentro la opción para instalar Emmet. Gracisa
como se puede hacer con subime text 3 correctamente para compilar c#
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarEste comentario ha sido eliminado por el autor.
Eliminar