Editor VIM-Set2023

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 34

Editor VIM

Luck Domingues
a.k.a }-SiRi-{

Setembro.2023
O vi e seu criador
● O programa vi (visual) foi criado por Bill Joy em 1976 para o BSD em um terminal
ADM-3A.
O vim e seu criador
● O Vim (uma contração de Vi
IMproved, em português Vi
Melhorado) é um clone do programa
editor de textos vi.
● Foi escrito por Bram Moolenaar com
o primeiro lançamento público em
1991 (15 anos depois).
● Site oficial:
https://www.moolenaar.net/
O teclado
Folhas de Dicas - Cheat Sheet
Modos do VIM
● Normal
○ Modo “padrão” do vim
○ Tecla ESC
● Edição
○ tecla i
● Comandos
○ Iniciamos com o os
dois pontos “:”
● Visual
○ Tecla v
○ CTRL + V (bloco)
Instalação , entrando e saindo
● Instalando:
○ Comando : sudo apt install vim
● Tornando o vim padrão
○ export EDITOR=vim
○ ex. visudo (usa o editor padrão do ambiente)
● Criando ou abrindo o arquivo.txt
○ vim arquivo.txt
● Sai sem salvar: <ESC> :q!
● Sai salvando: <ESC> :wq!
● Caso ocorra travamento: <ESC> CTRL+q
● <ESC> = Clicar na tecla ESC
Comandos 1/5
● vim arquivo.txt = Abre o arquivo.txt (comando)
● i = Entrar modo EDIÇÃO na posição do cursor
● a = Entrar em modo EDIÇÃO após cursor
● ESC = modo NORMAL do vim (tecla coringa)
● :w = Salva (modo COMANDO)
● :wq = Salva e sai
● ZZ = Zalva e Zai (Salva e sai) - shift + zz
● :q = Sai sem salvar
● :q! = Sai sem salvar (na força, perde modificações)
● CTRL+q = sair de travamentos
Comandos 2/5
● Setas para navegar (não uso o teclado => h,j,k,l)
● G = Vai (go) para a última linha do arquivo
● gg = Vai (go) para primeira linha do arquivo
● 1G = Vai (go) para primeira linha do arquivo
● 0 = Cursor no início da linha (zero)
● $ = Cursor no final da linha
● u = Desfazer última ação
● . = refaz o último comando (ponto)
● dd = deletar linha
● D = Deleta da posição do cursor até o final da linha
● o = adiciona uma linha em branco abaixo do cursor (edição)
● O = adiciona uma linha em branco acima do cursor (edição)
Comandos 3/5
● r = substitui o caracter na posição do cursor
● yy = copia a linha (joga no buffer)
● p = cola o conteúdo do buffer abaixo do cursor (paste)
● P = cola o conteúdo do buffer acima do cursor
● v = entra no modo visual (caractere)
● Y = copia linha
● V = entra no modo visual (linha)
● x = deleta um caractere (pra frente)
● X = deleta um caractere (para trás)
Comandos 4/5
● ESC : = entra no modo de comando
● :set number = numera as linhas
● :set nonu = retira enumeração das linhas
● :term = abre um terminal em janela
● :set relativenumber = numeração relativa de linhas
● :!comando = executa um comando no terminal e volta pro VIM
● :r!comando = executa e joga a saída do comando no arquivo
atualmente aberto no vim
Comandos 5/5
● /palavra = pesquisa (n = próxima ocorrência)
● :%s/joao/jose/gc = Substituição solicitando confirmação
● :%s/joao/jose/gn = Conta o número de ocorrências encontradas, mas
não realiza a substituição
● :1,10s/eu/tu/g = Substituição apenas no intervalo (linha 1 a 10),
sem confirmação
● Teclas PgUp e PgDn = subir e descer páginas
● CTRL + b = PgUp
● CTRL + f = PgDn
● :1,$d = deleta todas as linhas do arquivo
Versão e Ajuda
● ESC -> :ve
● ESC -> :help
● Ajuda sobre um determinado comando
○ ESC -> :help insert
● ~ (til) = linha vazia
Ajustando o .vimrc
● O arquivo de configuração do VIM é o .vimrc
● Esse arquivo fica no seu diretório home:
○ ~/.vimrc
● Cole o conteúdo do próximo slide dentro desse arquivo para ter
uma configuração legal inicial do seu VIM
Configuração básica .vimrc
set expandtab " espaços em branco em vez de tabulação, tecla TAB
set tabstop=4 " Número de espaços para tabulação
set shiftwidth=4 " Espaços usados para a operação de recuo automático
set autoindent " Indentação automática
set smartindent " Indentação inteligente para linguagens de programação
set bg=dark " esquema de cores , fundo escuro
set nowrap " desativa quebra automática de linhas
set cursorline " exibição de uma linha sob o cursor atual
set colorscheme murphy " Altera o esquema de cores para “murphy”
set number " Ativa a numeração das linhas
set termguicolors " suporte a cores GUI
set undofile " função desfazer persistente
if !isdirectory(expand("$HOME/.vim/undodir"))
call mkdir(expand("$HOME/.vim/undodir"), "p")
endif
set undodir=$HOME/.vim/undodir
Examinando mais comandos
● Os comandos em amarelo são os que mais uso
● Fazendo pesquisas no código
○ /texto = pesquisa o texto
○ ? = pesquisa reversa
○ n = vai para o próximo texto pesquisado (=next)
● Bom para pular entre funções
○ * = pesquisa a palavra sobre o cursor
○ # = pesquisa reversa da palavra sobre o cursor
Movimentação
● gg = início arquivo
● G = fim arquivo
● CTRL + b = pgup (back)
● CTRL + f = pgdown (forward)
● 100 g = vai para a linha 100 (go)
● :20 = vai para linha 20 (modo controle)
● 50% = vai para o meio do arquivo (0% - 100%)
● ( e ) = pula entre frases (faça testes no seu codigo)
● [ e ] = pula entre parágrafos
● w = salta palavras (pontuações são quebras)
● W = salta entre palavras grandes (espaços são quebras)
Movimentação
● b = salta palavras voltando (back)
● e = final da palavra
● $ = ir final de linha
● ^ = ir para início do primeiro caractere da linha atual
● 0 = ir para início da linha atual
● zz = centraliza a tela
● zb = alinha a tela para baixo
● zt = alinha a tela para cima
● M = salta para o meio da tela
● H - salta para o topo da tela (head)
● L = salta para o final (last)
Movimentação
● [m = salta entre métodos
● 3[m = salta para o 3o método
● [[ = salta entre classes para cima
● ]] = salta entre classes para baixo
● % e % = vai e volta entre os agrupadores (entre os {} () )
● v% = marca do { atual até o próximo } (modo visual)
● gi = volta para a linha que estava editando (go to insert)
● CTRL + o = volta para o último salto
● CTRL + i = avança um salto
● :help cursos-motions
Conversando com o VIM
● <quantitativo><verbo><substantivo><adjetivo>
○ dw = apague palavra
○ da} = apague ao redor das chaves
○ 3dw = 3x apague palavras
○ dt> = apague até >
○ cit = mude dentro da tag
● f = encontra o caractere naquela linha, parando nele
● t = encontra o caractere naquela linha, para antes (until)
● dt> = delete tudo até (t) o caractere >
Dobrando trechos do código (folds) - 1/2
● Esconder trechos do código (fold)
○ início função
○ v = modo visual
○ marca toda a função
○ zf
● Modo mais rápido
○ v = entra em modo de marcação
○ 150g = marca até a linha 150
○ zf
● Outro modo rápido
○ :10,20fold
Dobrando trechos do código (folds) - 2/2
● Criamos o diretório de armazenamento dos folds
○ ::! mkdir -p .vim/view
○ :mkview
○ :loadview
● Teclas rápidas
○ za = exibe e esconde o fold
○ zo = abre novamente o fold (open)
○ zc = fecha o fold (close)
○ zd = apaga o fold (delete)
○ zR = expandir todos folds
○ zM = recolhe todos os folds
○ zE = excluir todas os folds
Comandos diversos
● i = modo de edição (insert)
● y = copia
● Y = copia linha inteira
● p = cola o que foi copiado depois do cursor
● P = cola o que foi copiado antes do cursor
● u = desfaz alterações
● r = faz substituições rápidas , um caractere (replace)
● R = faz modo replace de editor (sobrescrevendo)
● t = encontra caracter para frente (para antes)
● T = encontra caracter para trás (para antes)
Comandos diversos
● J = junta as linhas
● x = deleta um caractere (pra frente)
● X = deleta voltando
● c = change
● v = entra no modo seleção
● V = modo seleção de linha
● b = volta palavra
● n = avança na pesquisa pra frente
● N = avança na pesquisa pra trás
Criando marcações e movimentando entre elas
● Criando marcação
○ ms (s = letra referência para marcação)
○ m1 (1 = marcação com numero)
● Movimentar entre as marcações
○ 's (aspas simples + marcação)
○ '1
● :marks = visualizar as marcações
● :delmarks 1 (deleta a marcação referenciada como 1)
● :delmarks a-c (deleta intervalo)
● :delmarks 1 3 (grupo por espaços)
● :delmarks! = remove todas as marcações criadas
Busca na linha
● f + caractere = busca a ocorrência na linha
● F + caractere = busca reversa da ocorrência
● Deleção com busca
○ df + caractere = deleta do cursor até o caractere
Várias telas no VIM
● CTRL + w v = divide na vertical
● CTRL + w w = se movimenta entre as telas
● CTRL + w s = divide na horizontal
● CTRL + w q = fecha a janela atual
● :e arquivo = abre o arquivo na tela atual
● ESC :q! = fecha o arquivo da tela atual
● ESC :qa! = fecha todos os arquivos
● ESC :term = abre um terminal na tela atual (exit = fecha)
● ESC :vertical :term = abre um terminal na vertical
● CTRL + w 10- = redimensiona a janela atual menos 10 linhas
● CTRL + w 10+ = redimensiona a janela atual mais 10 linhas
Buffers
● ESC :ls = exibe lista de buffers
○ 1 = número do buffer
○ %a = identifica buffer ativo
○ nome = nome do arquivo
○ onde se encontra o cursor no arquivo
● ESC :bp = vai para o buffer anterior (preview)
● ESC :bn = vai para o próximo buffer (next)
● CTRL + 6 = alterna entre os buffers ativo (%a) e o (#)
● ESC :b3 = vai para o buffer número 3
● ESC :e! = retorna para o último estado salvo (checkout)
● ESC :bd1 = deleta o buffer de número 1
Macros
● q = inicia a gravação de uma macro
● ATENÇÃO: Cada letra ou número do teclado o vim entende como um
registrador
● qa = inicia a gravação da macro , identificando ela com a letra
“a”, para poder chamá-la depois
● q = apertando novamente finaliza a gravação da macro
● @a = Executa a macro que chamamos de “a”
● @@ = Executa a última macro executada
● 10@a = Executa a macro “a” 10 vezes
● 99@@ = Executa a última macro 99 vezes
Tabs
● Abrindo vários arquivos
○ vim -p a b c
● gt = avança entre as abas
● gT = volta entre as abas
● 3gt = vai para a aba número 3
● :tabedit d = abre o arquivo de nome d em uma aba
● :qa! = fecha todas as abas
● Carregando a saída do comando em uma Tab
○ :tabnew | read !grep -Hnr 'Server'
● :tabs = lista as tabs
Mais splits e windows
● CTRL+w v = abre janela na vertical
● CTRL+w s = abre janela na horizontal
● :sp <fname> = abre arquivo em janela na horizontal
● :vs <fname> = abre arquivo em janela na vertical
● CTRL+w q = fecha janela
outros…
● CTRL+x CTRL+n = autocompletar (usando palavras dentro do arquivo
atual)
● CTRL+x CTRL+l = autocompletar a linha inteira
● CTRL+x CTRL+f = autocompletar sistema de arquivos (insert antes)
● Usando xargs
○ :%!xargs
● :ls = lista os buffers abertos
● Percorre todo o arquivo e vai encodando em base64 cada linha
○ :%!xargs -I{} bash -c 'echo {} | base64'
REFERÊNCIAS
● Geofisicando - Curso de VIM
● Tom Hudson @tomnomnom chats with STÖK - VIM tutorial: linux terminal
tools for bug bounty pentest and redteams
● Tom Hudson - Bug Bounties With Bash - VirSecCon2020 Talk
● Livros: https://iccf-holland.org/vim_books.html
● https://debxp.org/teclas-e-comandos-essenciais-do-vim/
● https://quickref.me/vim.html
● https://openvim.com/
● https://vimdoc.sourceforge.net/htmldoc/
● https://learnbyexample.gitbooks.io/vim-reference/content/Command_Line
_mode.html
● https://paikialog.wordpress.com/2010/11/10/vim-graphical-cheet-sheet/
Obrigado !

Você também pode gostar

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy