Blog Tinux Net

tinux

author_description

  • Publicado en

    🌐 ¿Qué son las IPs de redes locales y por qué importan?

    En una red privada —como la de tu casa, oficina o servidor local— los dispositivos no usan direcciones IP públicas (las que se ven en Internet), sino direcciones privadas, definidas por estándares internacionales (RFC 1918). Estas IPs no son enrutables en Internet, lo que las hace ideales para entornos internos: seguras, reutilizables y sin conflictos globales.


    🔢 Los 3 rangos privados oficiales (y sus máscaras típicas)

    Rango Máscara típica CIDR Nº aprox. de hosts
    10.0.0.0 – 10.255.255.255 255.0.0.0 /8 ~16,7 millones
    172.16.0.0 – 172.31.255.255 255.240.0.0 /12 ~1,048 millones
    192.168.0.0 – 192.168.255.255 255.255.0.0 /16 ~65.500

    ✅ Solo los rangos 172.16.0.0 a 172.31.255.255 son privados dentro del bloque 172.x.x.x.
    (Ej: 172.26.0.0 es privado ✅; 172.32.0.0 ya no lo es ❌)


    🛠 Formas comunes de escribir rangos (útiles en herramientas como nmap, iptables, scripts…)

    1. Notación CIDR (la más limpia y recomendada):

      • 192.168.1.0/24 → todos los hosts desde 192.168.1.0 hasta 192.168.1.255
      • Incluye dirección de red (.0) y broadcast (.255), aunque en la práctica los hosts usan .1 a .254.
    2. Rango explícito:

      • 192.168.1.10-192.168.1.20 → solo esos 11 hosts.
    3. Red + máscara (formato antiguo, pero aún usado):

      • 192.168.1.0:255.255.255.0
      • Menos legible y propenso a errores; evítalo si puedes usar CIDR.

    🧠 Consejos prácticos (para autónomos y sysadmins)

    • En redes pequeñas (casa, oficina pequeña), usa 192.168.x.0/24: fácil de recordar y suficiente para ≤254 dispositivos.
    • En entornos más grandes (edificios, múltiples VLANs), 10.x.x.x/8 da flexibilidad para segmentar sin límites.
    • Nunca asignes IPs públicas (como 8.8.8.8) en tu LAN: romperás el enrutamiento y la seguridad.
    • Si usas zsh (como sabes que te interesa 😊), puedes aprovechar expansiones como: zsh for ip in 192.168.1.{1..10}; do ping -c1 $ip &>/dev/null && echo "$ip está activo"; done Perfecto, Tino. Aquí tienes una mini-guía en Markdown, práctica y enfocada en lo esencial:
      ✅ Subredes
      ✅ DHCP reservado (estático por MAC)
      ✅ Detección de conflictos IP

    Ideal para tener a mano en tu entorno de trabajo (CLI-friendly, como te gusta), y fácil de publicar como post complementario en blog.tinux.net.


    🔹 1. Subredes: Segmentar sin perder el control

    ¿Por qué?

    • Evitar broadcast excesivo
    • Aislar dispositivos (ej: IoT, servidores, invitados)
    • Escalar sin rehacer toda la red

    Caso práctico: partir 192.168.0.0/24 en 2 subredes

    Red CIDR Rango útil Gateway típico
    Oficinas 192.168.0.0/25 192.168.0.1192.168.0.126 192.168.0.1
    Servidores 192.168.0.128/25 192.168.0.129192.168.0.254 192.168.0.129

    💡 /25 = 255.255.255.128 → primer bit del último octeto indica subred (0 = primera mitad, 1 = segunda mitad).

    Comando útil (Linux):

    ipcalc 192.168.0.0/25
    # Muestra: Network, HostMin, HostMax, Broadcast, Netmask
    

    Instala con sudo apt install ipcalc (Debian/Ubuntu).


    🔹 2. DHCP Reservado (asignación estática por MAC)

    ¿Por qué?

    • Que un servidor, impresora o NAS siempre tenga la misma IP
    • Sin tocar la configuración del dispositivo (todo desde el router/DHCP server)

    Ejemplo en dnsmasq (muy usado en routers y Pi-hole):

    Edita /etc/dnsmasq.conf:

    # Reserva por MAC → IP fija
    dhcp-host=AA:BB:CC:DD:EE:FF,192.168.1.50,impresora,24h
    dhcp-host=11:22:33:44:55:66,192.168.1.100,servidor-web,infinite
    
    • Formato: mac,ip,nombre,tiempo-de-lease

    Reinicia: sudo systemctl restart dnsmasq

    En routers domésticos (Movistar, Vodafone...):

    • Suele estar en Red local → Reservas DHCP o Dispositivos → Asignar IP fija.

    🔹 3. Detectar conflictos de IP (dos equipos con la misma IP)

    Síntomas:

    • Pérdida intermitente de conectividad
    • Mensajes como "IP address conflict" en Windows
    • ARP inconsistente: arp -a muestra la misma IP con dos MACs distintas

    Herramientas CLI (desde un equipo Linux/macOS):

    ✅ 1. arp-scan (la más fiable):

    sudo arp-scan --interface=eth0 --localnet
    

    Muestra todas las IPs activas + MACs. Si ves 2 MACs para una misma IP → conflicto.

    Instala: sudo apt install arp-scan

    ✅ 2. ping + arp (método manual):

    ping -c 3 192.168.1.50
    arp -n | grep 192.168.1.50
    # Si cambia la MAC entre pings → conflicto
    

    ✅ 3. En Windows:

    arp -a | findstr "192.168.1.50"
    

    Solución:

    • Reinicia el equipo conflictivo (para que pida nueva IP vía DHCP)
    • Verifica reservas DHCP (evita asignar manualmente IPs dentro del rango DHCP)
    • Usa rangos separados: ej, DHCP: .100–.200, estáticas: .2–.99

    🧰 Bonus: Rangos privados (recordatorio rápido)

    Rango base Usado en…
    192.168.1.0/24 Hogares, oficinas pequeñas
    172.26.0.0/16 Empresas, entornos profesionales (muy común en España ✅)
    10.0.0.0/8 Datacenters, redes grandes
  • Publicado en
    Conexiones de un RJ 45 Tipo A y B

    Orden de Los Colores Del Cable de Red PDF Cable Ethernet Tipo A Y B

    La norma T568A o cable cruzado es un tipo de cable ethernet que se utiliza para conectar dispositivos de computación directamente, los cables cruzados utilizan 2 estándares. T568A y T568B son los estándares de terminación utilizados por la infraestructura.

    Descubre cómo se usan los cables directos y cruzados en distintos. Aprende la diferencia entre los estándares de cableado T568A y. Cable Ethernet Tipo A Y B.

    "CAT 5E soporta hasta 1 Gbps a 100 m; CAT 6, hasta 10 Gbps (pero solo a ≤55 m); CAT 6A y CAT 7 permiten 10 Gbps a 100 m y mejor blindaje frente a interferencias. Esto ayuda a justificar por qué elegir una categoría u otra — especialmente si hablamos de redes empresariales o virtualización.

    Cable plano vs redondos Cables planos porque son baratos y "parecen iguales".

    ⚠️ Los cables planos suelen ser de baja calidad, sin trenzado, sin blindaje y con conectores mal crimpados. Son válidos para pruebas cortas, pero NO para redes estables ni largas distancias. ¡Cuidado con los falsos "CAT6" planos!

    Un esquema simple mostrando: Par trenzado (y por qué se tuerce: cancelación de interferencia) Diferencia entre UTP/FTP/STP (solo nombres y símbolos, sin profundizar aún) Esto reforzaría visualmente por qué el cableado físico importa.


    📡 ¿Qué significan UTP, FTP y STP? La importancia del “blindaje” en el cableado de red

    Cuando hablamos de cables de red (como los RJ45 que ya vimos), no todos son iguales por dentro.
    Aunque por fuera parezcan idénticos, su estructura interna cambia según el entorno donde se usan.
    El factor clave es el blindaje electromagnético — y ahí entran los términos UTP, FTP y STP.

    🔍 ¿Por qué importa el blindaje?
    Los cables de red transmiten señales eléctricas muy débiles. Si pasan cerca de motores, fluorescentes, microondas, o incluso otros cables de red, pueden “escuchar interferencias” — como si intentaras hablar en una discoteca. El blindaje es como poner auriculares con cancelación de ruido… ¡pero al cable!


    🧵 1. UTP: Unshielded Twisted Pair (Par Trenzado Sin Blindaje)

    • ✅ Lo más común en hogares y oficinas normales.
    • ❌ Sin lámina ni malla metálica: solo los 4 pares trenzados.
    • ✅ Barato, flexible y fácil de instalar.
    • ⚠️ Vulnerable a interferencias fuertes (fábricas, hospitales, centros de datos con mucho cableado).

    🎯 Ejemplo cotidiano: el cable que va de tu router al ordenador en casa — casi seguro que es UTP Cat 5e o 6.


    🛡️ 2. FTP: Foiled Twisted Pair (o F/UTP) — Blindaje Global con Lámina

    • ✅ Cada par sigue sin blindaje individual (UTP), pero todos juntos van envueltos en una lámina de aluminio (foil).
    • ✅ Mejor protección contra interferencias externas que el UTP.
    • ✅ Muy usado en entornos industriales ligeros o edificios con mucho ruido eléctrico.
    • ⚠️ La lámina debe estar correctamente conectada a tierra en los conectores (de ahí la importancia de los RJ45 blindados y tomas de tierra adecuadas).

    📌 Nota: En Europa es más común llamarlo F/UTP (Foiled / Unshielded Twisted Pair). En EE.UU. a veces se usa “FTP” genéricamente — ¡cuidado con la ambigüedad!


    🔌 3. STP: Shielded Twisted Pair (o S/FTP, U/FTP, etc.) — Blindaje Individual + Global

    ⚠️ ¡Ojo! STP es un término impreciso — hoy se prefiere la notación IEC 61156-5 (dos letras), que especifica dónde está el blindaje:

    Código Significado Blindaje
    U/UTP Sin blindaje ❌ Nada
    F/UTP Lámina global ✅ Solo lámina exterior (esto es el "FTP" clásico)
    U/FTP Lámina por par ✅ Cada par tiene su propia lámina (sin global)
    S/FTP Malla global + lámina por par ✅✅ Máxima protección (típico en centros de datos o entornos críticos)
    F/FTP Lámina global + lámina por par ✅✅ Similar a S/FTP, pero con lámina en vez de malla

    🎯 Ejemplo práctico:
    En un hospital, cerca de equipos de resonancia magnética: se usa S/FTP Cat 6a — para evitar que las interferencias distorsionen datos médicos o de red.


    🛠️ ¿Cómo reconocerlos al tacto o vista?

    • UTP: cable blando, ligero, sin capa metálica al pelar.
    • F/UTP (FTP): al pelar el exterior, verás una lámina brillante (como papel de aluminio) — y debajo, los pares trenzados sin más cobertura.
    • S/FTP: lámina por par (4 láminas pequeñas) + una malla metálica trenzada alrededor de todo.

    💡 Consejo para identifizarlo visualmente:
    “Imagina que los pares son personas hablando por teléfono:
    — En UTP, están en una plaza pública (cualquiera puede oírlos).
    — En FTP, están en una cabina de cristal (te ven, pero no te escuchan bien).
    — En S/FTP, cada uno está en una cabina *metálica con aislamiento acústico
    … ¡y todas las cabinas están dentro de un búnker!”*


    🔌 Implicaciones prácticas

    Tipo ¿Necesita tierra? ¿Conectores especiales? ¿Dónde usarlo?
    UTP ❌ No ❌ Normales Casa, oficina estándar
    FTP (F/UTP) ✅ Sí (en ambos extremos) ✅ RJ45 blindados + toma de tierra Fábricas, edificios antiguos, instalaciones semi-profesionales
    STP (S/FTP) ✅✅ Sí, y buena puesta a tierra ✅✅ Conectores totalmente metálicos, patch panels blindados Centros de datos, hospitales, laboratorios, redes críticas

    ⚠️ Error común: instalar cable FTP sin conectar la lámina a tierra → el blindaje no funciona, e incluso puede actuar como antena y empeorar las interferencias.

  • Publicado en

    Restic

    • Crear calendario de snapshots a guardar, diario [7], semanal [3] , mensual [1] y anual [1].
    • Crear estructura para excluir archivos y/o directorios.
    • Crear estructura para incluir archivos y/o directorios.
    • Crear metodo, para que sftp se pueda autentificar con llave ( keys rsa o ed25529).
    • Crear menus para aceptar crear el backup de restic.
    • Generar archivo para tratamiento posterior con restic.

    Nota: muy importante es el orden de las ordenes, y opciones

    Politica de Retencion o Calendarios de Snapshots

    # backup.sh
    DIA_SEMANA=$(date +%u)    # 1=lunes, 7=domingo
    DIA_MES=$(date +%d)
    MES=$(date +%m)
    
    TAGS="diario"
    
    # Semanal: cada domingo
    if [[ $DIA_SEMANA -eq 7 ]]; then
      TAGS="$TAGS,semanal"
    fi
    
    # Mensual: primer día del mes
    if [[ $DIA_MES -eq 1 ]]; then
      TAGS="$TAGS,mensual"
    fi
    
    # Semestral: 1 de enero y 1 de julio
    if [[ $MES == "01" && $DIA_MES == "01" ]]; then
      TAGS="$TAGS,semestral,anual"
    elif [[ $MES == "07" && $DIA_MES == "01" ]]; then
      TAGS="$TAGS,semestral"
    fi
    
    restic -r "$REPO" backup --tag "$TAGS" /ruta/a/respaldo
    
    # Ahora forget con agrupación por tags
    restic -r "$REPO" forget \
      --group-by tags \
      --keep-tag diario      --keep-last 5 \
      --keep-tag semanal     --keep-last 3 \
      --keep-tag mensual     --keep-last 1 \
      --keep-tag semestral   --keep-last 4 \
      --keep-tag anual       --keep-last 1 \
      --prune
    

    Filtros para Inclusion de Archivos

    Incluir archivos segun que patron , no es sencillo en restic. Al final, he llegado a la conclusion de utilizar la herramienta externa find para que me cree los la ruta absoluta para copiar.

    Ejemplo que funciona:

    Hay que crear un archivo como .include_images utilizando este codigo con find

    find . -type f \( -iname "*.jpg" -o -iname "*.png" -o -iname "*.gif" -o -iname "*.tiff" -o -iname "*.bmp" \) -print > .include_images
    

    y asi en el Shell:

    restic backup  -r /mnt/restic-backup/testing.took.tinux.net  --files-from .include_images
    
    
  • Publicado en

    I'll help you set up a Git server on AlmaLinux. Here's a comprehensive guide:

    Installing Git Server on AlmaLinux

    1. Update System and Install Git

    sudo dnf update -y
    sudo dnf install git -y
    

    2. Create a Git User

    sudo adduser git
    sudo passwd git
    

    3. Set Up SSH Access

    # Switch to git user
    sudo su - git
    
    # Create .ssh directory
    mkdir ~/.ssh && chmod 700 ~/.ssh
    touch ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys
    

    4. Create a Git Repository

    # Create a directory for repositories
    sudo mkdir -p /srv/git
    sudo chown git:git /srv/git
    
    # Switch to git user and create a bare repository
    sudo su - git
    cd /srv/git
    git init --bare myproject.git
    

    5. Configure Firewall (if needed)

    sudo firewall-cmd --permanent --add-service=ssh
    sudo firewall-cmd --reload
    

    6. Client Setup - Add SSH Key

    On your client machine:

    # Generate SSH key if you don't have one
    ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
    
    # Copy your public key to the git server
    ssh-copy-id git@your-server-ip
    

    Or manually add your public key to /home/git/.ssh/authorized_keys on the server.

    7. Clone and Use the Repository

    From your client machine:

    # Clone the repository
    git clone git@your-server-ip:/srv/git/myproject.git
    
    # Navigate to the directory
    cd myproject
    
    # Add files and push
    echo "# My Project" >> README.md
    git add README.md
    git commit -m "Initial commit"
    git push origin master
    

    Alternative: Install Gitea (Web-based Git Service)

    If you want a GitHub-like interface:

    # Install dependencies
    sudo dnf install git wget -y
    
    # Download Gitea
    wget -O /tmp/gitea https://dl.gitea.io/gitea/1.21/gitea-1.21-linux-amd64
    sudo mv /tmp/gitea /usr/local/bin/gitea
    sudo chmod +x /usr/local/bin/gitea
    
    # Create git user and directories
    sudo adduser --system --shell /bin/bash --group --disabled-password --home /home/git git
    sudo mkdir -p /var/lib/gitea/{custom,data,log}
    sudo chown -R git:git /var/lib/gitea/
    sudo chmod -R 750 /var/lib/gitea/
    
    # Create systemd service
    sudo nano /etc/systemd/system/gitea.service
    

    Add this content to the service file:

    [Unit]
    Description=Gitea
    After=syslog.target
    After=network.target
    
    [Service]
    RestartSec=2s
    Type=simple
    User=git
    Group=git
    WorkingDirectory=/var/lib/gitea/
    ExecStart=/usr/local/bin/gitea web --config /etc/gitea/app.ini
    Restart=always
    Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea
    
    [Install]
    WantedBy=multi-user.target
    
    # Start Gitea
    sudo systemctl enable gitea
    sudo systemctl start gitea
    
    # Open firewall port (default 3000)
    sudo firewall-cmd --permanent --add-port=3000/tcp
    sudo firewall-cmd --reload
    

    Access Gitea at http://your-server-ip:3000

    Security Tips

    1. Disable shell access for git user:

      sudo usermod -s /usr/bin/git-shell git
      
    2. Use SSH keys only (disable password authentication)

    3. Set up proper file permissions on repository directories

    4. Enable SELinux and configure it properly

    5. Keep system updated regularly

    Pasos para interactuar con el git remoto desde tu ubicación local.

    git remote add origin git@git.servidor.net:/srv/git/miproyecto.git
    

    Pasos Completos

    1. Añadir el repositorio remoto:
    git remote add origin git@git.servidor.net:/srv/git/miproyecto.git
    
    1. Verificar que se añadió correctamente:
    git remote -v
    

    Deberías ver algo como:

    origin  git@git.servidor.net:/srv/git/miproyecto.git (fetch)
    origin  git@git.servidor.net:/srv/git/miproyecto.git (push)
    
    1. Hacer tu primer commit (si aún no lo has hecho):
    git add .
    git commit -m "Primer commit"
    
    1. Subir los cambios al servidor:
    git push -u origin master
    # o si usas 'main' como rama principal:
    git push -u origin main
    

    Si ya Añadiste el Remote Incorrectamente

    Si ya ejecutaste el comando incorrecto y necesitas corregirlo:

    # Ver los remotes actuales
    git remote -v
    
    # Si existe un remote incorrecto, eliminarlo
    git remote remove origin
    
    # Añadir el remote correcto
    git remote add origin git@git.servidor.net:/srv/git/miproyecto.git
    

    Solución de Problemas de Conexión

    Si tienes problemas conectando al servidor, verifica:

    1. Conexión SSH:
    ssh git@git.servidor.net
    
    1. Permisos del repositorio en el servidor:
    # En el servidor
    ls -la /srv/git/miproyecto.git
    
    1. Tu clave SSH está configurada:
    ssh-add -l
    

    ¿Te funciona ahora con el comando correcto?

  • Publicado en

    Configuraciones para las cuentas de hotmail, live , office365 y Outlook. Hay que irse al la cuenta y activar o bien el reenvio o IMAP/POP3

    IMAP server: outlook.office365.com IMAP port: 993 IMAP encryption: SSL/TLS Authentication Method: OAuth2/Modern Auth

    POP server name: outlook.office365.com POP port: 995 POP encryption: SSL/TLS Authentication Method: OAuth2/Modern Auth

    SMTP server name: smtp-mail.outlook.com SMTP port: 587 SMTP encryption: STARTTLS Authentication Method: OAuth2/Modern Auth

  • Publicado en

    Los plugin que son necesarios para mi programacion. Los generalistas, que son para todo tipo de textos. Y luego los dedicados para cada tipo de programacion.

    Para ver los plugins de nevim Primero tenemos que saber que gestor de plugins tenemos:

    nvim ~/.config/nvim/init.vim 
    

    Para saber qué gestor de plugins usas en Neovim, puedes revisar tu archivo de configuración. Aquí te explico cómo hacerlo:

    1. Revisa tu archivo de configuración principal

    Abre tu archivo de configuración de Neovim:

    nvim ~/.config/nvim/init.lua
    

    o si usas Vimscript:

    nvim ~/.config/nvim/init.vim
    

    2. Busca estas señales características

    Si usas Packer.nvim verás algo como:

    require('packer').startup(function(use)
        use 'wbthomason/packer.nvim'
        use 'nvim-tree/nvim-tree.lua'
        -- más plugins...
    end)
    

    Si usas Lazy.nvim verás:

    require("lazy").setup({
        {"nvim-tree/nvim-tree.lua"},
        {"nvim-treesitter/nvim-treesitter"},
        -- más plugins...
    })
    

    Si usas vim-plug (en Vimscript):

    call plug#begin()
    Plug 'preservim/nerdtree'
    Plug 'nvim-treesitter/nvim-treesitter'
    " más plugins...
    call plug#end()
    

    3. Comando rápido para verificar

    Ejecuta en Neovim:

    :scriptnames
    

    Busca líneas que contengan:
    - packerPacker.nvim
    - lazyLazy.nvim
    - plugvim-plug

    4. Revisa el directorio de plugins

    Ejecuta en terminal:

    ls ~/.local/share/nvim/site/pack/
    

    Los directorios comunes son:
    - packer/Packer.nvim
    - lazy/Lazy.nvim
    - plugins/vim-plug

    • awesome-vim-colorschemes: OK
    • telescope.nvim: OK
    • vim-snippets: OK
    • vim-loremipsum: OK
    • coc.nvim: OK
    • nvim-treesitter: OK
    • nvim-cmp: OK
    • nvim-web-devicons: OK
    • indent-blankline.nvim: OK
    • vim-css-color: OK
    • nerdtree: OK
    • plenary.nvim: OK
    • emmet-vim: OK
    • vim-surround: OK
    • vim-closetag: OK
    • nvim-tree.lua: OK
    • vim-airline: OK
    • vim-unimpaired: OK
  • Publicado en

    Anotaciones de trabajo con neovim.

    Combinacion de teclas para aceptar la sugerencia de coc: [Ctrl+y] + , Teclas importantes o inserta nueva linea en blanco si se le da en la linea superior bd elimina el bufffer sonde estemos situados :ls lista los bufferes bd35 eliminaría el buffer 35 sin cerrar ninguna ventana

    Ctrl+w x swap windows Intercambia ventanas en el x-axis

    Sustitucion en todo el documento

    :%s/SustituirPalabra/PalabraSustituida/g
    

    /g es para indicar que lo haga en general.

    mksession: Guarda sesiones de neovim para recupèrarlas mas tarde. :

    mks ~/session.nvim
    

    Para recuperar la sesion (importante la S mayuscula)

     $> nvim -S ~/session.nvim
    

    Creacion de ventana en neovim con Ctrl. Todo esto se puede hacer con ordenes de nvim: como por ejemplo :sp :sv , etc

    Ctrl+ws o :sp: dividir ventana horizontalmente. 
    Ctrl+wv o :sv.: dividir ventana verticalmente.
    Ctrt+ww: Cambiar de ventana .
    Ctrl+wq: cerrar ventana. 
    Ctrl+wx: intercambiar ventanas. 
    Ctrl+w=: hacer ventanas iguales.
    

    Plugin: emmet Para su instalacion hay que editar el archivo de configuracion de neovim:

    nvim ~/.config/nvim/init.vim

    E inserta entre los tags de

    call plug#begin('~/.local/share/nvim/plugged')
    Plug 'mattn/emmet-vim' "Funciones Emmet de Autocompletado html, CSS, y Javascript
    call plug#end()
    

    Puedes cerrar o abrir neovim para que tenga en cuenta los camios o bien el comando: :source

    Para instalar el plugin hay que ejecutar el instalador de plugins :PlugInstall

    Tambien es buena idea hacer updates a los plugins que tengamos instalados:

     :PlugUpdate , :PlugUpgrade
    

    Para poder usarlo ejemplo: En modo insercion

     html:5 y luego [Ctrl+y] + , o ! y luego [Ctrl+y] + ,
    

    Para expandir o contraer etiquetas HTML: Instalar el complemento "vim-surround"

    Agregar la siguiente línea al archivo de configuración ~/.config/nvim/init.vim:

    Plug 'tpope/vim-surround'

    Recargar la configuración de Neovim o reinicia Neovim y ejecutar :PlugInstall para instalar el complemento.

    Abrir un HTML.

    Colocar el cursor dentro de la etiqueta que se desea contraer o expandir.

    Para contraer la etiqueta, presiona cst. Esto significa:

    c: Modo de cambio (change mode). st: Seleccionar "tag" (la etiqueta) que envuelve el cursor. Para expandir la etiqueta, presiona ysat. Esto significa:

    ys: Yank surroundings (copia el entorno). at: Alrededor de la etiqueta (around tag). Con estos comandos, se podra contraer o expandir las etiquetas HTML de manera rápida y eficiente en Neovim. El complemento "vim-surround" también es útil para manipular otros tipos de delimitadores, como comillas, paréntesis y corchetes. Más información sobre las opciones disponibles y las combinaciones de teclas :help surround dentro de Neovim.

    Comandos de plegado: https://atareao.es/tutorial/vim/pliegues-en-vim @atareao@mastodon.social

    Para facilitarte todo esto del plegado, a continuación encontrarás los comandos mas utilizados en el modo normal,

    zo: abre el pliegue sobre el que te encuentras. También lo puedes hacer con la barra espaciadora.
    zc: hace la operación inversa de la anterior, es decir, cierra el pliegue sobre el que te encuentres…, en caso de que exista claro.
    za: abre o cierra el pliegue el que te encuentres. Es decir, si el pliegue está abierto lo cierra, y en el caso de que esté cerrado lo abre.
    zd: en caso de encontrarte ante un pliegue manual, con esta combinación de teclas, borrará el pliegue. De esta manera ya no podrás activarlo de nuevo. Esto no borra el texto contenido en el pliegue, solo borra el pliegue en si.
    zj: desplaza el cursor hasta el siguiente pliegue.
    zk: mueve el cursor hasta el pliegue anterior.
    zR: abre todos los pliegues en la memoria actual, recuerda el capítulo anterior sobre memorias, ventanas y pestañas.
    zM: cierra todos los pliegues existentes.
    zE: borra todos los pliegues.
    zo: Abre un nivel de plegado debajo del cursor.
    zO: Abre todos los niveles de plegado debajo del cursor.
    zc: Cierra un nivel de plegado debajo del cursor.
    zC: Cierra todos los niveles de plegado debajo del cursor.
    za: Alterna el plegado en el nivel bajo el cursor (plegar/desplegar).

  • Publicado en

  • Abrir DBeaver y haz clic en el botón "Nueva conexión".
  • En la ventana "Nueva conexión", seleccionar "MySQL" como el tipo de conexión.
  • En la sección "Configuración de conexión", introducir la siguiente información:
    • Nombre de host: localhost
    • Puerto: el puerto de la base de datos MySQL. El puerto por defecto es 3306.
    • Usuario: el nombre de usuario de la base de datos MySQL.
    • Contraseña: la contraseña de la base de datos MySQL.

    En la sección "SSH":

    • Tipo de conexión: "SSH".
    • Nombre de host: la dirección IP o el nombre de host del servidor SSH.
    • Puerto: el puerto del servidor SSH. El puerto por defecto es 22.
    • Usuario: el nombre de usuario del servidor SSH.
    • Contraseña: la contraseña del servidor SSH.

    • Puerto local: el puerto local que quieres usar para el túnel SSH. Ejem: 3310

    • Puerto remoto: el puerto remoto que quieres usar para el túnel SSH. Ejem: 3306
    1. Hacer clic en el botón Probar para comprobar la conexión. Si la conexión es exitosa, aparecerá un mensaje de "Conexión exitosa".

    Haz clic en el botón Aceptar para guardar la conexión.

  • Publicado en

    Abrir DBeaver y haz clic en el botón "Nueva conexión".

    En la ventana "Nueva conexión", seleccionar "MySQL" como el tipo de conexión.
    En la sección "Configuración de conexión", introducir la siguiente información :

    Nombre de host: localhost

    Puerto: el puerto de la base de datos MySQL. El puerto por defecto es 3306.

    Usuario: el nombre de usuario de la base de datos MySQL.

    Contraseña: la contraseña de la base de datos MySQL.

    En la sección "SSH":

    Tipo de conexión: "SSH".

    Nombre de host: la dirección IP o el nombre de host del servidor SSH.

    Puerto: el puerto del servidor SSH. El puerto por defecto es 22.

    Usuario: el nombre de usuario del servidor SSH. Contraseña: la contraseña del servidor SSH.

    Puerto local: el puerto local que quieres usar para el túnel SSH. Ejem: 3310

    Puerto remoto: el puerto remoto que quieres usar para el túnel SSH. Ejem: 3306

    Hacer clic en el botón Probar para comprobar la conexión. Si la conexión es exitosa, aparecerá un mensaje de "Conexión exitosa".

    Haz clic en el botón Aceptar para guardar la conexión.