vim8 source online mvim code vim cygwin

source - vim code



¿Cómo ejecutar windows gvim desde cygwin? (11)

Acabo de renombrar gvim.bat que viene con la instalación estándar de Win32 vim a gvim y lo puse en / usr / bin.

También estoy compartiendo configuraciones entre Win32 GVim y Cygwin VIM refiriéndose a este artículo:

http://vim.wikia.com/wiki/Synchronize_configuration_to_many_computers

De esta manera puedo tener tanto Vim como Win32 Gvim ejecutándose con los mismos complementos y configuraciones.

No puedo ejecutar gvim desde cygwin. Cuando intento abrir un nuevo archivo con:

gvim filename gvim abre un archivo con ''No name'' y muestra el error como:

Error detected while processing command line E492: Not editor command: C:/cygwin/home/chandan/l Press enter or type command to continue

Más problemático es que no puedo abrir el archivo existente en la ruta

>which gvim muestra /usr/bin/gvim

He puesto el alias gvim=/cygdrive/c/Program/Files/(x86/)/Vim/vim73/gvim.exe aún


Aquí está el script que uso para ~/bin/gvim . Se ejecuta como si llamara a gvim FOO desde el cuadro de diálogo "Ejecutar" (gracias al archivo por lotes que invoca explorer.exe ). No se puede jugar muy bien con la línea de comandos, pero un archivo por lotes que se borra automáticamente viene al rescate.

#!/bin/bash TEMPFILE_NAME=gvim-`date +%s`-${RANDOM}.bat TEMPFILE=$TMP/$TEMPFILE_NAME TEMPFILE_W=`cygpath --windows --absolute --long-name "$TEMPFILE"` TARGET= if [ "$1" = "" ] ; then TARGET=`cygpath --windows --absolute --long-name "."` else TARGET=`cygpath --windows --absolute --long-name "$@" | tr ''/n'' '' ''` fi WIN_GVIM=`where gvim.exe | tr -d ''/r/n''` WIN_GVIM=`cygpath "$WIN_GVIM" --windows --absolute --long-name` unix2dos > $TEMPFILE << EOF start "gvim" "$WIN_GVIM" $TARGET DEL %~f0 EOF chmod +x $TEMPFILE explorer.exe "$TEMPFILE_W"

Un agradecimiento especial a esta respuesta por la técnica explorer.exe .


Aquí está todo lo que necesitas hacer:

alias gvim="run.exe /cygdrive/c/Programming/Tools/Vim/vim74/gvim.exe"

Funciona también con Notepad ++, así:

alias np="run.exe /cygdrive/c/Programming/Tools/Notepad++/notepad++.exe"


Encontré este hilo, encuentro la respuesta de jens inaceptable. No estamos pidiendo que nos digan que no lo hagamos. Tampoco me gustaron las otras respuestas, siempre hubo alguna peculiaridad, como la configuración no utilizada o una ventana de línea de comandos adicional que se abre. Hice algunas excavaciones y esto me funciona. No hay cuadro de línea de comando adicional para nada y usa mi configuración de gvim adecuada.

alias gvim=''HOME=/cygdrive/p/ cygstart /cygdrive/c/Program/ Files/ /(x86/)/Vim/vim74/gvim.exe''

Simplemente necesitas modificar el HOGAR a tu propio. Para saber qué poner allí, ejecute gvim desde Windows, luego coloque ": echo $ HOME" y presione enter en mi caso, muestra P: /, de modo que se traduce a / cygdrive / p /

Además, si su gvim.exe está en un directorio / versión diferente, deberá ajustar.

Ahora, cuando escribo ''gvim script.sh'' en un indicador de comando de cygwin, se inicia gvim con el archivo, ¡todo está bien!

ACTUALIZAR

Encontré una forma ligeramente mejor de hacer esto. Usar el alias fue vincular mi sesión desde la que ejecuté el gvim, quería que se iniciara como un proceso separado, el uso de "gvim &" no es elegante, ya que enumera el número de trabajo cuando se inicia y muestra una línea de "listo" cuando se completa. Soy demasiado exigente, así que me di cuenta de cómo obtener todo eso ordenado usando una función.

Solo agregue esto a su archivo .bash_functions, se basa en la sección anterior con respecto al uso del directorio de inicio y la barra invertida.

gvim() { ORIGHOME=$HOME HOME=/cygdrive/p/ /cygdrive/c/Program/ Files/ /(x86/)/Vim/vim74/gvim.exe $1 & disown HOME=$ORIGHOME } 2>/dev/null

ACTUALIZACIÓN 2 para usuarios de babun!

Bueno, ya que luché con esto originalmente, terminé desechando la instalación original de cygwin en favor de babun, que parece ser una configuración menos problemática para aquellos que desean la funcionalidad de Linux en Windows sin un virtual completo. Por supuesto, mi script de lanzamiento de gvim se rompió, y tuve que hacer lo siguiente en mi archivo .zshrc (babun usa zsh, al principio me resistí y lo cambié a bash, pero luego cedí porque pensé que debían tener razón, y así fue. gusta)

gvim() { OLD_HOME=$HOME OLD_VIMRUNTIME=$VIMRUNTIME export HOME=/cygdrive/c/Users/gmitchell/ export VIMRUNTIME="C:/Program Files (x86)/VIM/vim74" TARGET=$(cygpath -w $1) (/cygdrive/c/Program/ Files/ /(x86/)/Vim/vim74/gvim.exe $TARGET &) export HOME=$OLD_HOME export VIMRUNTIME=$OLD_VIMRUNTIME }

* Nota: las llaves curvadas circundantes () evitan que la ID del trabajo arruine la cáscara limpia, y ya no necesita el "rechazo"

PD La única molestia que queda con esto ahora es que no puedes "salir" del shell de babun hasta que todas las instancias de gvim que hayas iniciado estén cerradas. Tal vez alguien pueda darse cuenta de eso. He intentado. Cuando escribes exit, simplemente se cuelga allí hasta que hayas salido de todos los gvims.


Escribí cyg-wrapper.sh con este único propósito.

Es compatible con:

  • enlaces simbólicos
  • opciones que no deben interpretarse como rutas de acceso (consulte -c con gvim, o cualquier marca que comience con un signo menos).

En otras palabras, nos permite escribir:

gvim /etc/profile -c /PS1 -c "echo ''correctly opened''" # or even: cd ~/tmp ; ln -s ~/bin/cyg-wrapper.sh gvim -d http://hermitte.free.fr/cygwin/cyg-wrapper.sh cyg-wrapper.sh explorer -e explorer "$vim" explorer http://hermitte.free.fr/

Nota: uso la siguiente función en mi .profile para ejecutar gvim con cyg-wrapper.sh

gvim() { opt='''' if [ `expr "$*" : ''.*tex/>''` -gt 0 ] ; then opt=''--servername LATEX '' fi cyg-wrapper.sh "C:/Progra~1/Edition/vim/vim73/gvim.exe" --binary-opt=-c,--cmd,-T,-t,--servername,--remote-send,--remote-expr --cyg-verbose --fork=2 $opt "$@" }

EDITAR: Actualmente (26 de septiembre de 2014, usando Vim 7.4), Windows gVim usa C:/Windows/gvim.bat para iniciar gVim desde la línea de comandos. Reemplazar la ruta gvim.exe en la función gvim() con este script permite iniciar gvim sin cambiar la ruta para que coincida con la versión actual de Vim (que en realidad puede estar en Progra~2 ); sin embargo, parece que también abre una ventana de cmd.exe superflua.


Esto es un despegue de la respuesta de . No estaba contento con el cambio de HOME en la terminal de cygwin, ya que lo uso localmente para una HOME de cygwin, no para mi Windows. Pero gvim está todo configurado utilizando Windows HOME. Agregué esto a mi .zshrc:

# run windows gvim from command line gvim() { local OLD_HOME=$HOME HOME=/cygdrive/c/Users/jason/ local TARGET=$(cygpath -w $1) /cygdrive/c/Program/ Files/ /(x86/)/Vim/vim74/gvim.exe $TARGET & disown HOME=$OLD_HOME } 2>/dev/null

En realidad, simplemente almacenando y restaurando el HOGAR. Al ser local, OLD_HOME desaparece cuando la función regresa, por lo que no contamina el entorno. Si está editando un archivo cygwin, ejecutarlo a través de cygpath -w lo convertirá en una ruta de archivo que Windows gvim entiende. También le permite usar rutas de ventana (por ejemplo, C:/tmp/foo.txt ) pero con separadores de / unix ''/'', para que pueda prescindir de /cygdrive/c . Creo que todo esto es compatible con bash. Esto da el siguiente resultado:

> gvim [2] 5060 >


Hazte un favor, no intentes ejecutar un gvim de windows desde cygwin. Es probable que el conjunto de variables de entorno sea completamente diferente, y el dolor de los separadores de directorio de barra invertida, espacios en blanco en los nombres de archivo, la incapacidad de entender / las rutas de cygwin hace que esto sea un ejercicio inútil.

¿Y que? Instala la versión cygwin de gvim y olvídate de todos estos problemas.


Parece que el principal problema es que las variables HOME y VIM que son apropiadas para el entorno cygwin se exportan cuando se ejecuta Windows gvim, lo que causa problemas porque Windows gvim no sabe nada de cygwin. Esto lo arregla:

alias gvim=''env -u HOME -u VIM /cygdrive/c/Program/ Files/ /(x86/)/Vim/vim74/gvim.exe''

Tengo gvim de Windows configurado como la aplicación predeterminada (en Windows) para muchos tipos de archivos, por lo que Windows gvim se abre con frecuencia a través del alias open . Esto soluciona ese caso de uso:

alias open=''env -u HOME -u VIM cygstart''


Pongo la siguiente función en mi .bashrc :

function gvim { GVIM_CMD=/cygdrive/c/path/to/gVimPortable.exe if [[ -z "$1" ]] then $GVIM_CMD else $GVIM_CMD `cygpath -w $1` fi }

Esto me permite lanzar gVim desde cualquier lugar.

Funciona bien para archivos con espacios, también ...


Tengo el mismo problema debido a la variante $ SHELL

así que, simplemente me gusta esto

alias gvim=''cmd /c "set SHELL=cmd & start gvim"''

Funciona para mí, puede ser que esto te ayude también.

y tal vez quieras usar el mismo alias para vim.


Ya que probé todo esto y tuve problemas, mostraré lo que estoy usando. Lo escribí en ruby ​​y maneja todo lo que le lanzo (archivos, directorios o nada) sin errores / ventanas emergentes / etc.

Lo gvim como gvim en ~ / Dropbox / bin / cygwin / (que está en mi RUTA)

#!/usr/bin/env ruby args='''' filepath='''' arg=ARGV[0] if arg if File.exist? arg if File.file? arg args+="--remote-tab-silent " end filepath=`cygpath -w ''#{arg}''`.strip filepath="''#{filepath}''" end else end exe="''/c/Program/ Files/ /(x86/)/vim/vim73/gvim.exe'' #{args} #{filepath}" spawn exe