{"id":23036785,"url":"https://github.com/wildzarek/42env-nr","last_synced_at":"2026-05-01T00:31:55.271Z","repository":{"id":262015452,"uuid":"866082017","full_name":"WildZarek/42env-nr","owner":"WildZarek","description":"42 Environment Configuration Script (without sudo)","archived":false,"fork":false,"pushed_at":"2025-03-07T16:10:41.000Z","size":935,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-11T14:43:51.197Z","etag":null,"topics":["42school","bash","dotfiles","linux","termux","ubuntu"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/WildZarek.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-10-01T16:06:30.000Z","updated_at":"2025-03-07T16:05:40.000Z","dependencies_parsed_at":"2025-08-11T14:32:23.398Z","dependency_job_id":"2eaf7b1d-ce2d-48e1-bba0-8b4a29d6379c","html_url":"https://github.com/WildZarek/42env-nr","commit_stats":null,"previous_names":["wildzarek/42env-nr"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/WildZarek/42env-nr","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WildZarek%2F42env-nr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WildZarek%2F42env-nr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WildZarek%2F42env-nr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WildZarek%2F42env-nr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WildZarek","download_url":"https://codeload.github.com/WildZarek/42env-nr/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WildZarek%2F42env-nr/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32481553,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"ssl_error","status_checked_at":"2026-04-30T13:12:06.837Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["42school","bash","dotfiles","linux","termux","ubuntu"],"created_at":"2024-12-15T17:27:29.820Z","updated_at":"2026-05-01T00:31:55.212Z","avatar_url":"https://github.com/WildZarek.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"assets/42_env_banner.png\" alt=\"42 Env Banner\" /\u003e\n  \u003ch1\u003e42 ENVironment Configuration Script\u003c/h1\u003e\n  \u003cp\u003eAutomatiza la instalación y configuración del entorno básico para empezar a programar en el Cursus de 42.\u003c/p\u003e\n\u003c/div\u003e\n\u003cbr\u003e\n\n# Distribuciones Compatibles\n\nTesteado en las siguientes distribuciones:\n\n| Distribución                                                  | Codename      | Estado |\n| ----------------                                              | ------------- | ------ |\n| [Ubuntu 22.04 LTS (42)](https://releases.ubuntu.com/jammy/)   | Jammy         | Ok     |\n| [Android Termux](https://f-droid.org/es/packages/com.termux/) | Termux        | Ok     |\n\n# Índice\n\n1. [Software](#software)\n2. [Recomendaciones](#recomendaciones)\n3. [Instalación](#instalación)\n4. [Durante la ejecución](#durante-la-ejecución)\n5. [Neovim](#neovim)\n    - [Uso básico de NeoVim](#uso-básico-de-neovim)\n6. [Extras](#extras)\n    - [Oh-My-Zsh](#oh-my-zsh)\n    - [zsh-autosuggestions](#zsh-autosuggestions)\n    - [zsh-syntax-highlighting](#zsh-syntax-highlighting)\n    - [LSD (LSDeluxe)](#lsd-lsdeluxe)\n    - [BAT (batcat)](#batcat)\n    - [xclip](#xclip)\n7. [42env](#42env)\n\n# Software\n\nEste script instala el siguiente software en el caso de que no esté instalado:\n\n- **zsh |** [Shell ZSH](https://www.zsh.org/)\n- **oh-my-zsh |** [Oh-My-Zsh](https://ohmyz.sh/)\n- **zsh-autosuggestions |** [Plugin zsh-autosuggestions](https://github.com/zsh-users/zsh-autosuggestions)\n- **zsh-syntax-highlighting |** [Plugin zsh-syntax-highlighting](https://github.com/zsh-users/zsh-syntax-highlighting)\n- **git |** [Git Fast Version Control](https://git-scm.com/doc)\n- **python3 |** [Python 3.11.2](https://www.python.org/downloads/release/python-3112/)\n- **pip3 |** [Package Installer for Python](https://pip.pypa.io/en/stable/)\n- **neovim |** [Hyperextensible Vim-based text editor](https://neovim.io/) + vim-plug + 42 plugins\n- **nerd fonts |** [Iconic font aggregator, collection, and patcher](https://www.nerdfonts.com/) | Hack Nerd Font\n- **lsd |** [The next gen ls command](https://github.com/lsd-rs/lsd)\n- **bat |** [A cat clone with wings](https://github.com/sharkdp/bat)\n- **xclip |** [Command line interface to the X11 clipboard](https://github.com/astrand/xclip)\n- Atajos de teclado para 'nvim' y config para .zshrc\n\n# Instalación\n\n\u003cimg src=\"assets/000_running.png\" alt=\"Script running\" align=\"center\" /\u003e\n\nPrimero clonamos este repositorio y entramos en la carpeta `42env-nr` creada.\n\n```bash\ngit clone https://github.com/WildZarek/42env-nr.git; cd 42env-nr\n```\n\nAsigna permisos de ejecución al script y ejecútalo. Se recomienda tener siempre maximizada la ventana de la shell.\n\n```bash\nchmod +x 42env-nr.sh; ./42env-nr.sh\n```\n\n\u003cimg src=\"assets/001_install_log.png\" alt=\"Installation log\" align=\"center\" /\u003e\n\n# Durante la ejecución\n\nAl ejecutar el script, te pedirá tu usuario de la Intra 42, escríbelo y pulsa `Enter`\u003cbr\u003e\nEste usuario se usará para configurar el header de 42 para nvim.\n\nDespués de finalizar la instalación ejecuta `nvim`, acto seguido escribe `:PlugInstall` para que se complete la configuración de Neovim.\n\n```bash\nnvim\n```\n\n\u003e [!NOTE]\n\u003e Si estás instalando este entorno en 42 Málaga (sin permisos sudo), en lugar de `nvim` deberás utilizar el alias `nv` en la terminal.\n\n# NeoVim\n\nSi ejecutas `nvim` sin ningún nombre de archivo, se abrirá a la izquierda el explorador de archivos en la ruta actual para que puedas navegar entre las distintas carpetas y archivos. Si se ejecuta pasando un nombre de archivo, entonces el foco cambia directamente a la ventana del archivo.\n\n\u003cimg src=\"assets/002_neovim.png\" alt=\"NeoVim without file\" align=\"center\" /\u003e\n\u003cimg src=\"assets/003_neovim_file.png\" alt=\"NeoVim with file\" align=\"center\" /\u003e\n\n## Uso básico de NeoVim\n\nEn NeoVim se han definido multitud de atajos de teclado para el uso diario que funcionan solo en el modo NORMAL y nos facilitan la tarea de escribir codigo:\n\n**Tecla \u003ckbd\u003eF1\u003c/kbd\u003e:** Inserta el header de 42 y pone el editor en modo `Insert`.\n\n\u003cimg src=\"assets/004_header_42.png\" alt=\"Header 42\" align=\"center\" /\u003e\n\n**Tecla \u003ckbd\u003eF2\u003c/kbd\u003e:** Formatea automáticamente el código siguiendo la Norma para presentarlo a la `norminette`.\n\n\u003cimg src=\"assets/005_example_code.png\" alt=\"Example of wrong code\" align=\"center\" /\u003e\n\u003cimg src=\"assets/006_fixed_code.png\" alt=\"Code fixed\" align=\"center\" /\u003e\n\u003cimg src=\"assets/008_norminette_ok.png\" alt=\"Norminette passed\" align=\"center\" /\u003e\n\n**Tecla \u003ckbd\u003eF3\u003c/kbd\u003e:** Ejecuta `norminette` con las flags `-R CheckForbiddenSourceHeader` sobre el archivo actual.\n\n\u003cimg src=\"assets/007_errors_norminette.png\" alt=\"Errors in code syntax\" align=\"center\" /\u003e\n\n**Tecla \u003ckbd\u003eCtrl\u003c/kbd\u003e+\u003ckbd\u003eq\u003c/kbd\u003e:** Fuerza el cierre de la ventana activa [Equivale a `:q!`]\n\n**Tecla \u003ckbd\u003eCtrl\u003c/kbd\u003e+\u003ckbd\u003es\u003c/kbd\u003e:** Guarda el documento activo [Equivale a `:w`]\n\n**Tecla \u003ckbd\u003eCtrl\u003c/kbd\u003e+\u003ckbd\u003ef\u003c/kbd\u003e:** Guarda y cierra el documento activo [Equivale a `:wq`]\n\n**Tecla \u003ckbd\u003eF4\u003c/kbd\u003e:** Abre o cierra el explorador de archivos.\n\n\u003cimg src=\"assets/009_nerdtree_explorer.png\" alt=\"NERDTree Explorer\" align=\"center\" /\u003e\n\n\u003e [!NOTE]\n\u003e Puedes ver los demás [atajos de teclado aquí](#atajos-de-teclado-neovim)\n\n# Extras\n\n## Oh-My-Zsh\n\n\u003cstrong\u003eOh My Zsh\u003c/strong\u003e es una capa de personalización en formato framework que se instala sobre Zsh. Proporciona una amplia gama de características y mejoras, como autocompletado avanzado, atajos de teclado, sugerencias de comandos, temas personalizables y una amplia biblioteca de plugins.\n\n## zsh-autosuggestions\n\n\u003cstrong\u003ezsh-autosuggestions\u003c/strong\u003e es un plugin que a medida que escribimos un comando, nos sugiere y recuerda comandos escritos anteriormente (que residen en el historial de la terminal) en color gris de fondo, para que sea más sencillo para nosotros identificarlos. Pulsando la tecla \u003ckbd\u003e→\u003c/kbd\u003e le decimos a zsh que lo recupere íntegro, lo que puede ser útil para comandos largos. Similar a como lo hace la shell `fish` por defecto.\n\n## zsh-syntax-highlighting\n\n\u003cstrong\u003ezsh-syntax-highlighting\u003c/strong\u003e proporciona resaltado de color de comandos, el cuál viene de una característica que incorporaba inicialmente la shell `fish`. Al escribir un comando en la terminal nos aparecerá en rojo si no está instalado en el sistema o en verde si está disponible para utilizar. De esta forma sabremos, a medida que vamos escribiendo los comandos, si los estamos escribiendo bien (o por lo contrario, tenemos erratas) o si no se encuentra instalado un comando, por ejemplo, incluso antes de pulsar la tecla \u003ckbd\u003eENTER\u003c/kbd\u003e\n\n## LSD (LSDeluxe)\n\nSe incluye `lsd` ya que mejora la legibilidad en la terminal aprovechando las \u003cstrong\u003eHack Nerd Fonts\u003c/strong\u003e instaladas en el sistema. El alias `ll` equivale a:\n\n```bash\n/usr/bin/lsd -lha --group-dirs=first\n```\n\n\u003cimg src=assets/010_lsd_example.png alt=\"header_logo\" align=\"center\"\u003e\n\nSi por comodidad queremos ver los permisos de los archivos y carpetas en base octal, `llo` es un alias de:\n\n```bash\n/usr/bin/lsd -lha --group-dirs=first --permission octal\n```\n\n\u003cimg src=assets/011_lsd_example_octal.png alt=\"header_logo\" align=\"center\"\u003e\n\n## BAT (batcat)\n\n\u003cstrong\u003ebat\u003c/strong\u003e es una alternativa moderna al clásico comando `cat` de Linux. Ofrece algunas características únicas, como números de línea de impresión bonita, paginación y resaltado de sintaxis.\n\nEl alias `bat` (admite un parámetro para indicar el nombre del archivo) equivale a:\n\n```bash\n/usr/bin/batcat \u003cfilename\u003e\n```\n\n## xclip\n\n\u003cstrong\u003exclip\u003c/strong\u003e es una aplicación que nos permite introducir texto en el portapapeles y recuperar texto de él desde la línea de comandos. El texto recuperado puede haber sido introducido por cualquier otra aplicación.\n\nAsímismo, el texto que se introduce en el portapapeles a través de \u003cstrong\u003exclip\u003c/strong\u003e puede ser utilizado por cualquier otra aplicación.\n\nEjemplos de uso:\n```bash\necho \"Hola mundo\" | xclip -i\n```\n\nEl texto «Hola mundo» pasará a estar disponible para el resto de aplicaciones.\nDel mismo modo, para recuperar el texto del portapapeles y enviarlo a la salida estándar debe especificarse la opción `-o`:\n\n```bash\nxclip -o\nHola mundo\n```\n\nPodemos usar pipes para enviar al portapapeles lo que queramos, por ejemplo el contenido completo de un archivo:\n\n```bash\ncat archivo.txt | xclip\n```\n\nEn definitiva, es una herramienta muy útil que nos ahorra tiempo a la hora de trabajar con el portapapeles.\n\n## Atajos de teclado NeoVim\n\n\u003e [!NOTE]\n\u003e Estos atajos son para utilizar en el modo **NORMAL**\n\n| Atajo | Descripción |\n| --- | --- |\n| `F1` | Añade el header de 42 |\n| `F2` | Aplica auto-formato al código C en base a la Norma v3 de 42 |\n| `F3` | Ejecuta Norminette sobre el archivo actual y muestra los errores de norma |\n| `F4` | Muestra u oculta explorador de archivos NERDTree |\n| `F5` | Muestra u oculta el plugin Tagbar a la derecha |\n| `Ctrl` + `q` | Cierra la ventana actual sin guardar los cambios (:q!) |\n| `Ctrl` + `s` | Guarda los cambios en el documento actual (:w) |\n| `Ctrl` + `f` | Guarda los cambios en el documento actual y cierra Nvim (:wq) |\n| `Ctrl` + `h` | Cambia el foco a la división del lado izquierdo |\n| `Ctrl` + `l` | Cambia el foco a la división del lado derecho |\n| `Ctrl` + `j` | Cambia el foco a la división del lado inferior |\n| `Ctrl` + `k` | Cambia el foco a la división del lado superior |\n| `Ctrl` + `↑` | Cambia el tamaño de la división activa hacia arriba (horizontalmente) |\n| `Ctrl` + `↓` | Cambia el tamaño de la división activa hacia abajo (horizontalmente) |\n| `Ctrl` + `←` | Cambia el tamaño de la división activa hacia la izquierda (verticalmente) |\n| `Ctrl` + `→` | Cambia el tamaño de la división activa hacia la derecha (verticalmente) |\n\n# Terminal\n\n## Terminator (instalado en 42)\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://avatars.githubusercontent.com/u/63008829\" alt=\"Terminal Logo\" width=\"256\"/\u003e\n\u003c/div\u003e\n\n\u003cstrong\u003eTerminator\u003c/strong\u003e es una excelente opción si buscas un emulador de terminal que combine velocidad, personalización y funcionalidad avanzada, ideal para usuarios que desean aprovechar al máximo su entorno de trabajo en la terminal. Permite dividir la pantalla en varias terminales dentro de una misma ventana, facilitando la multitarea sin necesidad de usar múltiples ventanas. Terminator es un proyecto de código abierto con un desarrollo activo, lo que significa que recibe actualizaciones frecuentes y mejoras continuas.\n\n## Atajos de teclado (Terminator)\n\n| Atajo | Descripción |\n| --- | --- |\n| `Ctrl` + `Shift` + `Q` | Finaliza la ejecución de Terminator |\n| `Ctrl` + `Shift` + `W` | Cierra la terminal o la ventana activa |\n| `Ctrl` + `Shift` + `I` | Abre una nueva ventana (la cual es parte del proceso actual de Terminator)\n| `Ctrl` + `Shift` + `T` | Abre una nueva pestaña en el directorio actual |\n| `Ctrl` + `Shift` + `O` | Divide la terminal horizontalmente |\n| `Ctrl` + `Shift` + `E` | Divide la terminal horizontalmente |\n| `Ctrl` + `Shift` + `→` | Modifica el tamaño de la terminal verticalmente |\n| `Ctrl` + `Shift` + `←` | Modifica el tamaño de la terminal verticalmente |\n| `Ctrl` + `Shift` + `↑` | Modifica el tamaño de la terminal horizontalmente |\n| `Ctrl` + `Shift` + `↓` | Modifica el tamaño de la terminal horizontalmente |\n| `Ctrl` + `Shift` + `S` | Oculta/Muestra la barra de scroll de la terminal activa |\n| `Ctrl` + `Shift` + `F` | Muestra la barra de búsqueda |\n| `Ctrl` + `Shift` + `N` | Cambia a la siguiente terminal en la misma pestaña |\n| `Ctrl` + `Shift` + `P` | Cambia a la anterior terminal en la misma pestaña |\n| `Ctrl` + `Shift` + `X` | Cambia entre mostrar todas las terminales o maximizar la actual |\n| `Ctrl` + `Shift` + `Z` | Cambia entre mostrar todas las terminales o una visión ampliada de la actual (zoom) |\n| `Ctrl` + `PageDown` | Cambia a la siguiente terminal |\n| `Ctrl` + `PageUp` | Cambia a la terminal anterior |\n| `Alt` + `→` | Cambia a la terminal justo a la derecha de la actual |\n| `Alt` + `←` | Cambia a la terminal justo a la izquierda de la actual |\n| `Alt` + `↑` | Cambia a la terminal justo encima de la actual |\n| `Alt` + `↓` | Cambia a la terminal justo debajo de la actual |\n| `Ctrl` + `Shift` + `C` | Copia el texto seleccionado a la clipboard |\n| `Ctrl` + `Shift` + `V` | Pega el contenido de la clipboard a la terminal actual |\n| `Ctrl` + `Plus` (+) | Aumenta el tamaño de la fuente para la terminal actual (es posible que debas presionar `Shift` dependiendo del teclado) |\n| `Ctrl` + `Minus` (-) | Reduce el tamaño de la fuente para la terminal actual (es posible que debas presionar `Shift` dependiendo del teclado) |\n| `Ctrl` + `Zero` (0) | Reinicia el tamaño de la fuente para la terminal actual (a los valores de configuración por defecto) |\n| `F11` | Activa o desactiva la pantalla completa |\n| `Ctrl` + `Shift` + `R` | Reinicia el estado de la terminal |\n| `Ctrl` + `Shift` + `G` | Reinicia el estado de la terminal y limpia la pantalla |\n\n# 42env\nSi quieres instalar una versión más completa de este proyecto en tu máquina virtual, ve a [42env](https://github.com/WildZarek/42env)\n\n\u003e [!NOTE]\n\u003e Si consideras útil este proyecto, apóyalo dando \u003cstrong\u003e★ Star\u003c/strong\u003e en el repositorio. ¡Gracias!\n\n### LICENCIA\n\nThis work is published under the terms of **[42 Unlicense](https://github.com/gcamerli/42unlicense)**.\n\n# ¡Happy hacking \u0026 coding! 😎\n\n[Volver al índice](#índice)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwildzarek%2F42env-nr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwildzarek%2F42env-nr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwildzarek%2F42env-nr/lists"}