Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

(neo)vim

atalhos:

edição:

  • >> ou << no modo normal: altera recuo da linha
  • A no modo normal: atalho para $a
  • a no modo normal: entrar no modo insert do lado direito do caractere
  • C,S ou cc no modo normal: exclue o conteúdo da linha atual e entra no modo normal
  • ci" no modo normal: na linha onde está o cursor, apaga o conteúdo que estiver entre aspas duplas, coloca o curso entre as aspas e entre no modo insert onde está o cursor
  • cit no modo normal: na linha onde está o cursor em um documento xml ou html, deleta o valor de uma tag e entra no modo insert
  • ctrla no modo normal: incrementa um numero onde o cursor esta localizado
  • ctrlx no modo normal: decrementa um numero onde o cursor esta localizado
  • ctrolr no modo normal: refaz as mudanças desfeitas pelo comando u
  • D no modo normal: apaga que estiver entre o cursor e o ultimo caractereda linha, atalho para dg_
  • gctrola no modo visual: incrementa uma seleção de numeros de forma sequencial
  • gctrolx no modo visual: decrementa uma seleção de numeros de forma sequencial
  • gg=G no modo normal: corrigir indentação do codigo inteiro
  • gUiw no modo normal: mudar letras das palavras para maiusculas
  • guiw no modo normal: mudar letras das palavras para minusculas
  • gUU no modo normal: mudar todas as palavras da linha para maiusculas
  • guu no modo normal: mudar todas as palavras da linha para minusculas
  • g~iw no modo normal: alterna entre maiusculas e minusculas as letras das palavras
  • I no modo normal: atalho para ^i
  • J no modo normal: junta a linha atual com a proxima linha
  • o no modo normal: insere uma linha abaixo, move o cursos para nova linha e entra no modo insert
  • O no modo normal: insere uma linha acima, move o cursos para nova linha e entra no modo insert
  • R no modo normal: entra no modo replace
  • s no modo normal: apaga o caractere sobre o cursor e entra no modo insert
  • u no modo normal: desfaz as mudanças
  • V no modo normal: modo visual de linha
  • X no modo normal: apaga o caractere que está a esquerda do cursor
  • x no modo normal: apaga que estiver sub o cursor
  • ~ no modo normal: altera o caractere sub o cursor para maiusculo ou minusculo

atalhos do modo insert:

  • ctrold no modo insert: recue a indentação da linha atual
  • ctrolh no modo insert: excluir o caractere que está a esquerda do cursor
  • ctrolo no modo insert: alterna para o modo normal e após alguma ação, automaticamente volta para o modo insert
  • ctrolRreg no modo insert: permite adicionar ao buffer o conteúdo do registro especificado em reg
  • ctrolt no modo insert: aumente a indentação da linha atual
  • ctrolu no modo insert: exclui tudo que estiver antes do cursor
  • ctrolw no modo insert: excluir a palavra que está a esquerda do cursor
  • ctrolxctrole no modo insert: mover a tela para baixo
  • ctrolxctroly no modo insert: mover a tela para cima

movimento:

  • $ no modo normal: ir para a ultima coluna da linha (incluindo o caractere de quebra de linha)
  • % no modo normal: salta para o proximo parêntese, colchete, chave correpondente
  • + no modo normal: atalho para j^
  • 0 ou | no modo normal: ir para a primeira coluna da linha
  • ^ no modo normal: ir para o primeiro caractere da linha
  • b no modo normal: saltar retrocedendo palavras
  • ctrold no modo normal: mover metade da janela para baixo
  • ctrole no modo normal: mover janela uma linha para baixo
  • ctroli no modo normal: saltar para a proxima posição do jump list
  • ctrolo ou g; no modo normal: saltar para a posição do jump list
  • ctrolu no modo normal: mover metade da janela para cima
  • ctroly no modo normal: mover janela uma linha para cima
  • e no modo normal: saltar palavras mantendo o cursor no ultimo caractere
  • F{caractere} no modo normal: faz a mesma coisa do atalho f porém de forma reversa, permite usar tambem ; e ,
  • f{caractere} no modo normal: saltar para a proxima ocorrencia do caractere e deixar o cursor sobre o caractere encontado
  • g$ no modo normal: ir para o final de uma linha quebrada
  • g, no modo normal: pular para a posiçao anterior da lista de alterações
  • g; no modo normal: pular para a proxima posiçao da lista de alterações
  • g_ no modo normal: ir para o ultimo caractere da linha
  • g^ ou g0 no modo normal: ir para o começo de uma linha quebrada
  • ge no modo normal: saltar retrocedendo palavras mantendo o cursor no ultimo caractere
  • gj no modo normal: semelhante ao atalho j, a difereneça é que este consegue se movimentar em linhas quebradas
  • gk no modo normal: semelhante ao atalho k, a difereneça é que este consegue se movimentar em linhas quebradas
  • H no modo normal: mover cursor para o topo da janela
  • L no modo normal: mover cursor para a parte inferior da janela
  • M no modo normal: mover cursor para o centro da janela
  • T{caractere} no modo normal: faz a mesma coisa do atalho T porém de forma reversa, permite usar tambem ; e ,
  • t{caractere} no modo normal: saltar para a proxima ocorrencia do caractere e deixar o cursor no lado esquerdo do caractere encontado, permite usar tambem ; e ,
  • w no modo normal: saltar palavras
  • zb no modo normal: mover a janela para que a linha sob o cursor fique na parte inferior da janela
  • zh no modo normal: mover a janela para a esquerda
  • zl no modo normal: mover a janela para a direita
  • zt no modo normal: mover a janela para que a linha sob o cursor fique no topo da janela
  • zz no modo normal: mover a janela para que a linha sob o cursor fique no centro da janela

gerenciamento de janelas e guias:

  • ctrolw + no modo normal: almenta a altura da janela
  • ctrolw - no modo normal: diminue a altura da janela
  • ctrolw < no modo normal: diminue a largura da janela
  • ctrolw = no modo normal: corrige o tamanho de todas as janelas
  • ctrolw > no modo normal: aumenta a largura da janela
  • ctrolw c no modo normal: fecha uma janela
  • ctrolw r no modo normal: troca a posição das janelas
  • ctrolw {H,J,K,L} no modo normal: move a janela em destaque para um dos cantos da tela
  • gT no modo normal: alterna para a guia anterior
  • gt no modo normal: alterna para a proxima guia

outros atalhos:

  • "*p no modo normal: cola a partir da area de transferencia
  • "*y no modo normal: copia para a area de transferencia
  • "a no modo normal: digitar " representa uma entrada de registro e a letra seria o slot do registro, pode usar outra letra alem de a, apos isso basta digitar algum comando de corte
  • # no modo normal: pesquisa para tras a palavra que esta sob o cursor
  • @: no modo normal: repete o ultimo comando executado
  • * no modo normal: pesquisa a palavra que esta sob o cursor
  • `< no modo normal: ir para o inicio da ultima seleção
  • `> no modo normal: ir para o final da ultima seleção
  • `[ no modo normal: ir para o começo da ultimo trecho copiado
  • `] no modo normal: ir para o final da ultimo trecho copiado
  • cgn no modo normal: ao buscar uma palavra no vim usando o comando /palavra, digitar a combinação de comandos vai deletar a palavra, voce digita algo e muda para o modo normal, em seguida "atualiza" as outras ocorrencias da palavra apertando ., para pular para proxima ocorrencia sem aplicar as alterações so apertar n
  • controlf no modo comando: abre uma janela dos comandos executados no modo comando e permite usar os atalhos do modo normal nessa janela, e quando terminar basta apertar enter sobre o comando digitado
  • controlr = no modo insert: permite escrever expressões matematicas para o vim calcular e o resultado será inserido no lugar do cursor
  • ctrolv no modo normal: entra no modo visual com seleção em modo bloco
  • esc ou ctrolc ou ctrol[ em qualquer outro modo: ir para o modo normal
  • g8 no modo normal: mostra a o valor do caractere UTF-8
  • g* no modo normal: pesquisa a palavra que esta sob o cursor com combinacao parcial
  • ga no modo normal: inspeciona o caractere sob o cursor, mostra informações como codigo decimal, hexadecimal e octal do caractere
  • gcontrolh no modo normal: entra no modo select block
  • gctrolg no modo normal: mostra informações sobre o documento como quantidade de linhas, palavras e tamanho em bytes, tambem mostra o numero da linha e coluna onde está o cursor
  • gf no modo normal: abrir o arquivo ou caminho que está sob o cursor
  • gh no modo normal: entra no modo select
  • gH no modo normal: entra no modo select line
  • gr{caractere} no modo normal: substituir o caractere sob o cursor pelo caractere indicado no atalho
  • gv no modo normal: seleciona novamente a ultima seleção
  • gx no modo normal: abrir no navegador web a url sob o cursor
  • o no modo visual: troca a posição do cursor para o final da seleção ou o começo da seleção
  • q/ ou q? no modo normal: mostra o historico de pesquisa
  • vip no modo normal: seleciona um paragráfo, paragráfos são blocos de linhas delimitados por linhas em branco
  • zc no modo normal: fecha uma dobra
  • zf{movimento} no modo normal: permite criar uma dobra a partir de um movimento
  • zM no modo normal: fecha todas as dobras
  • zo no modo normal: abre uma dobra
  • ZQ no modo normal: sai sem salvar alterações, atalho para :q!
  • zR no modo normal: abre todas as dobras
  • ZZ no modo normal: salva e sai, atalho para :wq

modo comando:

  • controlb no modo comando: move o cursor para o começo da linha
  • controle no modo comando: move o cursor para o fim da linha
  • controlf no modo comando: abre uma janela de linha de comando, onde você tem qualquer poder de edição do Vim em suas mãos
  • controlh no modo comando: remove um caractere que está no lado esquerdo do cursor
  • controlu no modo comando: apaga todos os caracteres que estão entre o cursor e o começo da linha
  • controlw no modo comando: remove uma palavra que está no lado esquerdo do ursor
  • q: no modo normal: abre uma janela dos comandos executados no modo comando e permite usar os atalhos do modo normal nessa janela, e quando terminar basta apertar enter sobre o comando digitado

registros:

tipos de registros:

  • registro sem nome ("): Contém o último conteúdo excluído, alterado ou retirado, mesmo se um registro foi especificado.

  • registros numerados (0-9):

    • 0: contém o ultimo conteúdo arrancado

    • 1-9: é uma pilha que contém o ultimo conteúdo que foi excluido ou alterado

      cada vez que alterar ou exluir um conteúdo ele sera adicionado ao registro 1, quando outro conteúdo é adicionado ao registro 1, o que havia nele é transferido para o proximo registro, que neste caso é o 2, o conteúdo vai saltando de um registro para outro até chegar no registro 9, quando outro conteúdo for movido para o registro 9, o que havia antes nele é perdido

  • registro de exclusão: Contém qualquer conteúdo excluído ou alterado menor que uma linha

Nenhum desses registros mensionados acima é escrito se você especificou um antes com o pressionamento de tecla "

  • registros nomeados (a-z):
    • o editor só vai sobrescrever se esse tipo de registro for especificado
    • colocar a letra em maiscula vai anexar o conteúdo ao registro, em vez de sobrescrever
  • registro de buraco negro (_): tudo que for escrito lá sera perdido
  • registro do ultimo padrão de pesquisa (/): contem o ultimo conteúdo pesquisado

comandos:

  • :!column -t: alinha o texto verticalmente usando a ferramenta column
  • :!comando_externo: redireciona o buffer para um programa externo e retorna a saida para o buffer atual
  • :%bd | e# | bd#: fecha todos os buffers menos o atual
  • :%s/pattern/"&"/g: comando de substituição onde & assume o valor valor de "pattern"
  • :%s/pattern/replace/g: substituir "pattern" por "replace" no arquivo inteiro
  • :as: inspeciona o caractere sob o cursor, mostra informações como codigo decimal, hexadecimal e octal do caractere
  • :b N: permite alternar para o buffer especificado em N, exemplo: b 2
  • :buffers ou :ls: mostra a lista de buffers abertos
  • :changes: alinha o texto verticalmente usando a ferramenta column
  • :clearjumps: limpar lista de saltos
  • :g!/string/d ou :v/string/d: apaga todas as linhas que não contenham "string"
  • :g/string/d: apaga todas as linhas que contenham "string", cada linha deletada é antes copiada para o registro padrão, é possivel especificar o registtro de buraco negro para otimizar o processo: :g/string/d _
  • :g/string/normal Icasa: permite usar o comando normal em todas as linhas onde contém o padrão especificado
  • :help digraph-table: mostra a lista de digrafos
  • :jumps: mostra uma lista com todos os saltos
  • :mksession nome_do_arquivo.vim: salva o estado atual da sessão em um arquivo, este comando possui uma versão abreviada que é mks nome_do_arquivo.vim, caso precise salvar a sessão no mesmo arquivo, o comando será :mksession! nome_do_arquivo.vim
  • :nohlsearch ou noh: limpa o destaque de pesquisa
  • :put =range(x, y): criar sequencia de numeros de x ate y
  • :retab: transforma tabulações em caracteres de espaço
  • :s/pattern/replace/g: substituir "pattern" por "replace" na linha onde esta o cursor
  • :set colorcolumn=n ou :set cc=n: destaca a coluna n onde n é o numero da coluna, é possivel destacar mais de uma coluna ao mesmo tempo definindo mais de um valor separado por virgula
  • :set hlsearch: ativa o destaque de pesquisa
  • :set ignorecase: todas as pesquisas nao farao distincao entre letras maiusculas e minusculas
  • :set nowrap: faz com que o editor apresente o codigo sem quebrar linhas longas, fazendo com que seja necessario mover a tela para os lados
  • :set nrformats=bin,octal,hex,alpha: definir o tipo de suporte a incremento e decremento
  • :set nrformats?: verificar o tipo de suporte a incremento e decremento
  • :set rightleft: altera a ordem das colulas, deixa o texto invertido, execute novamente para o estado anterior
  • :set scrollbind: faz com que cada janela do vim role simultaneamente
  • :sort i: ordena as linhas selecionadas ignorando case-sensitive
  • :sort n: ordena as linhas selecionadas seguindo a ordem alfanumérica
  • :sort u: ordena as linhas selecionadas e remove duplicatas
  • :sort!: ordena de forma inversa as linhas selecionadas
  • :sort: ordena as linhas selecionadas
  • :source nome_do_arquivo.vim: restaura a sessão a partir de um arquivo, tbm pode ser usado pra recarregar o arquivo de configuração do vim
  • :tabclose ou :tac: fecha uma nova guia
  • :tabnew ou :tabe: abre uma nova guia
  • :tabonly ou :tao: fecha todas as guias menos a atual
  • :virtualedit=all: permite o cursor percorrer livremente pela tela, isso é conveniente ao usar ao fazer uma seleção em bloco
  • :w !diff % -: permite visualisar um diff do arquivo editado no buffer antes de salva-lo
  • :w >> arquito_de_texto.txt: ao selecionar linhas, permite anexar a seleção em um outro arquivo
  • :w arquito_de_texto.txt: ao selecionar linhas, permite salvar a seleção em um outro arquivo
  • :x: atalho para :wq

comandos da cli:

  • nvim --noplugin -u init.lua: iniciar o nvim usando um outro arquivo de configuração definido na linha de comando
  • nvim --noplugin notas.md: iniciar o nvim e abrir um arquivo sem carregar as configurações definida no init.lua
  • vim -S nome_do_arquivo.vim: restaura a sessão a partir de um arquivo

Truques:

pesquisar em uma seleção visual

faça a seleção e em seguida vá para o modo normal (ESC) e depois digite /\%Vsua_pesquisa

substituição de palavras em todos os arquivos

digitar no modo comando :args ** para adicionar todos os arquivos em um direitorio de forma recursiva e por fim executar o comando de substituição em todos os arquivos usando o comando :argdo %s/palavra_antiga/palavra_nova/g

o comando argdo vai executar o subcomando em cada arquivo presente no args do vim

execução de comandos do modo normal em varias linhas de uma vez

exemplo: selecione linhas usando modo visual e execute :norm 0i# para adicionar # no começo de cada linha, dica, pra inserir o ESC nesse modo, basta executar os atalhos ctrolvESC

macros:

é um recurso que permite gravar uma sequencia de comandos e salvar para ser usado de novo qantas vezes por necessario

sintaxe:

  • para gravar uma macro: q<reg><comandos>q
  • para executar uma macro: @<reg>

como a macro é gravada nos registros, é possivel colar uma macro usandop e depois copiando para o mesmo registro usando algum movimento de corte

regex do vim

Aviso, para ativar o modo "magico" (onde alguns caracteres especificos são interpretados como metacaracteres), deve inserir \v antes da expressão

exemplo: /(casa)|(cadeira) => /\v(casa)|(cadeira)

caracteres especiais do vim

  • \d: mesma coisa de [0-9]
  • \D: mesma coisa de [^0-9]
  • \L: mesma coisa de [^a-z]
  • \l: mesma coisa de [a-z]
  • \S: corresponde a qualquer caractere menos o caractere de espaço
  • \s: corresponde a um caractere de espaço
  • \U: mesma coisa de [^A-Z]
  • \u: mesma coisa de [A-Z]
  • \W: mesma coisa de [^a-zA-Z0-9_]
  • \w: mesma coisa de [a-zA-Z0-9_]
  • \x: mesma coisa de [0-9A-F], padrão que corresponde a um numero hexadecimal
  • \X: mesma coisa de [^0-9A-F]
  • \X: mesma coisa de [^0-9A-F]

quantificadores gulosos e preguiçosos

na string I say, "I use Vim". You say, "I don't use Vim". Uh-oh., se usarmos ".+" como padrão de busca, vai retornar "I use Vim". You say, "I don't use Vim", esse é o padrão guloso. na mesma string, se usarmos ".{-}", como padrão de busca, vai retornar "I use Vim"

delimitadores de palavras

na string *Without further ado, I do like donut very much

  • <do vai retornar do e donut
  • do> vai retornar ado e do
  • <do> so vai retornar do