Deve ser trivial e pode até ajudar, mas não consigo descobrir como navegá-lo. Como recuo várias linhas rapidamente no vi?
vim
editor
indentation
vi
Allain Lalonde
fonte
fonte
shiftwidth
configuração para saber como mudar isso.Esta resposta resume as outras respostas e comentários desta pergunta e adiciona informações extras com base na documentação do Vim e no wiki do Vim . Por questões de concisão, esta resposta não distingue entre comandos específicos do Vi e do Vim.
Nos comandos abaixo, "recuar" significa "recuar linhas de acordo com as configurações de recuo ".
shiftwidth
é a variável principal que controla o recuo.Comandos Gerais
Você pode substituir
{
por}
ouB
, por exemplo,=iB
é um comando de indentação de bloco válido. Dê uma olhada em "Recuar um bloco de código" para obter um bom exemplo para experimentar esses comandos.Lembre-se também que
, para que os comandos de indentação possam ser repetidos de maneira fácil e conveniente.
Re-recuando arquivos completos
Outra situação comum está exigindo que o recuo seja corrigido em um arquivo de origem:
Você pode estender essa ideia para vários arquivos:
Ou vários buffers:
No modo visual
No modo de inserção
Estes comandos se aplicam à linha atual:
Comandos Ex
Isso é útil quando você deseja recuar um intervalo específico de linhas, sem mover o cursor.
Recuar usando marcadores
Outra abordagem é através de marcadores :
... mova o cursor para o local final
Variáveis que governam o recuo
Você pode configurá-los no seu arquivo .vimrc .
O Vim possui recuo inteligente baseado no tipo de arquivo. Tente adicionar isso ao seu .vimrc:
Referências
:help =
fonte
>}
. Obrigado por muito tempoUma grande seleção seria:
É realmente rápido, e tudo fica recuado ;-)
fonte
gg=G
apenas coloca todas as linhas a partir da posição 1. Todos os espaços em branco foram removidos. Existe algo mais específico para XML?set cindent
deve estar em vimrc ou deve ser executado:set cindent
antes de executar esse comandoAlém disso, tente isso para C-recuar recuo. Faça
:help =
para obter mais informações:={
Isso indentará automaticamente o bloco de código atual em que você está.
Ou apenas:
==
para recuar automaticamente a linha atual.
fonte
Teclas pressionadas para pessoas mais visuais:
Entre no modo de comando:
Escape
Mova-se para o início da área para recuar:
hjkl↑↓←→
Inicie um bloco:
v
Mova-se para o final da área para recuar:
hjkl↑↓←→
(Opcional) Digite o número de níveis de recuo que você deseja
0..9
Execute o recuo no bloco:
>
fonte
O mestre de todos os comandos é
gg=G
Isso recua o arquivo inteiro!
E abaixo estão alguns dos comandos simples e elegantes usados para recuar linhas rapidamente no Vim ou gVim.
Para recuar a linha atual
==
Para recuar todas as linhas abaixo da linha atual
=G
Para recuar
n
linhas abaixo da linha atualn==
Por exemplo, para recuar 4 linhas abaixo da linha atual
4==
Para recuar um bloco de código, vá para um dos chavetas e use o comando
=%
Estes são os comandos mais simples, porém poderosos, para recuar várias linhas.
fonte
vim
, nãovi
.vim
que foi vinculado comovi
?Além da resposta já dada e aceita, também é possível colocar um marcador e depois recuar tudo, desde o cursor atual até o marcador.
Portanto, insira
ma
onde você quer o topo do bloco recuado, mova o cursor para baixo o quanto precisar e digite>'a
(observe que "a
" pode ser substituído por qualquer nome de marcador válido). Às vezes é mais fácil que5>>
ouvjjj>
.fonte
Ir para o início do texto
fonte
Além das soluções oferecidas, gosto de fazer um parágrafo de cada vez com
>}
fonte
Quando você seleciona um bloco e usa >para recuar, ele recua e volta ao modo normal. Eu tenho isso no meu arquivo .vimrc:
Permite recuar sua seleção quantas vezes quiser.
fonte
Suponha que você use 2 espaços para recuar seu código. Tipo:
Então:
Você entendeu a ideia.
( As linhas vazias não serão recuadas, o que eu acho meio legal. )
Encontrei a resposta na documentação do (g) vim para indentar blocos:
:'<,'>le4
inserir os espaços. Obrigado!:set number
para alternar os números de linha (eles estão desativados por padrão) ou colocarset number
no seu vimrc.vim-prettier
vez do mecanismo de recuo padrão). De>
outro modo, o uso de um modo real permitirá a formatação feita por Prettier.A beleza da interface do usuário do Vim é a sua consistência. Os comandos de edição são compostos pelo comando e um cursor se move. Os movimentos do cursor são sempre os mesmos:
'
.Portanto, para usar o vim, você precisa aprender a mover o cursor e lembrar de um repertório de comandos como, por exemplo, >recuar (e <"superar").
Portanto, para recuar as linhas da posição do cursor até a parte superior da tela >H, >Grecue até a parte inferior do arquivo.
Se, em vez de digitar >H, você digitar dH, estará excluindo o mesmo bloco de linhas, cHpara substituí-lo, etc.
Alguns movimentos do cursor se encaixam melhor com comandos específicos. Em particular, o %comando é útil para recuar todo um bloco HTML ou XML. Se o arquivo tiver a sintaxe destacada (
:syn on
), a configuração do cursor no texto de uma tag (como, no "i" de <div> e a inserção >%irá recuar até a tag de fechamento </div>.É assim que o Vim funciona: é preciso lembrar apenas os movimentos do cursor e os comandos, e como misturá-los. Portanto, minha resposta a essa pergunta seria "vá para uma extremidade do bloco de linhas que você deseja indentar e digite o >comando e um movimento para a outra extremidade do bloco" se indent for interpretado como deslocamento das linhas, =se indent é interpretado como em impressão bonita.
fonte
Faça isso:
E adicione esta linha:
Isso é apenas para um arquivo cpp. Você pode fazer isso para outro tipo de arquivo, também apenas modificando o tipo de arquivo ...
fonte
Você pode usar o
norm i
comando para inserir o texto fornecido no início da linha. Para inserir 10 espaços antes das linhas 2-10:Lembre-se de que deve haver um caractere de espaço no final do comando - este será o caractere que queremos inserir. Também podemos recuar uma linha com qualquer outro texto, por exemplo, para recuar todas as linhas de um arquivo com cinco caracteres sublinhados:
Ou algo ainda mais chique:
Um exemplo mais prático é comentar o código Bash / Python / etc com # character:
Para reentrar o uso em xvez de i. Por exemplo, para remover os 5 primeiros caracteres de cada linha:
fonte
Uma maneira rápida de fazer isso usando
VISUAL MODE
o mesmo processo que comentar um bloco de código.Isso é útil se você preferir não alterar suas diretivas
shiftwidth
ou usá-set
las, e é flexível o suficiente para trabalhar com TABS ou SPACES ou qualquer outro caractere.-- VISUAL MODE --
:
para alternar para o promptSubstituindo por 3 espaços à esquerda:
:'<,'>s/^/ /g
Ou substituindo pelas guias principais:
:'<,'>s/^/\t/g
Breve explicação:
'<,'>
- Dentro da faixa visualmente selecionadas/^/ /g
- Insira 3 espaços no início de cada linha em todo o intervalo(ou)
s/^/\t/g
- InsiraTab
no início de cada linha dentro de toda a faixafonte
>}
ou>{
recuar da linha atual até o próximo parágrafo<}
ou<{
mesmo travessãofonte
Eu gosto de marcar o texto para indentação:
PS: você pode usar a :'a,'ztécnica para marcar um intervalo para qualquer operação (d, y, s ///, etc.) em que possa usar linhas, números ou %.
fonte
:help left
Em
ex mode
você pode usar:left
ou:le
alinhar linhas uma quantidade especificada. Especificamente,:left
a esquerda alinhará as linhas no [intervalo]. Define o recuo nas linhas para [recuo] (padrão 0).:%le3
ou:%le 3
ou:%left3
ou:%left 3
alinhará o arquivo inteiro preenchendo três espaços.:5,7 le 3
alinhará as linhas 5 a 7 preenchendo-as com três espaços.:le
sem nenhum valor ou:le 0
ficará alinhado com um preenchimento de 0.Isso funciona no Vim e no gVim.
fonte
:'<,'>le4
inserir os espaços. Obrigado!Para mim, a solução MacVim (Visual) foi, selecione com o mouse e pressione ">", mas depois de colocar as seguintes linhas em "~ / .vimrc", pois gosto de espaços em vez de guias:
Também é útil poder chamar o MacVim a partir da linha de comando (Terminal.app), portanto, como eu tenho o seguinte diretório auxiliar "~ / bin", onde coloco um script chamado "macvim":
E, claro, em "~ / .bashrc":
O MacPorts mexe muito com "~ / .profile", portanto a variável de ambiente PATH pode ficar bastante longa.
fonte
5==
recuará cinco linhas da posição atual do cursor.Então você pode digitar qualquer número antes
==
. Indentará o número de linhas. Este está no modo de comando.gg=G
recuará o arquivo inteiro de cima para baixo.fonte
Como não encontrei um método usado nos comentários, vou compartilhá-lo (acho que apenas o Vim):
Isso é útil quando você não deseja alterar as configurações de recuo / guia
vimrc
ou lembrar-se de alterá-lo durante a edição.Para descontrair, uso o mesmo bloco Ctrl+ Vpara selecionar espaços e excluí-lo com D.
fonte
Não sei por que é tão difícil encontrar uma resposta simples como esta ...
Eu mesmo tive que lutar muito para saber disso. É muito simples:
.vimrc
arquivo no diretório inicial.Adicione esta linha
no arquivo em que deseja recuar corretamente.
No modo normal / comando, digite
fonte
Por exemplo,
Aumente o símbolo '>' para mais guias.
Por exemplo,
fonte
:set number
para alternar os números de linha (eles estão desativados por padrão) ou colocarset number
no seu vimrc.Usando muito o Python, me vejo precisando frequentemente de mudar os blocos em mais de um recuo. Você pode fazer isso usando qualquer um dos métodos de seleção de bloco e, em seguida, basta inserir o número de indentações que deseja pular logo antes do
>
Por exemplo,
V5j3>
irá recuar cinco linhas três vezes - que são 12 espaços se você usar quatro espaços para recuos.fonte
Para recuar todas as linhas de um tipo de arquivo Esce , em seguida G=gg,.
fonte
Como recuar o código destacado no vi imediatamente por vários espaços:
Opção 1: Recue um bloco de código no vi a três espaços com o modo Visual Block:
Selecione o bloco de código que deseja recuar. Faça isso usando Ctrl+Vo modo normal e com a seta para baixo para selecionar o texto. Enquanto estiver selecionado, digite
:
para dar um comando ao bloco de texto selecionado.O seguinte aparecerá na linha de comando:
:'<,'>
Para definir o recuo em três espaços, digite
le 3
e pressione enter. Isto é o que aparece::'<,'>le 3
O texto selecionado é imediatamente recuado para três espaços.
Opção 2: indentar um bloco de código no vi a três espaços com o modo Visual Line:
Esteja no modo normal e pressione as seguintes teclas:
Interpretação do que você fez:
V
significa começar a selecionar o texto.jjjj
setas abaixo de quatro linhas, destacando quatro linhas.:
diz ao vi que você inserirá uma instrução para o texto destacado.le 3
significa recuar o texto destacado três linhas.O código selecionado é imediatamente aumentado ou diminuído para recuo de três espaços.
Opção 3: use o modo Visual Block e o modo de inserção especial para aumentar o recuo:
No modo normal, pressione as seguintes teclas:
Ctrl+V
(pressione a barra de espaço cinco vezes)
Esc Shift+i
Todo o texto destacado é recuado cinco espaços adicionais.
fonte
Eu uso a seleção visual em modo de bloco:
I
( Shift+ I) para entrar no modo de inserção.Este não é um uni-tasker. Funciona:
c
vez deI
).fonte
vim-prettier
vez do mecanismo de recuo padrão). De>
outro modo, o uso de um modo real permitirá a formatação feita por Prettier.Para um bloco de código, {}: =+%
Para uma linha selecionada: Shift+ vselecione usando as teclas de seta para cima / para baixo e pressione =.
Para o arquivo inteiro: gg+ =+G
Nota: 'gg' significa ir para a linha 1, '=' é o comando indent e 'G' move o cursor para o final do arquivo .
fonte
Para recuar todo o arquivo por quatro:
fonte
Fonte: https://www.fir3net.com/UNIX/General/how-do-i-tab-multiple-lines-within-vi.html
fonte