Pregunta

He puesto algunos alias en mi .bashrc para abrir un grupo de archivos de proyecto en gvim, cada uno en su propia pestaña:

gvim -p <list of file names using absolute paths>

Esto es todo muy bien, excepto que hay varios grupos de archivos puede ser que quiera para moverse entre en un momento dado (mi proyecto actual utiliza Ruby on Rails, por lo que explica que). Lo que sería realmente impresionante es si podría añadir las nuevas pestañas a una instancia existente de gvim. En mi última posición trabajé en Vista; Tengo todo esto abriendo un montón de fichas vacíos en gvim, lo que me permitió hacer clic derecho en un nombre de archivo y elegir la opción "Abrir en existente Sin Nombre gvim." Ahora uso Ubuntu y no hay tal cosa en el menú contextual. ¿Hay alguna manera de hacer esto desde la línea de comandos?

¿Fue útil?

Solución

Si vim se compila con el href="http://www.vim.org/htmldoc/remote.html" rel="noreferrer"> ClientServer opción

$ gvim --servername GVIM  # GVIM is the server name. It can be anything.

Para abrir más pestañas en este caso, puede ejecutar el comando:

$ gvim --servername GVIM --remote-tab file1 file2 file3 ...

La característica ClientServer en vim es muy práctico. No se limita a la apertura de los archivos; que puede ser usado para enviar cualquier comando a VIM usando la línea de comandos. Por ejemplo, para cerrar una instancia remota vim, puede utilizar:

$ gvim --servername GVIM --remote-send '<Esc>:wqa<CR>'

Otros consejos

Desde el interior de Gvim, tipo :tabe {file_name}. Esto abre el archivo llamado en una nueva pestaña. Si no es aficionado a escribir los nombres de archivo largos, intente lo siguiente:

:tabnew
:e .

Esto abrirá una nueva página de pestaña en blanco y abrir un explorador de archivos. Puede ratón clic en su camino alrededor o utilizar el teclado. Haga clic o pulse la tecla enter en el archivo que desea abrir. Intente utilizar el teclado para colocar el cursor sobre el archivo que desea abrir y después haga clic en 'T'. Esto abre el archivo seleccionado en una nueva pestaña, manteniendo el explorador de archivos abiertos en la primera pestaña. Esto podría ser una manera rápida para abrir un montón de archivos.

Hay un montón de cosas que puede hacer con páginas de fichas que pueden hacer la vida más fácil. Para llegar a la sección correspondiente del manual de Vim en línea de ayuda, el tipo :h tabpage.

¿Quiere que su menú contextual de Windows para que pueda abrir archivos en una nueva pestaña de la ventana gvim actualmente abierto?

Guardar como como un archivo llamado temp.reg y haga doble clic en él para agregar la configuración de su registro. Asegúrese de modificar la ruta a vim si el suyo es diferente.

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\Shell\Open with &Vim]
[HKEY_CLASSES_ROOT\*\Shell\Open with &Vim\command]
@="\"C:\\Program Files (x86)\\Vim\\vim73\\gvim.exe\" -p --remote-tab-silent \"%1\" \"%*\""

Ahora va a tener un menú contextual como esto:

menú contextual vim

Los usuarios de Linux pueden utilizar este tipo de script:

#!/bin/bash

ANS=`pgrep -fx "gvim --servername GVIM"`

echo $@

if [[ ! $ANS ]]; then
    gvim --servername GVIM
fi

if [[ $1 ]]; then
    gvim --servername GVIM --remote-tab "${@}"
fi

Y a continuación, editar el archivo gvim.desktop para el uso de este script:

Exec=/home/user/bin/my_gvim_script.sh %F

Hay una manera:

n*.cpp|tab ba

o si se quiere dividir:

n*.cpp|sba

Si desea saber más:

:help ba

y no sé lo que es n, pero que no funcionaría sin él.

Aquí está mi gvim script de arranque. Es una extensión de las respuestas anteriores. Asegura sólo una instancia gvim se ejecutará cuando gvim se llama en todas las circunstancias:

  • gvim se llama sin nombre cuando ningún caso gvim se está ejecutando; se inicia gvim.
  • gvim se llama sin nombre de archivo en la presencia de una instancia de gvim; se abre una nueva pestaña vacía.
  • gvim se llama con un nombre de archivo con o sin una instancia gvim; una ficha se abre mostrando el archivo.

Esto imitar el comportamiento estándar de otros editores.

#!/bin/bash
exec=/usr/bin/gvim  #the path to gvim
if [ $# -eq 0 ]
  then  # no filename given
    if [ -z $($exec --serverlist) ]
      then  # no filename given and no gvim instance
        $exec -f --servername GVIM > /dev/null 2>&1
      else  # no filename given, but a gvim instance exists
        $exec -f --servername GVIM --remote-send ':tabnew<CR>' > /dev/null 2>&1
    fi
  else  # filenames given
    $exec -f --servername GVIM --remote-tab "$@" > /dev/null 2>&1
fi
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top