@Andy_McPalace http://t.co/BkcDzHSK

Buscar archivo debajo del cursor en VIM

Trabajando con una aplicación que usa templates, me encontré muchas veces viendo que cierto script abre después cierto template, si quiero ver ese archivo, tengo que buscarlo. Lo mismo si tengo imports..

Buscando en el wiki de vim encontre un script que sirve para encontrar archivos dentro del directorio donde estas parado (cd).. Yo lo modifiqué un poco y quedó asi:

"Function for finding files
" Find file in current directory and edit it.
function! Find(name)
  let l:list=system("find . -name '".a:name."*[htm|html|php]' | grep -v .svn | perl -ne 'print \"$.\\t$_\"'")
  let l:num=strlen(substitute(l:list, "[^\n]", "", "g"))
  if l:num < 1
    echo "'".a:name."' not found"
    return
  endif
  if l:num != 1
    echo l:list
    let l:input=input("Which ? (CR=nothing)\n")
    if strlen(l:input)==0
      return
    endif
    if strlen(substitute(l:input, "[0-9]", "", "g"))>0
      echo "Not a number"
      return
    endif
    if l:input<1 || l:input>l:num
      echo "Out of range"
      return
    endif
    let l:line=matchstr("\n".l:list, "\n".l:input."\t[^\n]*")
  else
    let l:line=l:list
  endif
  let l:line=substitute(l:line, "^[^\t]*\t./", "", "")
  execute ":e ".l:line
endfunction
command! -nargs=1 Find :call Find("<args>")

Esta funcion se usa haciendo algo como

:Find <nombre>

Lo que hice fue que busce archivos con extension especificas [html|htm|php] y evita el directorio “.svn”. Este script se puede modificar de muchas formas, así es como me sirve a mi…

Otro detalle que le hice, fue hacer un keybiding para buscar directamente, sin escribir el comando.

:nmap <leader>f "zyiw:exe "Find ".@z.""<CR>

De esta forma con ”\f” buscas el archivo en el que el cursor esta parado. OJO si cambiaste el leader de VIM que cambia el binding.

Búsqueda recursiva en VIM

Hoy me encontré con la necesidad de corregir todos los archivos de una aplicación que hacían una llamada por ajax. Buscando un poco, encontré esto que es *muy* útil

vimgrep /$.ajax/ **/*.html

Después podes ver los resultados con:

:copen

Les dije que VIM es *GENIAL*?

Encriptar archivos en unix

Como mi memoria es un asco, tengo un archivo en el disco de la mac que tiene mis passwords anotadas, y dicho archivo se hace backups todos los días por las dudas mediante time-machine..
Ahora.. ese archivo, claramente, no puede estar en texto plano así nomas así que estuve buscando alguna forma de encriptar el archivo y que sea al menos un poco mas seguro (y de paso molesto para mi)..

Una forma es hacer un .zip con clave, lo cual suckea jodidamente.. buscando un poco más, encontré esto:

Para encriptar:

openssl des3 -salt -in passwords -out passwords.crypt

Para desencriptar

openssl des3 -d -salt -in passwords.crypt -out passwords

Simple..
Ahora tengo que buscar una forma de que encripte y desencripte on-the-fly para ver ese archivo pidiendo la clave.. Ya se me va a ocurrir un script, mientras… esto sirve

UPDATE:
Me tiraron el dato que vim encripta archivos y despues los podes leer usando la opcion -x, es decir:

vim -x [archivo]

Amo VIM

Si leyeron el post anterior… Quizas entiendan porque esto que estoy haciendo está bueno…

:%s/^\(\d\d\)\(.*\)/<li><a href="images\/membranofonos\/\1.jpg">\2<\/a><\/li>