2022/10/28

Vim recordatorio de cosas útiles

El editor Vim siempre suele estar disponible en cualquier servidor remoto. Es muy recomendable manejarse con cierta soltura con este programa para poder configurar un fichero, analizar logs, etc.

Pero además es que Vim puede ser una herramienta muy completa y conveniente para programadores sin necesidad de tener un IDE.

Hay mucha documentación y tutoriales de comandos básicos, pero aquí quiero poner los que más utilizo (y que se me suelen olvidar):

Grabar macros: 

q<letra> : empezar grabación de macro en asociada a <letra>

q: terminar grabación

@<letra>: ejecuta la macro

<number>@@: ejecuta la ultima macro varias veces

https://vim.fandom.com/wiki/Macros


Seleccionar texto:

Usar "modo visual" con la letra "v".


Copiar a clipboard:

You could yank the text into the + (plus) register, that is mapped to the system clipboard. Just select the text in the mode you like and then type:

"+y


Abrir en una determinada línea:

vim +<num_linea> file.txt

VIM Y PYTHON

Si el plugin JEDI está yendo muy lento o causando cierres abruptos probar a deshabilitarlo:

let g:pymode_rope = 0
let g:jedi#completions_enabled = 0

Más datos sobre configuración de JEDI: https://pythonrepo.com/repo/davidhalter-jedi-vim-python-editor-plugins

       
   

2022/02/14

Python instalar paquetes propios en local

Si empiezas a estructurar el código de un proyecto en "packages" que pueden ser compartidos entre varios proyectos, pero todavía están en un estado de desarrollo que hace que haya cambios constantes en todos, ¿cómo puedo hacer para tener todo actualizado?

Mejor que estar copiando código o ficheros todo entre proyectos, o haciendo enlaces a directorios, puedes plantear el instalar en local (para ese entorno) los paquetes.

Convertir código en un package

Para hacer un package importable habría que:
  1. Tener todo el código con funcionalidad a importar dentro de una carpeta. P.e. "myproject"
  2. En el directorio padre de crear un fichero "setup.py"
  3. El fichero "setup.py" deberá tener la información necesaria para poder llevar a cabo la importación. P.e:
    from setuptools import setup
    
    setup(name='myproject',
          version='0.1',
          description='myproject does amazing things!',
          url='https://myuser@github.com/myuser/myproject.git',
          author='My Name',
          author_email='myuser@gmail.com',
          license='MIT',
          packages=['myproject'], ##
          zip_safe=False)
    
  4. Ejecutar `python -m pip install -e path_a_myproject` lo que creará un symlink que hará que lso cambios que se ejecuten el local estarán disponibles para todos los proyectos.
Además estos paquetes locales pueden ser incluidos de ese modo en el fichero "requeriments.txt". Para esto hay que tener en cuenta que la ruta es relativa al directorio desde donde se ejecuta "pip install -r" (no la ruta del fichero .txt). 

Más info: