miércoles, octubre 31, 2012

vim:breve ejemplo de uso de opciones locales

Una particularidad que tiene vim es que permite el uso de opciones locales. Éstas solo afectan al buffer o a la ventana actual. A esta configuración podemos acceder a través de setlocal. No todas las opciones de configuración globales tienen reflejo en las configuraciones locales de un buffer o ventana, pero podemos ver que variables soporta si en la ventana de comandos introducimos setlocal all.

Puede combinarse estas opciones con los autocomandos que se ejecutan automáticamente cuando se producen ciertos eventos. Un ejemplo es, si queremos activar el list mode y modificar las configuraciones del tabulador cuando trabajamos con un buffer donde está cargado un fichero de Python el cual vamos a identificar por su extensión. De esta manera:

if has("gui_running")

  au BufRead *.py setlocal list | 

    \ setlocal ts=2  |

     \ setlocal expandtab 

  au BufWinEnter *.py setlocal list |

    \ setlocal ts=2 |

    \ setlocal expandtab

  au BufLeave *.py setlocal nolist

endif


Este código en nuestro ~/.vimrc hará que cuando se cargue un fichero python (identficado por la extensión) activemos el list mode en los buffer que lo usen, usaremos un tabstop de dos espacios y sustituiremos los tabs por espacios. Como detalle, esto sólo se carga si estamos usando el vim en modo gráfico.


Technorati Tags:

lunes, octubre 29, 2012

Ocultar las cuentas de usuarios en la ventana de login de MacOS X

Si tenemos MacOS X configurado para que nos pregunte usuario y password para iniciar una sesión, normalmente el sistema nos mostrará la ventana de login con las cuentas que podemos usar. Sin embargo, puede que nos interese no mostrar todas esas cuentas. En la nota técnica HT5017 comenta como hacerlo. Hay tres métodos:

  • Configurar el sistema para que no muestre los usuarios y en su lugar muestre los tradicionales campos login y password. Esto se hace desde las preferencias del sistema, en el panel de Usuarios y Grupos, seleccionando la opción Nombre y contraseña en Mostrar ventana de inicio como.
  • Añadiendo una los usuarios que no queremos mostrar al array HiddenUsersList situado en la plist /Library/Preferences/com.apple.loginwindow.plist encargada de controlar la ventana de login. Por ejemplo, si quiero que los usuarios snort y mldonkey no se vean en la ventana del sistema, puedo modificar la plist con ayuda de a orden defaults de la siguiente manera:

    defaults write /Library/Preferences/com.apple.loginwindow HiddenUsersList -array-add snort mldonkey

    Esta orden debe de ejecturse con un usuario que tenga permisos de administración (a través de sudo por ejemplo).

  • Otra opción es usar un user id menor que 500 y activar en com.apple.loginwindow la opción Hide500Users

    defaults write /Library/Preferences/com.apple.loginwindow Hide500Users -bool YES

    Para crear un usuario con un user id determinado es necesario usar la herramienta del sistema dscl encargada de manejar el servicio de directorios donde se almacenan los usuarios.

Technorati Tags:

domingo, octubre 28, 2012

Vim: Como controlar el aspecto del list mode

En esta entrada hacía una pequeña intruducción al list mode, el cual nos permite
representar ciertos aspecto del texto en vim (como el fin de línea o el tabulador) con los caracteres que deseemos. Sin embargo, no llegué a comentar todas las opciones que podemos configurar.

La variable de configuración que controla el list mode es listchars. Es una lista de cadenas cada una de las cuales representa una opción , y en función de la misma el o los caracteres que se utulizan

  • eol:c Esta opción va seguida de un carácter,c que cuando se activa el list mode, va a servir para indicar cual es el final de una línea.Por defecto, si se activa el list mode es '$', es decir, eol:$
  • tab:ab Esta opción va seguido de dos caracteres,ab. El primero a se utiliza una vez, para marcar donde se utiliza el tabulador, mientras que el segundo sirve para sustituir los espacios que ocuparía el tabulador. Así tab:>-, si se inserta un tabulador, se verá en pantalla como >--- (si el tabspace, variable ts, es 4).
  • trail:c Esta opción va seguida de un carácter, que nos indica los espacios de más que hay al final de una línea. Por ejemplo, si se quiere que los espacios de más estén representados por ·, pues la opción sería trail:·
  • extends:c Esta opción va seguida de un carácter,c. Sirve para que el vim nos indique aquellas líneas que al tener más caracteres que el ancho de de la ventana de edición de vim, "saltan" a la siguiente línea. Por ejemplo, si se quiere que esto esté indicado por el carácter ↩ , la opción de configuración sería extends:↩1
  • precedes:c Esta opción va seguida de un carácter, c. Cuando está activa marca en la primera columna de una línea si esta es continuación de la anterior. Por ejemplo, si se quiere usar ↪ para indicar que la línea es una continuación de la anterior, se activaría con precedes:↪.
  • conceal:c Esta opción va seguida de un carácter, c. Se muestra cuando se oculta una parte del texto, cuando el valor de la variable conceallevel es 1.
  • nbsp:c Esta opción va seguida de un carácter, c. Se utiliza para mostrar un espacio que no se puede utilizar para crear una línea nueva automáticament. Corresponde con el código HTML  .

Un detalle importante, para que las opciones extends y precedes se muestren, hay que desactivar la opción wrap que hace que las líneas largas sólo se muestren parcialmente, no que pasen de manera virtual a la siguiente línea.

Un ejemplo de configuración de listchar sería la siguiente: set listchars=eol:¶,tab:>-,trail·,extends:↩,precedes:↪

Puede verse en las siguientes dos capturas el modo list activado en el fichero fuente de esta entrada, con el list mode activado con las opciones del párrafo anterior:





Tener en cuenta las advertencias sobre los caracteres que se pueden usar en estas opciones (por ejemplo no se puede usar la coma o los dos puntos), y en caso de que
no se esté usando una codificación UTF-8, sólo pueden usarse caracteres que puedan ser imprimibles. Toda la información puede consultarse en vim con help listchars

Nota

  1. Para insertar A9; tenemos que estar usando una codificación que soporte unicode en el fichero que se esté editando, como utf-8 (set encoding=utf8) y los caracteres se
    introducen con CTRL-VuXXXX donde XXXX es el código hexadecimal que corresponde al carácter que se está insertando.

Technorati Tags:

jueves, octubre 18, 2012

Vim: List mode, tabs, espacios

Cuando estamos editando un fichero con vim, puede que nos interese ver donde están los caracteres de retorno de carro, qué caracteres son tabuladores o que caracteres son espacios, en especial si estamos usando lenguajes - como python - que usa la identación para señalar los bloques. Esta funcionalidad se activa con el llamado list mode, usando la orden set list. Por ejemplo, en este modo el final de la línea se muestra como $ y el tabulador como ^I. Para desactivarlo usamos set nolist. Los caracteres que muestra para indicar estos caracteres especiales puede controlar con la ayuda de la variable listchars. Por ejemplo si se quiere que la marca de fin de línea sea ¶, se puede usar la order set listchars=eol:¶. Para introducir el carácter de fin de párrafo se utiliza CTRL-V + el código ASCII, en este caso 182

Otra opción interesante a la hora de programar es que el vim nos muestre el número de línea. Esto puede activarse con set number, mostrándonos en el margen izquierdo el número correspondiente. Para desactivarlo se utiliza la orden set nonumber.

Según el estilo de programación que se desee, puede que queramos convertir los tabuladores que insertemos en espacios, controlando el número de espacios por los que se sustituyen. Esto se configura con la variable ts, set ts=n, donde n corresponde al número de espacios que queremos que sustituya al tabulador y con set expantab que hace que el vim sustituya automáticamente el tabulador por el número de espacios que le hayamos indicado en la variable ts cuando insertemos uno.

En un momento dado, podemos querer que se aplique toda la configuración de los tabuladores a un fichero completo. Para ello se puede usar la orden retab.


Technorati Tags: