Arquivo

Posts Tagged ‘atalhos’

Dicas de como usar o Emacs com o R

O R possui diversos editores (Rkward, JGR, Tinn-R, RStudio, entre outros). O emacs é o meu editor preferido, talvez porque foi com o qual eu comecei a usar o R no Linux. Esse editor possui várias vantagens e nesse post eu vou ressaltar algumas delas.

Para instalar o emacs no linux, você deve ir para o terminal e pedir

$ sudo apt-get install emacs23 ess

O ess é uma componente que deve ser instalada junto com o emacs para que reconheça a linguagem R, aplicando então os realces (highlights) e a indentação do código. Os realces são cores aplicadas ao código que identificam as strings, as funções, os comentários, ajudam a controlar os pares de parênteses/colchetes/chaves, permitindo a rápida identificação de estruturas de hierarquia de funções. A indentação garante um aspecto mais organizado para o código, principalmente para pessoas que fazem funções e desenvolvem pacotes. Um código com indentação fica mais fácil de ser lido por terceiros e permite facilmente a identificação de erros de programação.

Algumas curiosidades sobre o emacs+ess são os atalhos para o sinal de atribuição <- que é obtido com um simples underline. Outra utilidade é a repetição de caracteres que eu uso para traçar linhas horizontais no meu código, separando passos da minha análise. Segure (segura ctrl)+(número de repetições)+(solta ctrl)+(caracter a repetir). Para fazer uma linha comentada com 50 traços é só fazer (segura ctrl)+(50)+(solta ctrl)+(-). O leitor pode perceber que meus códigos R sempre possui esses traços horizontais. Detalhe: aprendi fazer isso acidentalmente.

No emacs existem comandos específicos para recortar/copiar/colar texto. Para ativar os usuais ctrl+x/c/v, você deve ir no menu options e habilitar a opção C-x/C-c/C-v Cut and Paste (CUA).

O emacs possui atalhos para avaliar o código R. Os atalhos mais usuais são:

  • ctrl+c+j — avalia uma linha de código e não muda o cursor para a linha seguinte;
  • ctrl+c+n — avalia uma linha de código e  muda o cursor para a linha seguinte;
  • ctrl+c+p — avalia um parágrafo (região sem quebra de linha no código);
  • ctrl+c+r — avalia uma região selecionada do código;
  • ctrl+c+f — avalia uma função, ignora as quebras de linha.

Ao usar o R no emacs, por padrão a janela é dividida verticalmente. O script fica na porção superior e o console na porção inferior. Para mexer a barra de rolagem do script usa-se as teclas page up e page down. O interessante é que com alt+page up e alt+page down pode-se mexer a barra de rolagem do console sem mudar o cursor para o console. Isso é útil quando queremos rever algum resultado que já ficou escondido no console.

No emacs, ao aplicar uma função do R, é possível previamente saber os argumentos que essa função recebe. Isso e mostrado no buffer inferior (uma linha de buffer). Para isso é necessário que exista um arquivo .emacs na sua home do linux (/home/user) com a seguinte linha

(require 'ess-eldoc)

No linux, todo arquivo/diretório que começa com ponto é oculto. Você pode localiza-lo de forma gráfica no menu ver > mostrar arquivos ocultos, para então abrir com gedit e adicionar a linha. Pode-se fazer isso por terminal, indo para a sua home, listando os arquivos ocultos e abrindo o desejado com o vi. Se o arquivo não existir, você pode criá-lo com o conteúdo desejado usando o comando echo.

$ cd ~                                 # vai para o diretório home do usuário
$ pwd                                  # mostra o diretório para conferir
$ find .emacs                          # encontra o arquivo se ele existir
$ vi .emacs                            # abre o arquivo para edição
$ echo "(require 'ess-eldoc)" > .emacs # cria o arquivo se ele não existir

Feito isso, toda vez que abrir o primeiro parentese da função, vai aparecer os seus argumentos. Por exemplo, para função install.packages() aparece assim

install.packages(
install.packages: pkgs, lib, repos = getOption("repos"), contriburl = contrib.url(repos,
    type), method, available = NULL, destdir = NULL, dependencies = NA,
    type = getOption("pkgType"), configure.args = getOption("configure.args"),
    configure.vars = getOption("configure.vars"), clean = FALSE,
    Ncpus = getOption("Ncpus"), libs_only = FALSE, INSTALL_opts,
    ...

Esse tipo de informação você pode obter com a função args()

args(install.packages)

Para finalizar, o emacs possui três tipos de comentários. Ao usar uma tralha # (hash) e dar enter com o cursor na frente da tralha, o comentário é colocado no centro horizontal do script. Com duas tralhas, os comentários serão alinhados à esquerda no mesmo nível de profundidade do código. Com três tralhas, o comentário sempre vai ficar colado à esquerda. Veja abaixo o exemplo.

                                        # gráfico da lattice
require(lattice)
da <- expand.grid(x=1:20, z=gl(2,1,labels="A"))
da$y <- 0.3*da$x+as.numeric(da$z)+rnorm(da$x)
xyplot(y~x, data=da,
       ## identifica linhas separadas por grupos
       groups=z,
       ## controla cores, tipo de linha
       type="b", col=1:2, lty=1:2, pch=19,
       ## controla a legenda
       key=list(
         ## texto
         text=list(c("A1","A2")),
         ## opções de linha
         lines=list(lty=1:2, col=1:2)
         )
       )
### tentem fazer isso em casa crianças!

Para usuários de windows aconselho baixar o emacs da página do Vincent Goulet.

Anúncios
Categorias:linux Tags:, , , ,