vim eclipse configuracion

Perfil «.eclipse» y cambio de carpeta de usuario

Al mover mi usuario de Linux del dominio a la máquina local realicé una copia de las preferencias de Eclipse (carpeta oculta .eclipse) para no perder mi configuración y la multitud de plugins instalados. Al ser Eclipse tan portable pensé que iba a ser tan simple como copiar y pegar… Creía, creía yo, iluso de mí.

Bueno, no pasa nada, mi siguiente apuesta fue buscar y reemplazar la ruta antigua por la nueva ruta. Esto fue fácil y en principio tendría que valer pero en cada reinicio me volvía a aparecer la ruta antigua!

Después de un tiempo y de mucha desesperación por esa magia negra imaginé que Eclipse estaría guardando parte de la configuración en un fichero binario o en una base de datos. El comando grep de Linux es capaz de mirar dentro de los binarios, un caso descartado, el siguiente, ¿una base de datos? Por favor, no! ni pensar en algo tan absurdo!

Finalmente un compañero me dio una pista, por lo visto Eclipse almacena parte de la configuración en ficheros GZip, al arrancar los descomprime y por eso todo volvía a desconfigurase y el comando grep no lograba encontrar la cadena buscada, la antigua ruta.

¿Cómo encontrar una cadena de texto en ficheros comprimidos GZip?

Pues hay varias opciones, pero la más sencilla fue utilizar una versión modificada de grep que permite buscar dentro de ficheros GZip, zgrep! Se ha combinado con el comando find para realizar la búsqueda solo dentro de ficheros de tipo gz.

En la consola navegar a la carpeta .eclipse, situada en /home/usuario/.eclipse

find . -iname "*.gz" | xargs zgrep "cadena"

Nos aparecen unos cuantos ficheros, situados en la carpeta:

~/.eclipse/org.eclipse.platform_VERSION_linux_gtk_x86_64/p2/org.eclipse.equinox.p2.engine/profileRegistry/epp.package.jee.profile

Dentro de esta ruta tenemos los ficheros comprimidos buscados, con la extensión «.profile.gz«.

¿Cómo editar los ficheros de configuración comprimidos?

Pues como en el caso anterior, hay varias formas. Lo habitual sería descomprimir el fichero, buscar la ruta antigua y reemplazarla por la nueva y finalmente volver a comprimir el fichero. En mi caso he utilizado el editor de texto vim, que con su magia hace todo este trabajo por nosotros!

En principio no es necesario editar todos los ficheros, bastaría el último. No obstante, debido a la lata que me ha dado, opté por modificarlos todos. Si deseas ordenar los ficheros por fecha de modificación basta con ejecutar en el terminal ls -ltr en la carpeta donde se encuentran dichos archivos.

Editamos el último fichero. Si es la primera vez que utilizas Vim aquí hay un pequeño manual muy práctico. En principio solo necesitarías abrir el fichero, ejecutar la orden despues de pulsar : y finalmente guardar el fichero mediante la orden :x

vim <numero>.profile.gz

Ahora debemos buscar y reemplazar la ruta antigua por la nueva, para ellos presionamos : en el editor e introducimos la siguiente orden:

%s/\/carpeta\/usuarioantiguo/\/usarionuevo/g

Guardamos el fichero mediante la orden :x

He dejado este ejemplo con un caso especial donde se sustituye /carpeta/usuarioantiguo por /usuarionuevo, en la mayoría de casos bastaría solo sustituir una cadena por otra de la forma %s/texto_a_sustituir/texto_nuevo/g

Ahora, al volver a iniciar el Eclipse, ya tendríamos la nueva configuración con la ruta correcta.

¿Qué hacer si esto no funciona?

La manera de comprobar que todo ha ido bien es realizar una búsqueda de la ruta antigua en la carpeta .eclipse. Para ello utilizamos grep con búsqueda recursiva.

grep -r "cadena" .

Si la búsqueda arroja resultado, entonces podría darse el caso de que hubiera algún otro fichero que mantenga la ruta anterior. En mi caso encontré ficheros .xml y .prefs. Para sustituir la ruta antigua por la nueva en dichos ficheros ejecutamos la siguiente orden dentro de la carpeta .eclipse:

find . -iname "*.xml" -print | xargs sed -i "s/home_usuarioantiguo/home_usuarionuevo/g"
find . -iname "*.xml" -print | xargs sed -i "s/\/carpeta\/usuarioantiguo/\/usarionuevo/g"
find . -iname "*.prefs" -print | xargs sed -i "s/home_usuarioantiguo/home_usuarionuevo/g"
find . -iname "*.prefs" -print | xargs sed -i "s/\/carpeta\/usuarioantiguo/\/usarionuevo/g"

Substitución de caracter / con SED

En la cadena de búsqueda hemos utilizado el caracter / escapado. Aunque lo pueda parecer, la cadena pasada a SED no es una expresión regular. A este editor de texto se le pasa la orden s para sustituir las cadenas denotadas por la barra /. Añadiendo la letra g al final se realiza una substitución global. La orden completa queda como s/cadena1/cadena2/g. En nuestro ejemplo se escapa la barra / con \/.

Es posible conformar una expresión regular en vez de aplicar este patrón de búsqueda, dando mayor flexibilidad. En este artículo se trata el uso de expresiones regulares con SED.

Valoración: 1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (Ninguna valoración todavía)
Cargando…

Deja tu comentario...