Your SlideShare is downloading. ×
0
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Vim slides
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Vim slides

1,383

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,383
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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

×