# Editores

### Nano

#### Adicionando Cores

Antes de começar vamos verificar os scripts de cores disponíveis em `/usr/share/nano/` e depois os adicione em `~/.nanorc`. Algumas versões de Linux já vem com as cores ativas, então utilize somente se necessário.

```bash
echo "include /usr/share/nano/json.nanorc" >> ~/.nanorc
echo "include /usr/share/nano/javascript.nanorc" >> ~/.nanorc
echo "include /usr/share/nano/python.nanorc" >> ~/.nanorc
echo "include /usr/share/nano/xml.nanorc" >> ~/.nanorc
echo "include /usr/share/nano/ruby.nanorc" >> ~/.nanorc
echo "include /usr/share/nano/html.nanorc" >> ~/.nanorc
```

**OBS.:** Caso dê erro, execute o comando `unset LANG`

####

#### VI

#### Configurando

Crie o arquivo `~/.vimrc` e insira nele os comandos que deseja executar ao abrir o VI. Abaixo segue uma configuração para o código irá ficar identado.

```bash
set nu
syntax on
set encoding=utf-8
set showcmd
filetype plugin indent on

set tabstop=3 shiftwidth=3
set expandtab
set backspace=indent,eol,start

set hlsearch
set incsearch
set ignorecase
set smartcase
```

#### Comandos Básicos

| ATALHO                      | DESCRIÇÃO                                                                                                                                                                         |
| --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `i`                         | Entra no modo de edição                                                                                                                                                           |
| `yy`                        | Copia a linha inteira                                                                                                                                                             |
| `p`                         | Cola                                                                                                                                                                              |
| `yyp`                       | Duplica a linha                                                                                                                                                                   |
| `x`                         | Apaga caractere                                                                                                                                                                   |
| `dw`                        | Apaga a palavra a frente do cursor (deixe o cursos no primeiro caractere da palavra)                                                                                              |
| `d$`                        | Exclui o conteúdo da linha, mas mantém a linha em branco                                                                                                                          |
| `:<number_line>`            | Posiciona o cursor em determinada linha do arquivo. O mesmo pode ser já definido antes de abrir o arquivo, por exemplo: `vi +<number_line> <file>`                                |
| `:<start_line>,<end_line>d` | Apaga um determinado range de linhas                                                                                                                                              |
| `:q`                        | Sai do editor (Insira uma exclamação no final caso não seja um arquivo novo)                                                                                                      |
| `:r <file>`                 | Lê o conteúdo de um determinado arquivo e insere no arquivo atual                                                                                                                 |
| `:w`                        | Salva o arquivo e continua na edição (insira uma exclamação no final caso não seja um arquivo novo)                                                                               |
| `:wq`                       | Salva e sai do editor (Insira uma exclamação no final caso não seja um arquivo novo)                                                                                              |
| `:x`                        | O mesmo que o comando :wq                                                                                                                                                         |
| `/<string>`                 | Procura por uma determinada string no texto. Depois de localizar a palavra desejada, pressione `n` para ir para a próxima ocorrência e `N` para voltar para a ocorrência anterior |
| `:%s/search/replace`        | Procura por todas as palavras que tenham determinada string e a substitui                                                                                                         |
| `:%s/ /\r/g`                | Subistitui espaços por quebra de linha. Ou se preferir pode já abrir o arquivo com as substituições feitas com o comando **`vi <file> -c ':%s/ /\r/g'`**                          |
| `:%s/;/\r/g`                | Substitui todos os `;` por quebra de linha                                                                                                                                        |
| `:set number`               | Mostra o número da linha do arquivo                                                                                                                                               |
| `:syntax on`                | Deixa o código colorido (útil para programar)                                                                                                                                     |
| `CTRL + A`                  | Incrementa um número caso o cursor esteja em cima dele                                                                                                                            |
| `CTRL + X`                  | Decrementa um número caso o cursor esteja em cima dele                                                                                                                            |
| `ESC + DD`                  | Exclui a linha atual inteira                                                                                                                                                      |
| `ESC + CC`                  | Exclui o conteúdo da linha atual, mas mantém a linha em branco                                                                                                                    |

**OBS.:** Caso tenha editado algo no editor, pressione `ESC` antes do comando
