SlideShare ist ein Scribd-Unternehmen logo
1 von 58
Vim

 Javier Rojas


Preliminares

Funcionalidad
general

Programaci´n
          o

Automatizaci´n
- Vim Scripts
             o
                        Vim
Notas finales


                    Javier Rojas


                 30 de junio de 2010
Vim

 Javier Rojas                                            Agenda
Preliminares
                 1 Preliminares
Funcionalidad
general
                 2 Funcionalidad general
Programaci´n
          o
                     Operaciones b´sicas
                                  a
Automatizaci´n
             o
- Vim Scripts        Buffers, ventanas, pesta˜as
                                            n
Notas finales
                 3 Programaci´n
                             o
                     Navegaci´n
                              o
                     Ayudas para digitado
                     Control de versiones
                     Soporte espec´ıfico para lenguajes
                 4 Automatizaci´n - Vim Scripts
                               o
                     Ayudas b´sicas
                               a
                     Macros
                     Scripting
                 5 Notas finales
Vim

 Javier Rojas                          Vim
Preliminares

Funcionalidad
general

Programaci´n
          o      Historia
Automatizaci´n
             o
- Vim Scripts        Clon de vi
Notas finales
                     Bram Molenaar
                     Charityware

                 Caracter´
                         ısticas
                     Multiplataforma
                     Extensible
                     Modal
Vim

 Javier Rojas                          Vim
Preliminares

Funcionalidad
general

Programaci´n
          o      Historia
Automatizaci´n
             o
- Vim Scripts        Clon de vi
Notas finales
                     Bram Molenaar
                     Charityware

                 Caracter´
                         ısticas
                     Multiplataforma
                     Extensible
                     Modal
Vim

 Javier Rojas                         Respecto a esta charla
Preliminares

Funcionalidad
general

Programaci´n
          o

Automatizaci´n
             o
- Vim Scripts

Notas finales
                 El qu´, no el c´mo
                      e         o
                 (Necesariamente) mi           Las posibilidades de vim
                 experiencia personal          No Ruby, no PHP, no
                 (python, C/C++, SQL,          .NET
                 LaTeX, HTML, Git)             En el sentido matem´tico
                                                                  a
                 La base del uso de vim
Vim

 Javier Rojas                         Respecto a esta charla
Preliminares

Funcionalidad
general

Programaci´n
          o

Automatizaci´n
             o
- Vim Scripts

Notas finales
                 El qu´, no el c´mo
                      e         o
                 (Necesariamente) mi           Las posibilidades de vim
                 experiencia personal          No Ruby, no PHP, no
                 (python, C/C++, SQL,          .NET
                 LaTeX, HTML, Git)             En el sentido matem´tico
                                                                  a
                 La base del uso de vim
Vim

 Javier Rojas                         Respecto a esta charla
Preliminares

Funcionalidad
general

Programaci´n
          o

Automatizaci´n
             o
- Vim Scripts

Notas finales
                 El qu´, no el c´mo
                      e         o
                 (Necesariamente) mi           Las posibilidades de vim
                 experiencia personal          No Ruby, no PHP, no
                 (python, C/C++, SQL,          .NET
                 LaTeX, HTML, Git)             En el sentido matem´tico
                                                                  a
                 La base del uso de vim
Vim

 Javier Rojas                                            Agenda
Preliminares
                 1 Preliminares
Funcionalidad
general
                 2 Funcionalidad general
Programaci´n
          o
                     Operaciones b´sicas
                                  a
Automatizaci´n
             o
- Vim Scripts        Buffers, ventanas, pesta˜as
                                            n
Notas finales
                 3 Programaci´n
                             o
                     Navegaci´n
                              o
                     Ayudas para digitado
                     Control de versiones
                     Soporte espec´ıfico para lenguajes
                 4 Automatizaci´n - Vim Scripts
                               o
                     Ayudas b´sicas
                               a
                     Macros
                     Scripting
                 5 Notas finales
Vim

 Javier Rojas                                            Agenda
Preliminares
                 1 Preliminares
Funcionalidad
general
                 2 Funcionalidad general
Operaciones
b´sicas
 a                   Operaciones b´sicas
                                  a
Buffers,
ventanas,            Buffers, ventanas, pesta˜as
                                            n
pesta˜as
     n

Programaci´n
          o      3 Programaci´n
                             o
Automatizaci´n
             o       Navegaci´n
                              o
- Vim Scripts
                     Ayudas para digitado
Notas finales
                     Control de versiones
                     Soporte espec´ıfico para lenguajes
                 4 Automatizaci´n - Vim Scripts
                               o
                     Ayudas b´sicas
                               a
                     Macros
                     Scripting
                 5 Notas finales
Vim

 Javier Rojas                                           Modalidad
Preliminares

Funcionalidad
general
Operaciones
b´sicas
 a                  Modo normal: comandos, operaciones sobre texto,
Buffers,
ventanas,           movimiento
pesta˜as
     n
                    Modo de inserci´n: escribir texto
                                   o
Programaci´n
          o

Automatizaci´n
             o      Modo de comandos: comandos Ex
- Vim Scripts

Notas finales
                 Porqu´?
                      e
                    Todo el teclado permite ingresar comandos
                    Menos Escape-Meta-Alt-Control-Shift
                    Razones hist´ricas - teclados no est´ndar
                                o                       a
Vim

 Javier Rojas                                           Modalidad
Preliminares

Funcionalidad
general
Operaciones
b´sicas
 a                  Modo normal: comandos, operaciones sobre texto,
Buffers,
ventanas,           movimiento
pesta˜as
     n
                    Modo de inserci´n: escribir texto
                                   o
Programaci´n
          o

Automatizaci´n
             o      Modo de comandos: comandos Ex
- Vim Scripts

Notas finales
                 Porqu´?
                      e
                    Todo el teclado permite ingresar comandos
                    Menos Escape-Meta-Alt-Control-Shift
                    Razones hist´ricas - teclados no est´ndar
                                o                       a
Vim

 Javier Rojas                       Movimiento
Preliminares

Funcionalidad
general
Operaciones
b´sicas
 a
Buffers,
ventanas,
pesta˜as
     n

Programaci´n
          o
                 h, j, k, l
Automatizaci´n
             o   w, W, b, B
- Vim Scripts

Notas finales
                 t, T, f, F, ;, ,
                 <n><movimiento>
Vim

 Javier Rojas         insertar, modificar, eliminar texto
Preliminares

Funcionalidad
general
Operaciones
b´sicas
 a
Buffers,
ventanas,
pesta˜as
     n

Programaci´n
          o

Automatizaci´n
             o
                 i, a, I, A, o, O
- Vim Scripts
                 d, c, D, C, dd, cc, x
Notas finales
Vim

 Javier Rojas                                cortar, copiar, pegar
Preliminares

Funcionalidad
general
Operaciones
b´sicas
 a
Buffers,
ventanas,        Poner texto en un registro (portapapeles), pegarlo en alg´n
                                                                          u
pesta˜as
     n
                 sitio
Programaci´n
          o

Automatizaci´n
             o       Cortar: d, dd
- Vim Scripts

Notas finales
                     Copiar: y, yy
                     Pegar: p
                     Registros: "
Vim

 Javier Rojas                                           Operadores
Preliminares

Funcionalidad
general
Operaciones
b´sicas
 a
Buffers,
ventanas,
pesta˜as
     n           Transforman el texto indicado de alguna forma
Programaci´n
          o          Cambiar, borrar, copiar: c, d, y
Automatizaci´n
             o
- Vim Scripts        May´sculas, min´sculas: g~ , gu, gU
                        u           u
Notas finales
                     Indentado, formateo: >, <, gq
                     Otros: !, g?, =
Vim

 Javier Rojas                                         Modo visual
Preliminares

Funcionalidad
general
Operaciones
b´sicas
 a
Buffers,
ventanas,
pesta˜as
     n           Seleccionar texto, extender selecci´n mediante movimientos,
                                                    o
Programaci´n
          o      operar sobre el texto
Automatizaci´n
             o
- Vim Scripts        v, V, CTRL-V
Notas finales         Operador
                     gv, o
Vim

 Javier Rojas                                          Conceptos
Preliminares

Funcionalidad
general
Operaciones
b´sicas
 a
Buffers,
ventanas,
pesta˜as
     n

Programaci´n
          o      Archivos en edici´n: buffers
                                  o
Automatizaci´n
             o
- Vim Scripts    Ventanas: visualizaci´n de un buffer
                                      o
Notas finales     Pesta˜as: grupos de ventanas
                      n
Vim

 Javier Rojas                                          Conceptos
Preliminares

Funcionalidad
general
Operaciones
b´sicas
 a
Buffers,
ventanas,
pesta˜as
     n

Programaci´n
          o      Archivos en edici´n: buffers
                                  o
Automatizaci´n
             o
- Vim Scripts    Ventanas: visualizaci´n de un buffer
                                      o
Notas finales     Pesta˜as: grupos de ventanas
                      n
Vim

 Javier Rojas                                          Conceptos
Preliminares

Funcionalidad
general
Operaciones
b´sicas
 a
Buffers,
ventanas,
pesta˜as
     n

Programaci´n
          o      Archivos en edici´n: buffers
                                  o
Automatizaci´n
             o
- Vim Scripts    Ventanas: visualizaci´n de un buffer
                                      o
Notas finales     Pesta˜as: grupos de ventanas
                      n
Vim

 Javier Rojas                                         Buffers
Preliminares

Funcionalidad
general
Operaciones
b´sicas
 a
Buffers,
ventanas,
pesta˜as
     n

Programaci´n
          o

Automatizaci´n
             o
                 Representaci´n de un archivo en memoria
                             o
- Vim Scripts
                 Un archivo = un buffer
Notas finales
Vim

 Javier Rojas                                           Ventanas
Preliminares

Funcionalidad
general
Operaciones
b´sicas
 a
Buffers,
ventanas,
pesta˜as
     n

Programaci´n
          o      Dividir ventana, vertical u horizontalmente
Automatizaci´n
             o
- Vim Scripts    Cualquier buffer en cualquier ventana
Notas finales
                 Redimensionar
Vim

 Javier Rojas                                          Pesta˜as
                                                            n
Preliminares

Funcionalidad
general
Operaciones
b´sicas
 a
Buffers,
ventanas,
pesta˜as
     n
                     Grupos de ventanas relacionadas
Programaci´n
          o

Automatizaci´n
             o
                     No use una pesta˜a por buffer
                                     n
- Vim Scripts

Notas finales     Uso de pesta˜as
                             n
                 Grupo de vistas relacionadas
Vim

 Javier Rojas                                          Pesta˜as
                                                            n
Preliminares

Funcionalidad
general
Operaciones
b´sicas
 a
Buffers,
ventanas,
pesta˜as
     n
                     Grupos de ventanas relacionadas
Programaci´n
          o

Automatizaci´n
             o
                     No use una pesta˜a por buffer
                                     n
- Vim Scripts

Notas finales     Uso de pesta˜as
                             n
                 Grupo de vistas relacionadas
Vim

 Javier Rojas                                            Agenda
Preliminares
                 1 Preliminares
Funcionalidad
general
                 2 Funcionalidad general
Programaci´n
          o
Navegaci´n
        o
                     Operaciones b´sicas
                                  a
Ayudas para          Buffers, ventanas, pesta˜as
                                            n
digitado
Control de       3 Programaci´n
                             o
versiones
Soporte              Navegaci´n
                              o
espec´
     ıfico
para                 Ayudas para digitado
lenguajes
                     Control de versiones
Automatizaci´n
             o
- Vim Scripts        Soporte espec´ıfico para lenguajes
Notas finales
                 4 Automatizaci´n - Vim Scripts
                               o
                     Ayudas b´sicas
                               a
                     Macros
                     Scripting
                 5 Notas finales
Vim

 Javier Rojas                  Navegaci´n de archivos de texto
                                       o
Preliminares

Funcionalidad
general

Programaci´n
          o
Navegaci´n
        o
Ayudas para
digitado
Control de
                 A trav´s de
                       e
versiones
Soporte              Partes de un archivo
espec´
     ıfico
para
lenguajes
                     Archivos
Automatizaci´n
             o       Elementos de un programa/proyecto
- Vim Scripts

Notas finales
Vim

 Javier Rojas                    Navegaci´n en un archivo
                                         o
Preliminares

Funcionalidad
general

Programaci´n
          o
Navegaci´n
        o
Ayudas para
digitado
Control de
versiones        Folding
Soporte
espec´
     ıfico        scripts: TagList, BufGrep
para
lenguajes        Marcas (bookmarks)
Automatizaci´n
             o
- Vim Scripts

Notas finales
Vim

 Javier Rojas                Navegaci´n a trav´s de archivos
                                     o        e
Preliminares

Funcionalidad
general

Programaci´n
          o
Navegaci´n
        o        por nombre: FuzzyFinder
Ayudas para
digitado
Control de           B´squeda difusa de archivos, por nombre
                      u
versiones
Soporte              M´ltiples especificadores
                      u
espec´
     ıfico
para                 Recursivo
lenguajes

Automatizaci´n
             o
- Vim Scripts    por contenido: grep - vimgrep
Notas finales
                 B´squeda de un patr´n de texto (regexp) dentro de un grupo
                  u                 o
                 de archivos
Vim

 Javier Rojas                Navegaci´n a trav´s de archivos
                                     o        e
Preliminares

Funcionalidad
general

Programaci´n
          o
Navegaci´n
        o        por nombre: FuzzyFinder
Ayudas para
digitado
Control de           B´squeda difusa de archivos, por nombre
                      u
versiones
Soporte              M´ltiples especificadores
                      u
espec´
     ıfico
para                 Recursivo
lenguajes

Automatizaci´n
             o
- Vim Scripts    por contenido: grep - vimgrep
Notas finales
                 B´squeda de un patr´n de texto (regexp) dentro de un grupo
                  u                 o
                 de archivos
Vim

 Javier Rojas             Navegaci´n a trav´s de programas
                                  o        e
Preliminares                                    - funciones
Funcionalidad
general

Programaci´n
          o
Navegaci´n
        o
Ayudas para
digitado
Control de
versiones        Tags
Soporte
espec´
     ıfico
                 Construye una base de datos de las funciones en un grupo de
para
lenguajes
                 archivos
Automatizaci´n
             o       Saltar a definici´n
                                     o
- Vim Scripts

Notas finales         Ver par´metros de una funci´n
                            a                   o
Vim

 Javier Rojas                                    Ventana quickfix
Preliminares

Funcionalidad
general

Programaci´n
          o
Navegaci´n
        o
Ayudas para
digitado         Lista navegable de posiciones en uno o m´s archivos
                                                         a
Control de
versiones            Errores de compilaci´n
                                         o
Soporte
espec´
     ıfico            Resultados de b´squedas
                                    u
para
lenguajes            Definiciones de funciones
Automatizaci´n
             o
- Vim Scripts        Cualquier lista definida por el usuario
Notas finales
Vim

 Javier Rojas                               Auto-completado
Preliminares

Funcionalidad
general

Programaci´n
          o
Navegaci´n
        o
Ayudas para
digitado
                 Palabras en el archivo actual
Control de
versiones
                 Nombres de archivo
Soporte
espec´
para
     ıfico        Tags
lenguajes
                 Listados generados mediante una funci´n
                                                      o
Automatizaci´n
             o
- Vim Scripts    (omnicompletion)
Notas finales
Vim

 Javier Rojas        M´s movimientos/objetos de texto
                      a
Preliminares

Funcionalidad
general

Programaci´n
          o
Navegaci´n
        o
Ayudas para
digitado
Control de
versiones        Bloques: (), [], {}, ’’,
Soporte
espec´
     ıfico        %
para
lenguajes        surround.vim
Automatizaci´n
             o
- Vim Scripts

Notas finales
Vim

 Javier Rojas                                         SnipMate
Preliminares

Funcionalidad
general

Programaci´n
          o
Navegaci´n
        o
Ayudas para
digitado
Control de
versiones        Plantillas parametrizables para tipos de archivo espec´
                                                                       ıficos
Soporte
espec´
     ıfico        Similar a snippets de TextMate
para
lenguajes        Es posible definir nuevos snippets f´cilmente
                                                    a
Automatizaci´n
             o
- Vim Scripts

Notas finales
Vim

 Javier Rojas                                      vcscommand
Preliminares

Funcionalidad
general

Programaci´n
          o
Navegaci´n
        o
Ayudas para
digitado
Control de
versiones        Commit
Soporte
espec´
     ıfico        Ver diffs respecto a una revisi´n particular
                                               o
para
lenguajes        Subversion, Git, Mercurial, Bzr, CVS. . .
Automatizaci´n
             o
- Vim Scripts

Notas finales
Vim

 Javier Rojas                      Control de versiones - vim
Preliminares

Funcionalidad
general

Programaci´n
          o
Navegaci´n
        o
Ayudas para
digitado
Control de
versiones        Ver diferencias entre 2-4 archivos
Soporte
espec´
     ıfico        Aplicar parches
para
lenguajes        Escoger y aplicar cambios
Automatizaci´n
             o
- Vim Scripts

Notas finales
Vim

 Javier Rojas                                       Hacks para Git
Preliminares

Funcionalidad
general

Programaci´n
          o
Navegaci´n
        o
Ayudas para
                 hist-brow
digitado
Control de           Diferencias entre la versi´n actual de un archivo y sus
                                               o
versiones
Soporte
                     versiones previas
espec´
     ıfico
para                 Avanzar hacia atr´s o hacia adelante en el historial del
                                      a
lenguajes
                     archivo
Automatizaci´n
             o
- Vim Scripts

Notas finales     diffbr
                 Diferencias entre un archivo en distintas ramas de desarrollo
Vim

 Javier Rojas                                       Hacks para Git
Preliminares

Funcionalidad
general

Programaci´n
          o
Navegaci´n
        o
Ayudas para
                 hist-brow
digitado
Control de           Diferencias entre la versi´n actual de un archivo y sus
                                               o
versiones
Soporte
                     versiones previas
espec´
     ıfico
para                 Avanzar hacia atr´s o hacia adelante en el historial del
                                      a
lenguajes
                     archivo
Automatizaci´n
             o
- Vim Scripts

Notas finales     diffbr
                 Diferencias entre un archivo en distintas ramas de desarrollo
Vim

 Javier Rojas           Soporte espec´
                                     ıfico para lenguajes
Preliminares

Funcionalidad
general

Programaci´n
          o
Navegaci´n
        o
Ayudas para
digitado
                 C/C++ Saltar a definici´n, Ver valor de constante,
                                       o
Control de
versiones              cscope, compilaci´n, completado
                                         o
Soporte
espec´
     ıfico           Java Eclim
para
lenguajes        Python Completado
Automatizaci´n
             o
- Vim Scripts       SQL Omni completion de nombres de tablas y campos
Notas finales
Vim

 Javier Rojas                                     HTML/XML
Preliminares

Funcionalidad
general

Programaci´n
          o
Navegaci´n
        o
Ayudas para
digitado
Control de       Tag: objeto de texto
versiones
Soporte          M´ltiples plugins para: completar tags, atributos, folding,
                   u
espec´
     ıfico
para             renombrar tags, copiar, pegar
lenguajes

Automatizaci´n
             o
                 ZenCoding
- Vim Scripts

Notas finales
Vim

 Javier Rojas                                            Agenda
Preliminares
                 1 Preliminares
Funcionalidad
general
                 2 Funcionalidad general
Programaci´n
          o
                     Operaciones b´sicas
                                  a
Automatizaci´n
             o
- Vim Scripts        Buffers, ventanas, pesta˜as
                                            n
Ayudas
b´sicas
 a               3 Programaci´n
                             o
Macros
Scripting
                     Navegaci´n
                              o
Notas finales
                     Ayudas para digitado
                     Control de versiones
                     Soporte espec´ıfico para lenguajes
                 4 Automatizaci´n - Vim Scripts
                               o
                     Ayudas b´sicas
                               a
                     Macros
                     Scripting
                 5 Notas finales
Vim

 Javier Rojas                                         :abbr - :map
Preliminares

Funcionalidad
general

Programaci´n
          o

Automatizaci´n
             o
                 :abbr
- Vim Scripts
Ayudas
                     Cambiar un texto por otro, en modo inserci´n
                                                               o
b´sicas
 a
Macros
                     Digitado r´pido
                               a
Scripting

Notas finales
                 :map
                     Shortcuts, para cualquier modo
                     Convierte un shortcut/hotkey en una secuencia de letras
                     Cambio de modos
Vim

 Javier Rojas                                         :abbr - :map
Preliminares

Funcionalidad
general

Programaci´n
          o

Automatizaci´n
             o
                 :abbr
- Vim Scripts
Ayudas
                     Cambiar un texto por otro, en modo inserci´n
                                                               o
b´sicas
 a
Macros
                     Digitado r´pido
                               a
Scripting

Notas finales
                 :map
                     Shortcuts, para cualquier modo
                     Convierte un shortcut/hotkey en una secuencia de letras
                     Cambio de modos
Vim

 Javier Rojas                            Buscar y reemplazar
Preliminares

Funcionalidad
general

Programaci´n
          o

Automatizaci´n
             o
- Vim Scripts    Uso b´sico
                      a
Ayudas
b´sicas
 a
                 s/<patron>/<texto reemplazo>/
Macros
Scripting
                 Uso avanzado
Notas finales
                     Backreferences:
                     s/(<patron1>)...(<patron2>)/12
                     Expresiones: s/<patron>/=<expresion>
Vim

 Javier Rojas                            Buscar y reemplazar
Preliminares

Funcionalidad
general

Programaci´n
          o

Automatizaci´n
             o
- Vim Scripts    Uso b´sico
                      a
Ayudas
b´sicas
 a
                 s/<patron>/<texto reemplazo>/
Macros
Scripting
                 Uso avanzado
Notas finales
                     Backreferences:
                     s/(<patron1>)...(<patron2>)/12
                     Expresiones: s/<patron>/=<expresion>
Vim

 Javier Rojas                                              Macros
Preliminares

Funcionalidad
general          Secuencia de comandos, construida a partir de los comandos
Programaci´n
          o      ingresados por el usuario
Automatizaci´n
             o
- Vim Scripts    Uso b´sico
                      a
Ayudas
b´sicas
 a                   Grabar la macro: q<nombre-macro><comandos>q
Macros
Scripting            Ejecutar la macro: @<nombre-macro>, @@,
Notas finales         <numero>@<nombre-macro>

                 Sugerencias
                     Terminar la macro pensando en la pr´xima ejecuci´n
                                                        o            o
                     Moverse en el archivo usando marcas
                     Macros recursivas
Vim

 Javier Rojas               vimscript - Acerca del lenguaje
Preliminares

Funcionalidad
general

Programaci´n
          o

Automatizaci´n
             o
- Vim Scripts
                 Enteros, flotantes, cadenas de texto
Ayudas
b´sicas
 a
                 Arrays, Diccionarios (Hash tables, maps).
Macros
Scripting        if, for, while, try
Notas finales
                 Din´mico, recolecci´n de basura
                    a               o
                 Procedimental, funcional, OO
                 Mono Hilo
Vim

 Javier Rojas             Qu´ pueden hacer las funciones
                            e
Preliminares

Funcionalidad
general

Programaci´n
          o

Automatizaci´n
             o
- Vim Scripts    C´mputo
                  o
Ayudas
b´sicas
 a               Modificar texto de buffers abiertos
Macros
Scripting        Abrir buffers, ventanas, pesta˜as
                                              n
Notas finales
                 Interacci´n con el sistema de archivos
                          o
                 Invocar programas externos, enviar/recibir texto
                 Llamar cualquier comando (:comando)
Vim

 Javier Rojas                                               Variables
Preliminares

Funcionalidad
general

Programaci´n
          o
                 Las variables est´n asociadas a objetos, y existen mientras el
                                  a
Automatizaci´n
             o
                 objeto exista
- Vim Scripts
Ayudas
                     b: Buffer
b´sicas
 a
Macros
                     w: Ventana (Window)
Scripting            t: Pesta˜a (Tab)
                             n
Notas finales
                     t: Local a la funci´n
                                        o
                     s: Local respecto al script
                     a: Argumento de la funci´n (s´lo lectura)
                                             o    o
                     v: Definida por Vim
                     g: Global
Vim

 Javier Rojas                                 Variables
Preliminares

Funcionalidad
general

Programaci´n
          o

Automatizaci´n
             o
- Vim Scripts
Ayudas
b´sicas
 a
Macros
                 Variables de entorno: $VAR
Scripting        Opciones Vim: &VAR
Notas finales
                 Registros: @r
Vim

 Javier Rojas                                 Tips de desarrollo
Preliminares
                 Documentaci´n b´sica
                            o a
Funcionalidad
general
                     :help script
Programaci´n
          o

Automatizaci´n
             o
                     :help function-list
- Vim Scripts
Ayudas
                     :help holy-grail
b´sicas
 a
Macros
Scripting        Depurado b´sico
                           a
Notas finales     :echo MiFuncion(), :call MiFuncion()

                 Ejecutar comandos
                 Construya una cadena con el comando que desea, y ejec´tela
                                                                      u

                               let miarchivo = ’cosa.txt’
                               let cmd = ’:edit ’ . miarchivo
                               execute cmd
Vim

 Javier Rojas                                            Agenda
Preliminares
                 1 Preliminares
Funcionalidad
general
                 2 Funcionalidad general
Programaci´n
          o
                     Operaciones b´sicas
                                  a
Automatizaci´n
             o
- Vim Scripts        Buffers, ventanas, pesta˜as
                                            n
Notas finales
                 3 Programaci´n
                             o
                     Navegaci´n
                              o
                     Ayudas para digitado
                     Control de versiones
                     Soporte espec´ıfico para lenguajes
                 4 Automatizaci´n - Vim Scripts
                               o
                     Ayudas b´sicas
                               a
                     Macros
                     Scripting
                 5 Notas finales
Vim

 Javier Rojas                             Porqu´ no un IDE?
                                               e
Preliminares

Funcionalidad
general

Programaci´n
          o

Automatizaci´n
             o
- Vim Scripts
                 Exceso de formalismos
Notas finales
                 Velocidad (or lack of thereof )
                 Componentes de edici´n apestan
                                     o
                 Inconsistencia de interfaz
                 Portabilidad de configuraci´n
                                           o
                 Ergonom´
                        ıa
Vim

 Javier Rojas                                       Ergonom´
                                                           ıa
Preliminares

Funcionalidad
general

Programaci´n
          o

Automatizaci´n
             o
- Vim Scripts

Notas finales
                 Modalidad. Movimiento (laptops.)
                 Ortogonalidad - operadores, movimiento, objetos de texto
                 Automatizaci´n
                             o
Vim

 Javier Rojas                                  Interfaces similares
Preliminares

Funcionalidad
general

Programaci´n
          o

Automatizaci´n
             o
- Vim Scripts
                 Navegadores Vimperator, elinks-keys, Vimium, Konqueror
Notas finales            PIM Mutt, abook, wyrd
                 WManagers Ion3, awesome, xmonad, . . .
                 FileManagers lfm, vifm, vim
                       audio cmus, xmms2, MPD/MPC
                  Util. UNIX less, sed, screen, bash (readline)
                       IDEs* Eclipse, Visual Studio
Vim

 Javier Rojas                 Problemas/Defectos/Quejas
Preliminares

Funcionalidad
general

Programaci´n
          o

Automatizaci´n
             o
- Vim Scripts

Notas finales
                 Config. inicial es p´sima
                                    e
                 Interacci´n con procesos externos
                          o
                     Depuradores
                     Shells
                     IDEs, refactoring
                 Proceso de desarrollo lento
Vim

 Javier Rojas                           Soporte - Comunidad
Preliminares

Funcionalidad
general

Programaci´n
          o
                 Ayuda interna
Automatizaci´n
             o
- Vim Scripts    :help
Notas finales

                 Lista de correo
                 vim_use@googlegroups.com

                 Canal IRC
                 #vim, en Freenode (irc.freenode.net)

                 Wiki
                 http://vim.wikia.com
Vim

 Javier Rojas                                         Consejos
Preliminares

Funcionalidad
general

Programaci´n
          o

Automatizaci´n
             o
- Vim Scripts

Notas finales
                 vimtutor
                 problema → soluci´n → crear h´bito
                                  o           a
                 revisar el wiki
                 leer; no tema preguntar
Vim

 Javier Rojas                                        Moralejas
Preliminares

Funcionalidad
general

Programaci´n
          o

Automatizaci´n
             o
- Vim Scripts    F´cil de usar = f´cil de aprender
                  a               a
Notas finales
                 Objetos de texto. Operadores ortogonales sobre los objetos
                 de texto
                 La cantidad de caracter´
                                        ısticas no es importante
                 Lo importante es extensibilidad (para copiar/implementar
                 buenas ideas)
                 Vim, Emacs, TextMate

Weitere ähnliche Inhalte

Andere mochten auch

Presentacin Openoffice Impress 1201176413749091 3
Presentacin Openoffice Impress 1201176413749091 3Presentacin Openoffice Impress 1201176413749091 3
Presentacin Openoffice Impress 1201176413749091 3Hugo Starkiller
 
Ruidos En La Comunicación
Ruidos En La ComunicaciónRuidos En La Comunicación
Ruidos En La ComunicaciónDaniel Lancero
 
Perseverancia V M R E 23 02 07
Perseverancia V M R E 23 02 07Perseverancia V M R E 23 02 07
Perseverancia V M R E 23 02 07IRMA CHAVEZ
 
Maestros de Apoyo Psicológico
Maestros de Apoyo PsicológicoMaestros de Apoyo Psicológico
Maestros de Apoyo PsicológicoRed Incusiva
 
Modulo 1 las hojas rev
Modulo 1 las hojas revModulo 1 las hojas rev
Modulo 1 las hojas revJuan Irizarry
 
Jaume Trilla. Mayemi...
Jaume Trilla. Mayemi...Jaume Trilla. Mayemi...
Jaume Trilla. Mayemi...guest58bba1
 
Dinamica Vida[1]
Dinamica Vida[1]Dinamica Vida[1]
Dinamica Vida[1]IRMA CHAVEZ
 
ImáGenes Trabajadas Por Patricia Henriquez Gil
ImáGenes Trabajadas Por Patricia Henriquez GilImáGenes Trabajadas Por Patricia Henriquez Gil
ImáGenes Trabajadas Por Patricia Henriquez Gilpatriciahenriquez4st
 
Presentacion valentina campus party 2
Presentacion valentina campus party 2Presentacion valentina campus party 2
Presentacion valentina campus party 2campus party
 
Experiencia De Aprendizaje 3
Experiencia De Aprendizaje 3Experiencia De Aprendizaje 3
Experiencia De Aprendizaje 3jorge_chamuco
 
Trucos Y Efectos[1]
Trucos Y Efectos[1]Trucos Y Efectos[1]
Trucos Y Efectos[1]kayrambal
 
PERIODO DE ADAPTACIÓN
PERIODO DE ADAPTACIÓNPERIODO DE ADAPTACIÓN
PERIODO DE ADAPTACIÓNnoe85
 

Andere mochten auch (20)

Presentacin Openoffice Impress 1201176413749091 3
Presentacin Openoffice Impress 1201176413749091 3Presentacin Openoffice Impress 1201176413749091 3
Presentacin Openoffice Impress 1201176413749091 3
 
Ruidos En La Comunicación
Ruidos En La ComunicaciónRuidos En La Comunicación
Ruidos En La Comunicación
 
Perseverancia V M R E 23 02 07
Perseverancia V M R E 23 02 07Perseverancia V M R E 23 02 07
Perseverancia V M R E 23 02 07
 
Maestros de Apoyo Psicológico
Maestros de Apoyo PsicológicoMaestros de Apoyo Psicológico
Maestros de Apoyo Psicológico
 
Eres Feliz
Eres FelizEres Feliz
Eres Feliz
 
Modulo 1 las hojas rev
Modulo 1 las hojas revModulo 1 las hojas rev
Modulo 1 las hojas rev
 
Musiquem Poemes
Musiquem PoemesMusiquem Poemes
Musiquem Poemes
 
Les 4 Semicorxeres
Les 4 SemicorxeresLes 4 Semicorxeres
Les 4 Semicorxeres
 
Investiga.. martha karina
Investiga.. martha karinaInvestiga.. martha karina
Investiga.. martha karina
 
Jaume Trilla. Mayemi...
Jaume Trilla. Mayemi...Jaume Trilla. Mayemi...
Jaume Trilla. Mayemi...
 
Ungranhombre
UngranhombreUngranhombre
Ungranhombre
 
Dinamica Vida[1]
Dinamica Vida[1]Dinamica Vida[1]
Dinamica Vida[1]
 
Web2.0
Web2.0Web2.0
Web2.0
 
Como Crear Cuenta En Flickr
Como Crear Cuenta En FlickrComo Crear Cuenta En Flickr
Como Crear Cuenta En Flickr
 
ImáGenes Trabajadas Por Patricia Henriquez Gil
ImáGenes Trabajadas Por Patricia Henriquez GilImáGenes Trabajadas Por Patricia Henriquez Gil
ImáGenes Trabajadas Por Patricia Henriquez Gil
 
Presentacion valentina campus party 2
Presentacion valentina campus party 2Presentacion valentina campus party 2
Presentacion valentina campus party 2
 
Experiencia De Aprendizaje 3
Experiencia De Aprendizaje 3Experiencia De Aprendizaje 3
Experiencia De Aprendizaje 3
 
Trucos Y Efectos[1]
Trucos Y Efectos[1]Trucos Y Efectos[1]
Trucos Y Efectos[1]
 
Conocimient
ConocimientConocimient
Conocimient
 
PERIODO DE ADAPTACIÓN
PERIODO DE ADAPTACIÓNPERIODO DE ADAPTACIÓN
PERIODO DE ADAPTACIÓN
 

Mehr von campus party

¿Qué es SCADA y cómo me afecta su (in)seguridad?
¿Qué es SCADA y cómo me afecta su (in)seguridad? ¿Qué es SCADA y cómo me afecta su (in)seguridad?
¿Qué es SCADA y cómo me afecta su (in)seguridad? campus party
 
Producción del largometraje pequeñas voces
Producción del largometraje pequeñas vocesProducción del largometraje pequeñas voces
Producción del largometraje pequeñas vocescampus party
 
Conferencia: Aplicaciones y el reto del desarrollo móvil
Conferencia: Aplicaciones y el reto del desarrollo móvilConferencia: Aplicaciones y el reto del desarrollo móvil
Conferencia: Aplicaciones y el reto del desarrollo móvilcampus party
 
Como sería un viaje a la velocidad de la luz - Miguel Ángel Contreras
Como sería un viaje a la velocidad de la luz - Miguel Ángel ContrerasComo sería un viaje a la velocidad de la luz - Miguel Ángel Contreras
Como sería un viaje a la velocidad de la luz - Miguel Ángel Contrerascampus party
 
Como sería un viaje a la velocidad de la luz - Miguel Ángel Contreras
Como sería un viaje a la velocidad de la luz - Miguel Ángel ContrerasComo sería un viaje a la velocidad de la luz - Miguel Ángel Contreras
Como sería un viaje a la velocidad de la luz - Miguel Ángel Contrerascampus party
 
X taller bluevialiminal
X taller bluevialiminalX taller bluevialiminal
X taller bluevialiminalcampus party
 
X liminal buevia 2 (dllo.)-taller
X liminal buevia 2 (dllo.)-tallerX liminal buevia 2 (dllo.)-taller
X liminal buevia 2 (dllo.)-tallercampus party
 
X elalgoritmodelamemoria maria juliana soto (social media) (1) 1
X elalgoritmodelamemoria maria juliana soto (social media) (1) 1X elalgoritmodelamemoria maria juliana soto (social media) (1) 1
X elalgoritmodelamemoria maria juliana soto (social media) (1) 1campus party
 
Theremin Alfredo Vargas
Theremin Alfredo Vargas Theremin Alfredo Vargas
Theremin Alfredo Vargas campus party
 
Sonido y cine Ricardo Escallon
Sonido y cine Ricardo Escallon Sonido y cine Ricardo Escallon
Sonido y cine Ricardo Escallon campus party
 
Photoshop para fotógrafos. Del cuarto oscuro al cuarto digital - Andrés Bautista
Photoshop para fotógrafos. Del cuarto oscuro al cuarto digital - Andrés BautistaPhotoshop para fotógrafos. Del cuarto oscuro al cuarto digital - Andrés Bautista
Photoshop para fotógrafos. Del cuarto oscuro al cuarto digital - Andrés Bautistacampus party
 
Photoshop para fotógrafos. Del cuarto oscuro al cuarto digital - Andrés Fonseca
Photoshop para fotógrafos. Del cuarto oscuro al cuarto digital - Andrés FonsecaPhotoshop para fotógrafos. Del cuarto oscuro al cuarto digital - Andrés Fonseca
Photoshop para fotógrafos. Del cuarto oscuro al cuarto digital - Andrés Fonsecacampus party
 
Aseguramiento de Vulnerabilidades Web con tecnologías OWASP
Aseguramiento de Vulnerabilidades Web con tecnologías OWASPAseguramiento de Vulnerabilidades Web con tecnologías OWASP
Aseguramiento de Vulnerabilidades Web con tecnologías OWASPcampus party
 
Mundos virtuales inmersivos y social shopping
Mundos virtuales inmersivos y social shopping Mundos virtuales inmersivos y social shopping
Mundos virtuales inmersivos y social shopping campus party
 
Creación transmediática y comunidades en práctica
Creación transmediática y comunidades en prácticaCreación transmediática y comunidades en práctica
Creación transmediática y comunidades en prácticacampus party
 
Implementación de Cloud Computing con Software Libre y medidas de seguridad p...
Implementación de Cloud Computing con Software Libre y medidas de seguridad p...Implementación de Cloud Computing con Software Libre y medidas de seguridad p...
Implementación de Cloud Computing con Software Libre y medidas de seguridad p...campus party
 

Mehr von campus party (20)

Titulo
Titulo Titulo
Titulo
 
¿Qué es SCADA y cómo me afecta su (in)seguridad?
¿Qué es SCADA y cómo me afecta su (in)seguridad? ¿Qué es SCADA y cómo me afecta su (in)seguridad?
¿Qué es SCADA y cómo me afecta su (in)seguridad?
 
Producción del largometraje pequeñas voces
Producción del largometraje pequeñas vocesProducción del largometraje pequeñas voces
Producción del largometraje pequeñas voces
 
Conferencia: Aplicaciones y el reto del desarrollo móvil
Conferencia: Aplicaciones y el reto del desarrollo móvilConferencia: Aplicaciones y el reto del desarrollo móvil
Conferencia: Aplicaciones y el reto del desarrollo móvil
 
Liminal Bluevia 1
Liminal Bluevia 1Liminal Bluevia 1
Liminal Bluevia 1
 
Como sería un viaje a la velocidad de la luz - Miguel Ángel Contreras
Como sería un viaje a la velocidad de la luz - Miguel Ángel ContrerasComo sería un viaje a la velocidad de la luz - Miguel Ángel Contreras
Como sería un viaje a la velocidad de la luz - Miguel Ángel Contreras
 
Como sería un viaje a la velocidad de la luz - Miguel Ángel Contreras
Como sería un viaje a la velocidad de la luz - Miguel Ángel ContrerasComo sería un viaje a la velocidad de la luz - Miguel Ángel Contreras
Como sería un viaje a la velocidad de la luz - Miguel Ángel Contreras
 
X taller bluevialiminal
X taller bluevialiminalX taller bluevialiminal
X taller bluevialiminal
 
X liminal buevia 2 (dllo.)-taller
X liminal buevia 2 (dllo.)-tallerX liminal buevia 2 (dllo.)-taller
X liminal buevia 2 (dllo.)-taller
 
X elalgoritmodelamemoria maria juliana soto (social media) (1) 1
X elalgoritmodelamemoria maria juliana soto (social media) (1) 1X elalgoritmodelamemoria maria juliana soto (social media) (1) 1
X elalgoritmodelamemoria maria juliana soto (social media) (1) 1
 
Theremin Alfredo Vargas
Theremin Alfredo Vargas Theremin Alfredo Vargas
Theremin Alfredo Vargas
 
Sonido y cine Ricardo Escallon
Sonido y cine Ricardo Escallon Sonido y cine Ricardo Escallon
Sonido y cine Ricardo Escallon
 
Photoshop para fotógrafos. Del cuarto oscuro al cuarto digital - Andrés Bautista
Photoshop para fotógrafos. Del cuarto oscuro al cuarto digital - Andrés BautistaPhotoshop para fotógrafos. Del cuarto oscuro al cuarto digital - Andrés Bautista
Photoshop para fotógrafos. Del cuarto oscuro al cuarto digital - Andrés Bautista
 
Photoshop para fotógrafos. Del cuarto oscuro al cuarto digital - Andrés Fonseca
Photoshop para fotógrafos. Del cuarto oscuro al cuarto digital - Andrés FonsecaPhotoshop para fotógrafos. Del cuarto oscuro al cuarto digital - Andrés Fonseca
Photoshop para fotógrafos. Del cuarto oscuro al cuarto digital - Andrés Fonseca
 
Aseguramiento de Vulnerabilidades Web con tecnologías OWASP
Aseguramiento de Vulnerabilidades Web con tecnologías OWASPAseguramiento de Vulnerabilidades Web con tecnologías OWASP
Aseguramiento de Vulnerabilidades Web con tecnologías OWASP
 
Mundos virtuales inmersivos y social shopping
Mundos virtuales inmersivos y social shopping Mundos virtuales inmersivos y social shopping
Mundos virtuales inmersivos y social shopping
 
Creación transmediática y comunidades en práctica
Creación transmediática y comunidades en prácticaCreación transmediática y comunidades en práctica
Creación transmediática y comunidades en práctica
 
Android+Arduino
Android+ArduinoAndroid+Arduino
Android+Arduino
 
Implementación de Cloud Computing con Software Libre y medidas de seguridad p...
Implementación de Cloud Computing con Software Libre y medidas de seguridad p...Implementación de Cloud Computing con Software Libre y medidas de seguridad p...
Implementación de Cloud Computing con Software Libre y medidas de seguridad p...
 
Linux en caja
Linux en cajaLinux en caja
Linux en caja
 

Introducción a Vim: funcionalidad básica y conceptos clave

  • 1. Vim Javier Rojas Preliminares Funcionalidad general Programaci´n o Automatizaci´n - Vim Scripts o Vim Notas finales Javier Rojas 30 de junio de 2010
  • 2. Vim Javier Rojas Agenda Preliminares 1 Preliminares Funcionalidad general 2 Funcionalidad general Programaci´n o Operaciones b´sicas a Automatizaci´n o - Vim Scripts Buffers, ventanas, pesta˜as n Notas finales 3 Programaci´n o Navegaci´n o Ayudas para digitado Control de versiones Soporte espec´ıfico para lenguajes 4 Automatizaci´n - Vim Scripts o Ayudas b´sicas a Macros Scripting 5 Notas finales
  • 3. Vim Javier Rojas Vim Preliminares Funcionalidad general Programaci´n o Historia Automatizaci´n o - Vim Scripts Clon de vi Notas finales Bram Molenaar Charityware Caracter´ ısticas Multiplataforma Extensible Modal
  • 4. Vim Javier Rojas Vim Preliminares Funcionalidad general Programaci´n o Historia Automatizaci´n o - Vim Scripts Clon de vi Notas finales Bram Molenaar Charityware Caracter´ ısticas Multiplataforma Extensible Modal
  • 5. Vim Javier Rojas Respecto a esta charla Preliminares Funcionalidad general Programaci´n o Automatizaci´n o - Vim Scripts Notas finales El qu´, no el c´mo e o (Necesariamente) mi Las posibilidades de vim experiencia personal No Ruby, no PHP, no (python, C/C++, SQL, .NET LaTeX, HTML, Git) En el sentido matem´tico a La base del uso de vim
  • 6. Vim Javier Rojas Respecto a esta charla Preliminares Funcionalidad general Programaci´n o Automatizaci´n o - Vim Scripts Notas finales El qu´, no el c´mo e o (Necesariamente) mi Las posibilidades de vim experiencia personal No Ruby, no PHP, no (python, C/C++, SQL, .NET LaTeX, HTML, Git) En el sentido matem´tico a La base del uso de vim
  • 7. Vim Javier Rojas Respecto a esta charla Preliminares Funcionalidad general Programaci´n o Automatizaci´n o - Vim Scripts Notas finales El qu´, no el c´mo e o (Necesariamente) mi Las posibilidades de vim experiencia personal No Ruby, no PHP, no (python, C/C++, SQL, .NET LaTeX, HTML, Git) En el sentido matem´tico a La base del uso de vim
  • 8. Vim Javier Rojas Agenda Preliminares 1 Preliminares Funcionalidad general 2 Funcionalidad general Programaci´n o Operaciones b´sicas a Automatizaci´n o - Vim Scripts Buffers, ventanas, pesta˜as n Notas finales 3 Programaci´n o Navegaci´n o Ayudas para digitado Control de versiones Soporte espec´ıfico para lenguajes 4 Automatizaci´n - Vim Scripts o Ayudas b´sicas a Macros Scripting 5 Notas finales
  • 9. Vim Javier Rojas Agenda Preliminares 1 Preliminares Funcionalidad general 2 Funcionalidad general Operaciones b´sicas a Operaciones b´sicas a Buffers, ventanas, Buffers, ventanas, pesta˜as n pesta˜as n Programaci´n o 3 Programaci´n o Automatizaci´n o Navegaci´n o - Vim Scripts Ayudas para digitado Notas finales Control de versiones Soporte espec´ıfico para lenguajes 4 Automatizaci´n - Vim Scripts o Ayudas b´sicas a Macros Scripting 5 Notas finales
  • 10. Vim Javier Rojas Modalidad Preliminares Funcionalidad general Operaciones b´sicas a Modo normal: comandos, operaciones sobre texto, Buffers, ventanas, movimiento pesta˜as n Modo de inserci´n: escribir texto o Programaci´n o Automatizaci´n o Modo de comandos: comandos Ex - Vim Scripts Notas finales Porqu´? e Todo el teclado permite ingresar comandos Menos Escape-Meta-Alt-Control-Shift Razones hist´ricas - teclados no est´ndar o a
  • 11. Vim Javier Rojas Modalidad Preliminares Funcionalidad general Operaciones b´sicas a Modo normal: comandos, operaciones sobre texto, Buffers, ventanas, movimiento pesta˜as n Modo de inserci´n: escribir texto o Programaci´n o Automatizaci´n o Modo de comandos: comandos Ex - Vim Scripts Notas finales Porqu´? e Todo el teclado permite ingresar comandos Menos Escape-Meta-Alt-Control-Shift Razones hist´ricas - teclados no est´ndar o a
  • 12. Vim Javier Rojas Movimiento Preliminares Funcionalidad general Operaciones b´sicas a Buffers, ventanas, pesta˜as n Programaci´n o h, j, k, l Automatizaci´n o w, W, b, B - Vim Scripts Notas finales t, T, f, F, ;, , <n><movimiento>
  • 13. Vim Javier Rojas insertar, modificar, eliminar texto Preliminares Funcionalidad general Operaciones b´sicas a Buffers, ventanas, pesta˜as n Programaci´n o Automatizaci´n o i, a, I, A, o, O - Vim Scripts d, c, D, C, dd, cc, x Notas finales
  • 14. Vim Javier Rojas cortar, copiar, pegar Preliminares Funcionalidad general Operaciones b´sicas a Buffers, ventanas, Poner texto en un registro (portapapeles), pegarlo en alg´n u pesta˜as n sitio Programaci´n o Automatizaci´n o Cortar: d, dd - Vim Scripts Notas finales Copiar: y, yy Pegar: p Registros: "
  • 15. Vim Javier Rojas Operadores Preliminares Funcionalidad general Operaciones b´sicas a Buffers, ventanas, pesta˜as n Transforman el texto indicado de alguna forma Programaci´n o Cambiar, borrar, copiar: c, d, y Automatizaci´n o - Vim Scripts May´sculas, min´sculas: g~ , gu, gU u u Notas finales Indentado, formateo: >, <, gq Otros: !, g?, =
  • 16. Vim Javier Rojas Modo visual Preliminares Funcionalidad general Operaciones b´sicas a Buffers, ventanas, pesta˜as n Seleccionar texto, extender selecci´n mediante movimientos, o Programaci´n o operar sobre el texto Automatizaci´n o - Vim Scripts v, V, CTRL-V Notas finales Operador gv, o
  • 17. Vim Javier Rojas Conceptos Preliminares Funcionalidad general Operaciones b´sicas a Buffers, ventanas, pesta˜as n Programaci´n o Archivos en edici´n: buffers o Automatizaci´n o - Vim Scripts Ventanas: visualizaci´n de un buffer o Notas finales Pesta˜as: grupos de ventanas n
  • 18. Vim Javier Rojas Conceptos Preliminares Funcionalidad general Operaciones b´sicas a Buffers, ventanas, pesta˜as n Programaci´n o Archivos en edici´n: buffers o Automatizaci´n o - Vim Scripts Ventanas: visualizaci´n de un buffer o Notas finales Pesta˜as: grupos de ventanas n
  • 19. Vim Javier Rojas Conceptos Preliminares Funcionalidad general Operaciones b´sicas a Buffers, ventanas, pesta˜as n Programaci´n o Archivos en edici´n: buffers o Automatizaci´n o - Vim Scripts Ventanas: visualizaci´n de un buffer o Notas finales Pesta˜as: grupos de ventanas n
  • 20. Vim Javier Rojas Buffers Preliminares Funcionalidad general Operaciones b´sicas a Buffers, ventanas, pesta˜as n Programaci´n o Automatizaci´n o Representaci´n de un archivo en memoria o - Vim Scripts Un archivo = un buffer Notas finales
  • 21. Vim Javier Rojas Ventanas Preliminares Funcionalidad general Operaciones b´sicas a Buffers, ventanas, pesta˜as n Programaci´n o Dividir ventana, vertical u horizontalmente Automatizaci´n o - Vim Scripts Cualquier buffer en cualquier ventana Notas finales Redimensionar
  • 22. Vim Javier Rojas Pesta˜as n Preliminares Funcionalidad general Operaciones b´sicas a Buffers, ventanas, pesta˜as n Grupos de ventanas relacionadas Programaci´n o Automatizaci´n o No use una pesta˜a por buffer n - Vim Scripts Notas finales Uso de pesta˜as n Grupo de vistas relacionadas
  • 23. Vim Javier Rojas Pesta˜as n Preliminares Funcionalidad general Operaciones b´sicas a Buffers, ventanas, pesta˜as n Grupos de ventanas relacionadas Programaci´n o Automatizaci´n o No use una pesta˜a por buffer n - Vim Scripts Notas finales Uso de pesta˜as n Grupo de vistas relacionadas
  • 24. Vim Javier Rojas Agenda Preliminares 1 Preliminares Funcionalidad general 2 Funcionalidad general Programaci´n o Navegaci´n o Operaciones b´sicas a Ayudas para Buffers, ventanas, pesta˜as n digitado Control de 3 Programaci´n o versiones Soporte Navegaci´n o espec´ ıfico para Ayudas para digitado lenguajes Control de versiones Automatizaci´n o - Vim Scripts Soporte espec´ıfico para lenguajes Notas finales 4 Automatizaci´n - Vim Scripts o Ayudas b´sicas a Macros Scripting 5 Notas finales
  • 25. Vim Javier Rojas Navegaci´n de archivos de texto o Preliminares Funcionalidad general Programaci´n o Navegaci´n o Ayudas para digitado Control de A trav´s de e versiones Soporte Partes de un archivo espec´ ıfico para lenguajes Archivos Automatizaci´n o Elementos de un programa/proyecto - Vim Scripts Notas finales
  • 26. Vim Javier Rojas Navegaci´n en un archivo o Preliminares Funcionalidad general Programaci´n o Navegaci´n o Ayudas para digitado Control de versiones Folding Soporte espec´ ıfico scripts: TagList, BufGrep para lenguajes Marcas (bookmarks) Automatizaci´n o - Vim Scripts Notas finales
  • 27. Vim Javier Rojas Navegaci´n a trav´s de archivos o e Preliminares Funcionalidad general Programaci´n o Navegaci´n o por nombre: FuzzyFinder Ayudas para digitado Control de B´squeda difusa de archivos, por nombre u versiones Soporte M´ltiples especificadores u espec´ ıfico para Recursivo lenguajes Automatizaci´n o - Vim Scripts por contenido: grep - vimgrep Notas finales B´squeda de un patr´n de texto (regexp) dentro de un grupo u o de archivos
  • 28. Vim Javier Rojas Navegaci´n a trav´s de archivos o e Preliminares Funcionalidad general Programaci´n o Navegaci´n o por nombre: FuzzyFinder Ayudas para digitado Control de B´squeda difusa de archivos, por nombre u versiones Soporte M´ltiples especificadores u espec´ ıfico para Recursivo lenguajes Automatizaci´n o - Vim Scripts por contenido: grep - vimgrep Notas finales B´squeda de un patr´n de texto (regexp) dentro de un grupo u o de archivos
  • 29. Vim Javier Rojas Navegaci´n a trav´s de programas o e Preliminares - funciones Funcionalidad general Programaci´n o Navegaci´n o Ayudas para digitado Control de versiones Tags Soporte espec´ ıfico Construye una base de datos de las funciones en un grupo de para lenguajes archivos Automatizaci´n o Saltar a definici´n o - Vim Scripts Notas finales Ver par´metros de una funci´n a o
  • 30. Vim Javier Rojas Ventana quickfix Preliminares Funcionalidad general Programaci´n o Navegaci´n o Ayudas para digitado Lista navegable de posiciones en uno o m´s archivos a Control de versiones Errores de compilaci´n o Soporte espec´ ıfico Resultados de b´squedas u para lenguajes Definiciones de funciones Automatizaci´n o - Vim Scripts Cualquier lista definida por el usuario Notas finales
  • 31. Vim Javier Rojas Auto-completado Preliminares Funcionalidad general Programaci´n o Navegaci´n o Ayudas para digitado Palabras en el archivo actual Control de versiones Nombres de archivo Soporte espec´ para ıfico Tags lenguajes Listados generados mediante una funci´n o Automatizaci´n o - Vim Scripts (omnicompletion) Notas finales
  • 32. Vim Javier Rojas M´s movimientos/objetos de texto a Preliminares Funcionalidad general Programaci´n o Navegaci´n o Ayudas para digitado Control de versiones Bloques: (), [], {}, ’’, Soporte espec´ ıfico % para lenguajes surround.vim Automatizaci´n o - Vim Scripts Notas finales
  • 33. Vim Javier Rojas SnipMate Preliminares Funcionalidad general Programaci´n o Navegaci´n o Ayudas para digitado Control de versiones Plantillas parametrizables para tipos de archivo espec´ ıficos Soporte espec´ ıfico Similar a snippets de TextMate para lenguajes Es posible definir nuevos snippets f´cilmente a Automatizaci´n o - Vim Scripts Notas finales
  • 34. Vim Javier Rojas vcscommand Preliminares Funcionalidad general Programaci´n o Navegaci´n o Ayudas para digitado Control de versiones Commit Soporte espec´ ıfico Ver diffs respecto a una revisi´n particular o para lenguajes Subversion, Git, Mercurial, Bzr, CVS. . . Automatizaci´n o - Vim Scripts Notas finales
  • 35. Vim Javier Rojas Control de versiones - vim Preliminares Funcionalidad general Programaci´n o Navegaci´n o Ayudas para digitado Control de versiones Ver diferencias entre 2-4 archivos Soporte espec´ ıfico Aplicar parches para lenguajes Escoger y aplicar cambios Automatizaci´n o - Vim Scripts Notas finales
  • 36. Vim Javier Rojas Hacks para Git Preliminares Funcionalidad general Programaci´n o Navegaci´n o Ayudas para hist-brow digitado Control de Diferencias entre la versi´n actual de un archivo y sus o versiones Soporte versiones previas espec´ ıfico para Avanzar hacia atr´s o hacia adelante en el historial del a lenguajes archivo Automatizaci´n o - Vim Scripts Notas finales diffbr Diferencias entre un archivo en distintas ramas de desarrollo
  • 37. Vim Javier Rojas Hacks para Git Preliminares Funcionalidad general Programaci´n o Navegaci´n o Ayudas para hist-brow digitado Control de Diferencias entre la versi´n actual de un archivo y sus o versiones Soporte versiones previas espec´ ıfico para Avanzar hacia atr´s o hacia adelante en el historial del a lenguajes archivo Automatizaci´n o - Vim Scripts Notas finales diffbr Diferencias entre un archivo en distintas ramas de desarrollo
  • 38. Vim Javier Rojas Soporte espec´ ıfico para lenguajes Preliminares Funcionalidad general Programaci´n o Navegaci´n o Ayudas para digitado C/C++ Saltar a definici´n, Ver valor de constante, o Control de versiones cscope, compilaci´n, completado o Soporte espec´ ıfico Java Eclim para lenguajes Python Completado Automatizaci´n o - Vim Scripts SQL Omni completion de nombres de tablas y campos Notas finales
  • 39. Vim Javier Rojas HTML/XML Preliminares Funcionalidad general Programaci´n o Navegaci´n o Ayudas para digitado Control de Tag: objeto de texto versiones Soporte M´ltiples plugins para: completar tags, atributos, folding, u espec´ ıfico para renombrar tags, copiar, pegar lenguajes Automatizaci´n o ZenCoding - Vim Scripts Notas finales
  • 40. Vim Javier Rojas Agenda Preliminares 1 Preliminares Funcionalidad general 2 Funcionalidad general Programaci´n o Operaciones b´sicas a Automatizaci´n o - Vim Scripts Buffers, ventanas, pesta˜as n Ayudas b´sicas a 3 Programaci´n o Macros Scripting Navegaci´n o Notas finales Ayudas para digitado Control de versiones Soporte espec´ıfico para lenguajes 4 Automatizaci´n - Vim Scripts o Ayudas b´sicas a Macros Scripting 5 Notas finales
  • 41. Vim Javier Rojas :abbr - :map Preliminares Funcionalidad general Programaci´n o Automatizaci´n o :abbr - Vim Scripts Ayudas Cambiar un texto por otro, en modo inserci´n o b´sicas a Macros Digitado r´pido a Scripting Notas finales :map Shortcuts, para cualquier modo Convierte un shortcut/hotkey en una secuencia de letras Cambio de modos
  • 42. Vim Javier Rojas :abbr - :map Preliminares Funcionalidad general Programaci´n o Automatizaci´n o :abbr - Vim Scripts Ayudas Cambiar un texto por otro, en modo inserci´n o b´sicas a Macros Digitado r´pido a Scripting Notas finales :map Shortcuts, para cualquier modo Convierte un shortcut/hotkey en una secuencia de letras Cambio de modos
  • 43. Vim Javier Rojas Buscar y reemplazar Preliminares Funcionalidad general Programaci´n o Automatizaci´n o - Vim Scripts Uso b´sico a Ayudas b´sicas a s/<patron>/<texto reemplazo>/ Macros Scripting Uso avanzado Notas finales Backreferences: s/(<patron1>)...(<patron2>)/12 Expresiones: s/<patron>/=<expresion>
  • 44. Vim Javier Rojas Buscar y reemplazar Preliminares Funcionalidad general Programaci´n o Automatizaci´n o - Vim Scripts Uso b´sico a Ayudas b´sicas a s/<patron>/<texto reemplazo>/ Macros Scripting Uso avanzado Notas finales Backreferences: s/(<patron1>)...(<patron2>)/12 Expresiones: s/<patron>/=<expresion>
  • 45. Vim Javier Rojas Macros Preliminares Funcionalidad general Secuencia de comandos, construida a partir de los comandos Programaci´n o ingresados por el usuario Automatizaci´n o - Vim Scripts Uso b´sico a Ayudas b´sicas a Grabar la macro: q<nombre-macro><comandos>q Macros Scripting Ejecutar la macro: @<nombre-macro>, @@, Notas finales <numero>@<nombre-macro> Sugerencias Terminar la macro pensando en la pr´xima ejecuci´n o o Moverse en el archivo usando marcas Macros recursivas
  • 46. Vim Javier Rojas vimscript - Acerca del lenguaje Preliminares Funcionalidad general Programaci´n o Automatizaci´n o - Vim Scripts Enteros, flotantes, cadenas de texto Ayudas b´sicas a Arrays, Diccionarios (Hash tables, maps). Macros Scripting if, for, while, try Notas finales Din´mico, recolecci´n de basura a o Procedimental, funcional, OO Mono Hilo
  • 47. Vim Javier Rojas Qu´ pueden hacer las funciones e Preliminares Funcionalidad general Programaci´n o Automatizaci´n o - Vim Scripts C´mputo o Ayudas b´sicas a Modificar texto de buffers abiertos Macros Scripting Abrir buffers, ventanas, pesta˜as n Notas finales Interacci´n con el sistema de archivos o Invocar programas externos, enviar/recibir texto Llamar cualquier comando (:comando)
  • 48. Vim Javier Rojas Variables Preliminares Funcionalidad general Programaci´n o Las variables est´n asociadas a objetos, y existen mientras el a Automatizaci´n o objeto exista - Vim Scripts Ayudas b: Buffer b´sicas a Macros w: Ventana (Window) Scripting t: Pesta˜a (Tab) n Notas finales t: Local a la funci´n o s: Local respecto al script a: Argumento de la funci´n (s´lo lectura) o o v: Definida por Vim g: Global
  • 49. Vim Javier Rojas Variables Preliminares Funcionalidad general Programaci´n o Automatizaci´n o - Vim Scripts Ayudas b´sicas a Macros Variables de entorno: $VAR Scripting Opciones Vim: &VAR Notas finales Registros: @r
  • 50. Vim Javier Rojas Tips de desarrollo Preliminares Documentaci´n b´sica o a Funcionalidad general :help script Programaci´n o Automatizaci´n o :help function-list - Vim Scripts Ayudas :help holy-grail b´sicas a Macros Scripting Depurado b´sico a Notas finales :echo MiFuncion(), :call MiFuncion() Ejecutar comandos Construya una cadena con el comando que desea, y ejec´tela u let miarchivo = ’cosa.txt’ let cmd = ’:edit ’ . miarchivo execute cmd
  • 51. Vim Javier Rojas Agenda Preliminares 1 Preliminares Funcionalidad general 2 Funcionalidad general Programaci´n o Operaciones b´sicas a Automatizaci´n o - Vim Scripts Buffers, ventanas, pesta˜as n Notas finales 3 Programaci´n o Navegaci´n o Ayudas para digitado Control de versiones Soporte espec´ıfico para lenguajes 4 Automatizaci´n - Vim Scripts o Ayudas b´sicas a Macros Scripting 5 Notas finales
  • 52. Vim Javier Rojas Porqu´ no un IDE? e Preliminares Funcionalidad general Programaci´n o Automatizaci´n o - Vim Scripts Exceso de formalismos Notas finales Velocidad (or lack of thereof ) Componentes de edici´n apestan o Inconsistencia de interfaz Portabilidad de configuraci´n o Ergonom´ ıa
  • 53. Vim Javier Rojas Ergonom´ ıa Preliminares Funcionalidad general Programaci´n o Automatizaci´n o - Vim Scripts Notas finales Modalidad. Movimiento (laptops.) Ortogonalidad - operadores, movimiento, objetos de texto Automatizaci´n o
  • 54. Vim Javier Rojas Interfaces similares Preliminares Funcionalidad general Programaci´n o Automatizaci´n o - Vim Scripts Navegadores Vimperator, elinks-keys, Vimium, Konqueror Notas finales PIM Mutt, abook, wyrd WManagers Ion3, awesome, xmonad, . . . FileManagers lfm, vifm, vim audio cmus, xmms2, MPD/MPC Util. UNIX less, sed, screen, bash (readline) IDEs* Eclipse, Visual Studio
  • 55. Vim Javier Rojas Problemas/Defectos/Quejas Preliminares Funcionalidad general Programaci´n o Automatizaci´n o - Vim Scripts Notas finales Config. inicial es p´sima e Interacci´n con procesos externos o Depuradores Shells IDEs, refactoring Proceso de desarrollo lento
  • 56. Vim Javier Rojas Soporte - Comunidad Preliminares Funcionalidad general Programaci´n o Ayuda interna Automatizaci´n o - Vim Scripts :help Notas finales Lista de correo vim_use@googlegroups.com Canal IRC #vim, en Freenode (irc.freenode.net) Wiki http://vim.wikia.com
  • 57. Vim Javier Rojas Consejos Preliminares Funcionalidad general Programaci´n o Automatizaci´n o - Vim Scripts Notas finales vimtutor problema → soluci´n → crear h´bito o a revisar el wiki leer; no tema preguntar
  • 58. Vim Javier Rojas Moralejas Preliminares Funcionalidad general Programaci´n o Automatizaci´n o - Vim Scripts F´cil de usar = f´cil de aprender a a Notas finales Objetos de texto. Operadores ortogonales sobre los objetos de texto La cantidad de caracter´ ısticas no es importante Lo importante es extensibilidad (para copiar/implementar buenas ideas) Vim, Emacs, TextMate