Enviaments etiquetats ‘vim’

octubre 5, 2010

otlcat: concatenate and print outline files

Aquest cap de setmana passat vaig escriure un petit script en perl que funciona de manera semblant al famós cat, però que està especialment orientat a outlines. Ho he fet més que res perquè últimament estic trastejant una mica amb The Vim Outliner, com ja vaig comentar fa alguna setmana. Entre altres coses he organitzat una mica alguns How To que tenia repartits entre l’ordinador, aquest blog i internet, i que intentaré penjar quan estiguin una mica més estructurats, i algunes receptes senzilles de cuina, entre les que destaca la paella de carn (dissabte passat va ser un èxit!), que potser també penjaré. Ja veurem.

L’script en qüestió, otlcat, serveix per a imprimir els continguts d’un arxiu a la sortida estàndard (stdout). Si es criden diversos arxius, el seu contingut es concatena. Fins aquí res diferent del cat. La gràcia és que si l’arxiu de text en qüestió és un outline amb el format que utilitza The Vim Outliner (tabuladors per a especificar les jerarquies, els títols comencen directament després dels tabuladors i el text està delimitat pel caràcter ‘|‘), otlcat té un cert control sobre l’output i pot imprimir només fins a una certa profunditat, només text o títols, o títols i text amb profunditats diferents. Per exemple,

$ otlcat -Th2 exemple.otl

imprimiria tots els títol de jerarquia 1 i 2, però cap bloc de text, de l’arxiu exemple.otl.

Com sempre, el codi es troba aquí. Si us mireu una mica el codi, podeu canviar fàcilment el delimitador de text ‘|‘ per algun altre caràcter. Crec, per exemple, que hi ha outliners que utilitzen la coma, o el punt i coma. Per a veure com utilitzar exactament el programa n’he escrit una documentació. N’hi ha prou amb escriure

$ otlcat --man

per obrir una pàgina a l’estil de les man. Instal·lar-la i poder-la consultar com qualsevol altre man és ben fàcil. Per exemple, per posar la pàgina man al vostre directori local:

$ pod2man path/to/otlcat > ~/share/man/man1/otlcat.1

Més endavant potser escriuré altres scripts (per exemple, per just el contrari, un otlsplit no estaria malament). Si teniu alguna suggerència serà benvinguda!

Com a exemple d’aplicació, otlcat es pot utilitzar directament des del vim. Per exemple, si ens volem carregar tot el text (però no els títols) d’un conjunt de línies, les podem seleccionar des del mode visual (s’hi entra amb v) i seguidament escriure

:!otlcat -T

(que en realitat quedaria com :'<'>!otlcat -T). Fàcil!

setembre 22, 2010

Més URLs al Vim: ara, ressaltades

Ahir comentava com obrir URLs directament des del Vim. Ja que hi som i que tenim l’expressió regular per detectar-les, no ens costa res ressaltar-les una mica però veure-les venir. Com sempre, al ~/.vimrc:

highlight HyperLink ctermbg=black ctermfg=darkcyan cterm=underline
match HyperLink _[a-z]\+://[^ \>,;:]\+_

La primera línia ens diu com hem de ressaltar el grup HyperLink. ctermbg i ctermfb determinen respectivament el color del fons i del tipus de lletra. cterm a seques, la decoració. La segona línia ens defineix el grup HyperLink (i ha d’anar per sota la primera). Per a més informació, :help highlight i :help match.

Etiquetes: , , , ,
setembre 21, 2010

Vim: obrir URLs amb l’open de Mac

Doncs això. Estàs treballant amb un fitxer de text des del vim i de cop et trobes amb una adreça d’internet que vols obrir. Per no haver-la de copiar, obrir el navegador i enganxar-la, pots escriure la següent funció al teu ~/.vimrc:

function! OpenURI()
  let s:uri = matchstr(getline("."), '[a-z]\+://[^ \>,;:]\+')
  echo s:uri
  if s:uri != ""
    exec '!open "' . s:uri . '"'
  else
    echo "No URI found in line."
  endif
endfunction

Aquesta funció utilitza la comanda open de Mac, utilíssima. Suposo que adaptar-ho a un altre sistema operatiu és fàcil, sobretot si tot el que t’interessa és obrir una pàgina web. Ara, quan estiguem situats en una línia on hi ha una adreça de l’estil http://… (o …://…), n’hi ha prou amb escriure

:call OpenURI()

I ens obrirà la pàgina en el nostre navegador per defecte. Com que això és una mica pesat, al ~/.vimrc hi podem incloure també la línia

map ,o :call OpenURI()

i així només ens caldrà apretar la combinació de tecles ,o (o qualsevol altra que definim, això va a gustos).

Etiquetes: , , , , , ,
setembre 18, 2010

The Vim Outliner

En Pere sovint fa campanya a favor de l’org-mode de l’Emacs. Com que sempre que en sento parlar em fa enveja (sana!), però jo estic acostumat al Vim, vaig decidir buscar alguna cosa semblant. No he trobat res que s’hi assembli del tot (pel que he vist org-mode és enorme!), però sí que hi ha un outliner per a Vim que funciona prou bé. De fet, n’hi ha dos: Vim Outliner i The Vim Outliner (o TVO). M’he decantat per aquest segon perquè l’última versió és més actual i té bones crítiques per internet.

És fàcil d’instal·lar, seguint els passos de la web. Jo l’he instal·lat al meu directori vim personal, ~/.vim/. Cal baixar-se l’arxiu zip (e.g., vimoutliner-122.zip) i descomprimir-lo a aquest directory. Hi ha alguns scripts en ruby per convertir el format otl a tex, html, etc., que cal moure’ls a un directori que estigui en el nostre path (en el meu cas, els he mogut a ~/bin/). Finalment, al .vimrc personal (~/.vimrc) cal afegir-hi (si no és té ja) la línia

filetype plugin on

El problema de TVO és que la documentació és molt pobre i no sé com fer moltes de les coses que espero que hauria de poder fer. Poc a poc n’aniré aprenent, a veure quan el puc aplicar a feines realment útils:

Whenever I learn a new skill I concoct elaborate fantasy scenarios where it lets me save the day (xkcd/208).

Mentrestant, he començat un arxiu amb les receptes que vaig fent a casa. He començat amb la paella de diumenge passat i l’orada a la sal d’avui. Boníssim!

juliol 18, 2008

.vimrc per Mac OS X

Porto ja uns dies jugant amb el meu nou MacBook i de moment n’estic ben content. De moment he evitat instal·lar-me Debian perquè sinó acabaria passant com amb el meu antic iBook G3 i no provaria què tal va aquest Leopard. No està gens malament, amb tot de pijadetes.

Però ahir va arribar el moment d’escriure en LaTeX. Vaig provar el TeXShop i no està malament, però acostumat al vim i a moure’m utilitzant el teclat se’m feia un xic pesat. Així que aprofitant que en el fons el Mac OS X és Unix m’he passat a la terminal i he obert el vim.

A diferència de la majoria de les distribucions de Linux, on per defecte ja hi ha moltes opcions activades, el vim de Mac ve sense gairebé res. Per no haver d’entrar cada vegada totes les opcions, només fa falta crear-se un arxiu .vimrc o (_vimrc si vols que es vegi des del Finder) amb les següents opcions:

set nocompatible    " use Vim defaults (much better!)
set bs=2            " allow backspacing over everything in insert mode
set viminfo='20,"50 "read/write a .viminfo file, don't store more than
                    " 50 lines of registers
set history=50      " keep 50 lines of command line history
set ruler           " show the cursor position all the time
syntax on           " switch syntax on
set hlsearch        " highlight the last used search pattern

I llavors es poden utilitzar altres opcions. Jo utilitzo

set textwidth=78

per a escriure fins a 78 caràcters per línia,

set fileencoding=latin1

per a utilitzar el nostre joc de caràcters (ISO-8859-1), i

filetype indent on
set expandtab
set tabstop=2
set shiftwidth=2
:retab

per a fer servir 2 espais enlloc del tabulador. A més, per escriure documents de LaTeX és molt útil el vim-latex, i llavors cal afegir les dues últimes línies del .vimrc:

filetype plugin on
set grepprg=grep -nH $*
Etiquetes: , , ,
Follow

Get every new post delivered to your Inbox.

Join 117 other followers