Abrir archivos en Gvim existente en múltiples pestañas (nuevos)
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?
Solución
Si vim se compila con el href="http://www.vim.org/htmldoc/remote.html" rel="noreferrer"> ClientServer opción
Para abrir más pestañas en este caso, puede ejecutar el comando: 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 # GVIM is the server name. It can be anything.
$ gvim --servername GVIM --remote-tab file1 file2 file3 ...
$ 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:
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 casogvim
se está ejecutando; se iniciagvim
. -
gvim
se llama sin nombre de archivo en la presencia de una instancia degvim
; se abre una nueva pestaña vacía. -
gvim
se llama con un nombre de archivo con o sin una instanciagvim
; 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