Introduza o termo a pesquisar e clique Enter.

Vim para Node.js (e mais)

Ago 11 21

Escrito por Luis Nabais @ 21/08/11 23:08 | 3 Comentários »

VIM Solorized

VIM Solarized

Desde há uns anos para cá que descobri que sou estupidamente mais produtivo quando uso uma linha de comandos para a maioria do que faço em vez de interfaces gráficos. O corolário dessa conclusão é que Windows pura e simplesmente não serve porque não tem nada que se aproxime à quantidade gigantesca de ferramentas disponíveis num qualquer clone de Unix como é o caso de Linux, BSD ou até mesmo Mac OS-X.

A minha escolha, como muitos certamente sabem, recai sobre Linux e o meu editor de texto de eleição é tornou-se lentamente o vim. Eu sou fã de ferramentas como o Gnome-Do/Quicksilver que me permitem escrever o que quero fazer em vez de utilizar ícones do interface gráfico ou atalhos complicados portanto o venerável editor de texto é uma escolha natural.

Mas uma das coisas boas do vim é que é altamente personalizavel e extensível e eu aproveitei esse facto para lhe adicionar algumas funcionalidades que me ajudam a escrever código javascript.

Neste post vou explicar os passos para reproduzir o meu ambiente de trabalho em html/css/javascript no vim.

1. Preparar o caminho

Antes de mais nada é preciso instalar as dependências para construir o Node.JS. No caso de Fedora basta fazer o seguinte:

su -c 'yum install make gcc-c++ openssl-devel git vim'

Depois vamos instalar o Node.JS (v0.4.11 neste caso):

mkdir noderoot
git clone http://github.com/joyent/node.git
cd git
git checkout v0.4.11
./configure --prefix=$HOME/noderoot
make
make install

Não nos podemos no então esquecer de adicionar a pasta onde instalámos o Node.JS à nossa PATH para o podermos invocar na linha de comandos sem utilizar o caminho completo. A razão pela qual eu prefiro instalar o node desta maneira é porque assim não se corre riscos de “sujar” o sistema com ficheiros que mais tarde, quando quisermos remover, podemos não saber exactamente onde se encontram.

cd
echo "export PATH=${PATH}:${HOME}/noderoot/bin" >> .bash_profile

E para finalizar instalamos o NPM (gestor de pacotes do Node.JS) e o JSHint (um programa que analisa código javascript e avisa sobre erros de sintaxe e outros potenciais problemas):

curl http://npmjs.org/install.sh | sh
npm install -g jshint

Agora que já temos uma instalação de Node.JS e mais algumas ferramentas úteis instaladas passemos ao próximo passo…

2. Um mundo de extensibilidade

O primeiro passo que temos de fazer antes de começar a utilizar a nossa recém instalada cópia do VIM é passar pelo site oficial e ajudar o Uganda.

O segundo passo é prepara-lo para o começarmos a artilhar como se fosse um Saxo Cup nas mãos de alguém com mais dinheiro do que juízo. Para nos ajudar nessa tarefa vamos instalar o Pathogen, um plugin para o VIM que nos ajuda a gerir a instalação de outros plugins (não é estritamente necessário mas facilita), seguindo os seguintes passos:

mkdir -p $HOME/.vim/autoload $HOME/.vim/bundle
curl https://raw.github.com/tpope/vim-pathogen/HEAD/autoload/pathogen.vim \
  > $HOME/.vim/autoload/pathogen.vim

Com o pathogen instalado torna-se mais simples instalar plugins, especialmente aqueles que existem em repositórios git, bastando para isso clonar o repositório para a pasta $HOME/.vim/bundle/.

Vamos começar então por melhorar o syntax highlightning para javascript:

cd $HOME/.vim/bundle
git clone http://github.com/pangloss/vim-javascript.git

Vamos também dar uso ao JSHint que instalámos no inicio para sublinhar os erros do nosso código javascript enquanto editamos:

git clone http://github.com/manalang/jshint.vim.git

E por fim um pequeno plugin que serve para alinhar desde atribuições de variáveis até tabelas ascii, o Tabular [tutorial sobre como o usar].

git clone http://github.com/godlygeek/tabular.git

Por fim chegou a hora de criar um ficheiro $HOME/.vimrc e preenchê-lo para activar os nossos plugins e ter um ambiente pronto a trabalhar. Para isso peguem no vosso editor de texto favorito (VIM claro) e preencham-no com o seguinte:

" Carregar o pathogen
call pathogen#infect()

" Ligar os plugins
filetype plugin on

" Ligar o Syntax Highlighting
syntax on

" Indentar automaticamente o código
filetype indent on
set cindent
set smartindent
set autoindent

" Substituir tabulações por 4 espaços
set tabstop=4
set shiftwidth=4
set expandtab

" Mostrar números de linha
set number

" Mostrar espaços no fim das linhas e tabulações
set list
set listchars=trail:-,nbsp:-,tab:-

" Tabular
if exists(":Tabularize")
  nmap a= :Tabularize /=
  vmap a= :Tabularize /=
  nmap a: :Tabularize /:\zs
  vmap a: :Tabularize /:\zs
endif

Façam favor de editar o ficheiro a vosso gosto mas lembrem-se: de cada vez que usam tabulações em vez de espaços Deus/Alá/Unicórnio Cor de Rosa Invisível/Monstro de Esparguete Voador/Torque matam um gatinho.

Feito o aviso vamos adiante já que a seguir vamos tratar dos nossos olhos.

pub:

3 Comentários

  1. Miguel Duarte

    21 de Agosto de 2011 ás 23:40

    a utilizar Google Chrome 13.0.782.112 em Mac OS X 10.7.1

    Essa de trocar tabulações por 4 espaços é que me ficou atravessada. Porque raio preferes assim? Ao usares uma tabulação consegues “desfazer” uma indentação com o backspace, não tens que fazer 4 backspaces.

    • Luis Nabais

      21 de Agosto de 2011 ás 23:46

      a utilizar Mozilla Firefox 7.0 em Windows 7

      Epah honestamente concordo contigo: tens toda a razão e o carácter de tabulação teoricamente é melhor para o efeito (podes escolher quanto espaço queres, ocupa menos bytes, etc).

      Infelizmente parece que a facção dos espaços ganhou porque a maioria dos programas parece totalmente incapaz de lidar com o carácter de tabulação. Umas vezes é perdido na transição entre sistemas operativos, noutras é misturado com espaços de forma invisível, etc.

      Basicamente podes ver o que escrevi de uma de duas formas: “They are the borg and I’ve been assimilated” ou então uma tentativa de promover um padrão a que todos aderimos para o bem geral.

    • Luis Nabais

      22 de Agosto de 2011 ás 17:20

      a utilizar Mozilla Firefox 6.0 em Linux

      Ok, acabei de me lembrar que isso é um moot point.

      No vim se fizeres > > ele aumenta a indentação da linha, < < reduz.