En entornos tipo Unix los archivos de configuración se caracterizan por
comenzar con un punto. Por ejemplo ~/.zshrc
es un archivo de configuración
empleado por el interprete de ordenes zsh
cada vez que se inicia.
Aquí encuentras archivos de configuración para la pila de edición en
terminal de adJ: rcm
+tmux
+zsh
+neovim. El siguiente pantallazo
muestra como se ve (el juego de colores es configurable):
Nota que:
- En el panel superior izquierdo está editando un texto plano en español, se marcan los errores de ortografía y se está auto-completando la palabra configuración.
- En el panel superior derecho se ve el inicio de una sesión típica
que por omisión presenta un versículo aleatorio (si prefiere puede
deshabilitarlo en el archivo de configuración
.zshrc
) - En el panel inferior izquierdo se presenta instalación de la versión
más reciente de una gema en un directorio personal con la función
gemil
(que usa el directorio personal configurado en~/.bundle/config
) - En el panel inferior derecho se presenta la edición de un código fuente
en Ruby. Nota que los comentarios están en español y se resaltan
palabras que no estén en el diccionario (se añaden al diccionario
con las teclas
zg
).
Aunque puedes emplear estos archivos de configuración en diversos sistemas
operativos (por ejemplo en Linux o en Mac OSX), estas instrucciones se
centran en la distribución adJ del sistema operativo OpenBSD.
Para otras plataformas puede que te basten, o puede que prefieras referirte a los
dotfiles de Thoughtbot,
que fueron la base para estos archivos de configuración.
- Usar
zsh
como interprete de ordenes- Si hace falta instala el paquete con
doas pkg_add zsh
(aunque en adJ 6.7 ya se instala por omisión). - Si hace falta registra
zsh
como un intérprete de ordenes aceptable con:
doas su root -c "echo /usr/local/bin/zsh >> /etc/shells"
- Establecelo como tu interprete de ordenes de inicio de sesión con:
chsh -s /usr/local/bin/zsh
- Tras esto sal y vuelve a ingresar a tu interprete de ordenes para
empezar a usar
zsh
o mientras configuras ejecutalo desde otro interprete de ordenes conzsh
- Entre sus mejoras respecto a
pdksh
están: más popular, mejor auto-completación con TAB, por ejemplo en las opciones de las ordenes. Una vez configurado pruebals -
y presiona TAB para ver opciones dels
. zsh
tiene licencia estilo MIT a diferencia depdksh
, el estándar de OpenBSD, que es de dominio público.
- Si hace falta instala el paquete con
- Usar
rcm
para manejar archivos de configuración- Si hace falta instala con
doas pkg_add rcm
(aunque ya viene por omisión en adJ 6.7) - Crea el directorio
~/archconf-local
y allí deja copia de tus archivos de configuración, quitandoles el punto inicial y añadiendoles el posfijo.local
, por ejemplo:
- Si hace falta instala con
mkdir ~/archconf-local/
cp ~/.gitconfig ~/archconf-local/gitconfig.local
- En las secciones siguientes verás como usarlo en detalle.
- rcm usa licencia BSD de 3 clausulas
- Usar neovim como editor
- Si hace falta instala con
doas pkg_add neovim
(aunque ya viene por omisión en adJ 6.7) - Puedes iniciarlo con
nvim
o una vez instales los archivos de configuraicón conv
- Puede leer la configuración de
vim
, pero maneja mejor ratón y portapapeles y a futuro posibilitará edición estilo IDE. - neovim emplea licencia Apache que es menos restrictiva que la de
vim
.
- Si hace falta instala con
Copia estos archivos de configuración en el directorio archconf
de tu directorio personal
cp -rf /usr/local/share/adJ/archconf ~/
O si planeas apoyar el desarrollo de estos archivos de configuración y de
adJ puedes enlazarlos al directorio donde clonaste el repositorio adJ por
ejemplo $HOME/comp/adJ
:
ln -s ~/comp/adJ/arboldd/usr/local/share/adJ/archconf ~/
Instala estos archivos de configuración de ~/archconf
, así como
tus personalizaciones de ~/archconf-local
con:
env RCRC=$HOME/archconf/rcrc rcup
Después de la instalación inicial, puedes ejecutar rcup
sin establecer la
variable RCRC
(rcup
creará ~/.rcrc
con la ubicación para futuras
ejecuciones de rcup
).
Esta orden enlazará los archivos de configuración a tu directorio
personal, así como tus personalizaciones del directorio ~/archconf-local
.
Al establecer la variable de entorno le indicas a rcup
que al hacer
la copia use las opciones de configuración preestablecidas:
- Excluir los archivos
README.md
yLICENSE
, que son parte del repositorioarchconf
, pero que no son archivos de configuración. - Dar precedencia a las modificaciones personales que por omisión están en
~/archconf-local
- Por favor configura el archivo
rcrc
en caso de que quieras hacer modificaciones personales en un directorio distinto.
Con cada nueva versión de adJ se recomienda revisar las actualizaciones
a estos archconf ubicados en /usr/local/share/adJ/archconf
, copiarlos
nuevamente a tu directorio ~/archconf
y volver a ejecutar rcup
:
cp -rf /usr/local/share/adJ/archconf/* ~/archconf
rcup
De esta manera se copiaran los nuevos archivos y se instalarán nuevas
extensiones neovim.
Nota Debes ejecutar rcup
después de copiar para asegurar
que todos los archivos de las extensiones queden instalados adecuadamente.
Puedes ejecutar rcup
muchas veces, así que !actualiza pronto y actualiza
con frecuencia!
Tus personalizaciones deben ubicarse en ~/archconf-local
deben omitir el punto inicial y debe terminar en .local
, digamos:
~/archconf-local/alias.local
~/archconf-local/gitconfig.local
~/archconf-local/psqlrc.local
(proveemos.psqlrc.local
en blanco para prevenir quepsql
arroje un error, pero debes sobreescribir el archivo con tu propia copia)~/archconf-local/tmux.conf.local
~/archconf-local/vimrc.local
~/archconf-local/vimrc.bundles.local
~/archconf-local/zshrc.local
~/archconf-local/zsh/configs/*
Por ejemplo, tu ~/archconf-local/alias.local
tal vez se vea así:
# Productividad
alias porhacer='$EDITOR ~/.porhacer'
Tu ~/archconf-local/gitconfig.local
tal vez se vea así:
[alias]
l = log --pretty=colored
[pretty]
colored = format:%Cred%h%Creset %s %Cgreen(%cr) %C(bold blue)%an%Creset
[user]
name = Juan Valdez
email = juan@valdez.org
Tu ~/archconf-local/vimrc.local
tal vez se vea así:
" Esquema de colores
colorscheme github
highlight NonText guibg=#060606
highlight Folded guibg=#0A0A0A guifg=#9090D0
Si prefieres prevenir la instalación de una extensión predeterminado de vim
en .vimrc.bundles
, puedes ignorarlo sacándolo con UnPlug
en
tu ~/.vimrc.bundles.local
.
" No instalar vim-scripts/tComment
UnPlug 'tComment'
UnPlug
puede ser usado para instalar tu propia bifuración (fork) de una
extensión o para instalar una extensión compartida con opciones personalizadas
distintas.
" Sólo cargar vim-coffee-script si se ha creado un colchon Coffeescript
UnPlug 'vim-coffee-script'
Plug 'kchmck/vim-coffee-script', { 'for': 'coffee' }
" Usar una bifuración personal de vim-run-interactive
UnPlug 'vim-run-interactive'
Plug '$HOME/plugins/vim-run-interactive'
Para extender tus ganchos git
, crea archivos ejecutables en
~/archconf-local/git_template.local/hooks/*
.
Tu ~/archconf-local/zshrc.local
tal vez se vea así:
# cargar pyenv si está disponible
if command -v pyenv &>/dev/null ; then
eval "$(pyenv init -)"
fi
Tu ~/archconf-local/vimrc.bundles.local
tal vez se vea así:
Plug 'Lokaltog/vim-powerline'
Plug 'stephenmckinney/vim-solarized-powerline'
Las configuraciones adicionales para zsh pueden ir en el directorio
~/archconf-local/zsh/configs
. Este tiene dos subdirectorios especiales:
pre
para archivos que deben ser cargados primero y post
para archivos que deben cargarse al final.
Por ejemplo, ~/archconf-local/zsh/configs/pre/virtualenv
hace uso de varias
características del interprete de ordenes que tal vez se vean afectadas por
tu configuración, por lo tanto cárgalo primero:
# Carga la envolutar virtualenv
. /usr/local/bin/virtualenvwrapper.sh
Se pueden establecer teclas rápidas en ~/archconf-local/zsh/configs/keys
:
# Usar grep desde cualquier parte con ^G
bindkey -s '^G' ' | grep '
Algunos cambios, como chpwd
, deben ocurrir en
~/archconf-local/zsh/configs/post/chpwd
:
# Mostrar entradas de un directorio siempre que te cambies al mismo
function chpwd {
ls
}
Este directorio es útil para combinar archconf
de múltiples equipos de trabajo;
un equipo puede agregar el archivo virtualenv
, otro el archivo
keys
y un tercero el archivo chpwd
.
El archivo ~/archconf-local/zshrc.local
se carga después de
~/archconf-local/zsh/configs
.
De forma análoga al directorio de configuración para zsh
antes descrito,
vim
carga automáticamente los archivos del directorio
~/archconf-local/vim/plugin
.
Sin embargo, este no tiene el mismo soporte para los subdirectorios pre
ni post
que tiene nuestro zshrc
.
Este es un ~/archconf-local/vim/plugin/c.vim
de ejemplo. Se carga cada
vez que inicia vim, sin importar el nombre del archivo:
# Indenta programas en C de acuerdo al estilo BSD sytle(9)
set cinoptions=:0,t0,+4,(4
autocmd BufNewFile,BufRead *.[ch] setlocal sw=0 ts=8 noet
neovim empleará la configuración de vim
más otra que pueda añadir
en ~/archconf-local/config/nvim/
Configuración de tmux:
- Mejora la resolución del color.
- Suaviza el color de la barra de estatus a negro con fondo azul claro
Configuración de vim y neovim:
- fzf para búsqueda difusa de archivos/colchones/etiquetas.
- Rails.vim para una mejor navegación de
la estructura de archivos de Rails vía
gf
y:A
(alterno),:Rextract
parciales,:Rinvert
migraciones, etc. - Ejecuta muchos tipos de pruebas desde vim
- Establece
<leader>
a un sólo espacio. - Navega entre los últimos dos archivos con espacio-espacio
- Resaltado de sintaxis para Markdown, HTML, JavaScript, Ruby, Go, Elixir y más.
- Usa Ag en lugar de grep cuando esta disponible.
- Mapea
<leader>ct
para re-indexar Exuberant Ctags. - Usa vim-mkdir para crear automáticamente directorios no existentes antes de escribir el colchón.
- Usa vim-plug para administrar extensiones.
Configuración de git:
- Agrega el alias
create-branch
para crear ramas. - Agrega el alias
delete-branch
para borrar ramas. - Agrega el alias
merge-branch
para fusionar las ramas enmaster
. - Agrega el alias
up
para ejecutarfetch
yrebase
de la ramaorigin/master
en una rama de trabajo. Usagit up -i
para que sea modo interactivo. - Agrega el gancho
post-{checkout,commit,merge}
para re-indexar tus ctags. - Agrega atajos
pre-commit
yprepare-commit-msg
que delegan hacia tu configuración local. - Agrega el alias
trust-bin
para anexar elbin/
de un proyecto al$PATH
.
Configuración de Ruby:
- Agrega atajos a binarios (binstubs) confiables al
PATH
.
Alias para el interprete de ordenes:
b
esbundle
.gemil
simplificadoas gem install --install-dir ruta gema
, la ruta destino será indicada por el archivo de configuración~/.bundle/config
. Por ejemplo si~/.bundle/config
incluyeBUNDLE_PATH: "/var/www/bundler/"
, al ejecutaren realidad se ejecutarágemil puma
doas gem install --install-path /var/www/bundler/ruby/2.7 puma
g
sin argumentos esgit status
y con argumentos funciona comogit
.migrate
esrake db:migrate && rake db:rollback && rake db:migrate
.mcd
crea un directorio y va a él.replace foo bar **/*.rb
para buscar y reemplazar en una lista dada de archivos.tat
para adjuntar a una sesión de tmux llamada igual que el directorio actual.v
paranvim
.
Estos archconf se basaron en los dotfiles de thoughtbot de septiembre de 2020 y mantienen la misma licencia que puede ver en LICENSE.
Los dotfiles originales dan crédito a varios Contribuyentes, a Corey Haines, Gary Bernhardt y otros por compartir sus dotfiles y otros archivos de ordenes.
Las modificaciones para adJ son de Vladimir Támara, animado por las configuraciones de Daniel Hamilton-Smith. Esperamos próximamente la inclusión de https://github.com/dhasane/nvim