Comandos simples do Vim que você gostaria de conhecer antes [fechado]


378

Estou aprendendo novos comandos no Vim o tempo todo, mas tenho certeza de que todos aprendem algo novo de vez em quando. Eu aprendi recentemente sobre isso:

zz, zt, zb - posiciona o cursor no meio, na parte superior ou na parte inferior da tela

Quais são outros comandos úteis ou elegantes que você gostaria de aprender há séculos?


46
tecnicamente, zz, zt, zb estão posicionando a tela com o cursor no meio / em cima / em baixo. para posicionar o cursor no meio / em cima / em baixo, use M, H ou L. Ambos os conjuntos de comandos são úteis!
Peter

11
Ler este post meses ou um ano atrás me ajudou todos os dias. dap é algo que eu uso para mover parágrafos várias vezes por hora, graças a este post.
Funkodebat

33
Eu nunca peguei tantos truques em uma página que foi marcada como não construtiva :) Obrigado a todos.
Tasos Bitsios

Respostas:


315

Eu realmente gostaria de saber que você pode usar em CtrlCvez de Escsair do modo de inserção. Esse foi um aumento real de produtividade para mim.


93
Eu remapeei meu Caps-Lock para um Esc. Isso é tanto mais fácil do que o Esc normal e Ctrl-C
Kasper

114
Puta merda. 15 anos de vi e eu nunca soube que isso ...
Chris K

31
outro popular foi usar 'jj' para ESC. Eu gosto dessa abordagem até agora. :mapa! jj <ESC>
claytron

27
Você também pode usar CTRL- [(que eu gosto porque são os dois dedinhos ... apenas uma pequena rotação das duas mãos).
Jason Baixo

42
use 'jk' como uma variante do @ claytron's. se você, sem saber, já está no modo INSERT, jk deixa você onde estava, para que você possa acessá-lo sempre (crédito: outra pessoa ... não é minha ideia).
Kyle

197

O truque mais recente "uau" que eu aprendi é um método de executar pesquisas e substituições complicadas. Muitas vezes, no passado, tive um regexp muito complicado para fazer substituições e não deu certo. Há um caminho melhor:

:set incsearch             " I have this in .vimrc
/my complicated regexp     " Highlighted as you enter characters
:%s//replace with this/    " You don't have to type it again

O "truque" aqui (por falta de uma palavra melhor) é a maneira pela qual você pode usar a pesquisa para criar o regexp (e 'incsearch' o destaca ao inserir caracteres) e, em seguida, usar um padrão vazio na substituição: o vazio o padrão é o último padrão de pesquisa.

Exemplo:

/blue\(\d\+\)
:%s//red\1/

Equivalente a:

:%s/blue\(\d\+\)/red\1/

Vejo:

:help 'incsearch'
:help :substitute

11
uau ... Eu estive procurando algo parecido com isto
figurassa:

11
Sim, eu gostaria de saber sobre isso mais cedo. Mas, novamente, é o que digo sobre tudo o que aprendo que é novo no vim.
Robert Massaioli

26
Para quem realmente ama isso, tente pressionar <Ctrl-R>/para inserir a última consulta de pesquisa. (Consulte :help i_CTRL-R) Realmente útil para semelhante ao acima, mas você deseja capturar parte dos resultados da pesquisa. (assim: %s:/\\([fF]rank\\) and mary/marie and \1/g)
idbrii

4
:%s//...também funciona com *(pesquisar palavra sob o cursor). Um plug-in chamado visual-star-search estende a funcionalidade de *para corresponder ao texto inteiro de uma seleção visual, o que facilita a pesquisa e a substituição do texto selecionado, por exemplo v3e(selecione visualmente 3 palavras) *(pesquise) e :%s//replacement/g(substitua todas as ocorrências por " substituição"). Eu uso isso tantas vezes que tenho um mapeamento para o comando global substituição: :nmap <Leader>s :%s///g<left><left>.
Patrick Oscity

11
@idbrii já que as pessoas lendo pode ser Vim noobs (me), o %s:deve ser :%s, e para o meu sistema, eu necessários \(\)em vez de\\(\\)
Charlie Gorichanaz

155

Eu criei esta referência do meu comando mais usado para um amigo meu:

select                                   v
select row(s)                            SHIFT + v
select blocks (columns)                  CTRL  + v
indent selected text                     >
unindent selected text                   <
list buffers                             :ls
open buffer                              :bN (N = buffer number)
print                                    :hardcopy
open a file                              :e /path/to/file.txt
                                         :e C:\Path\To\File.txt
sort selected rows                       :sort
search for word under cursor             *
open file under cursor                   gf
  (absolute path or relative)
format selected code                     =
select contents of entire file           ggVG
convert selected text to uppercase       U
convert selected text to lowercase       u
invert case of selected text             ~
convert tabs to spaces                   :retab
start recording a macro                  qX (X = key to assign macro to)
stop recording a macro                   q
playback macro                           @X (X = key macro was assigned to)
replay previously played macro *         @@
auto-complete a word you are typing **   CTRL + n
bookmark current place in file           mX (X = key to assign bookmark to)
jump to bookmark                         `X (X = key bookmark was assigned to
                                             ` = back tick/tilde key)
show all bookmarks                       :marks
delete a bookmark                        :delm X (X = key bookmark to delete)
delete all bookmarks                     :delm!
split screen horizontally                :split
split screen vertically                  :vsplit
navigating split screens                 CTRL + w + j = move down a screen
                                         CTRL + w + k = move up a screen
                                         CTRL + w + h = move left a screen
                                         CTRL + w + l = move right a screen
close all other split screens            :only

*  - As with other commands in vi, you can playback a macro any number of times.
     The following command would playback the macro assigned to the key `w' 100
     times: 100@w

** - Vim uses words that exist in your current buffer and any other buffer you may have open for auto-complete suggestions.

Você lista "~ X" para ir para a marca com o nome X. Isso não funciona para mim - em vez disso, uso "'X" (aspas simples).

Uau. Você está absolutamente certo. Quando eu estava digitando o guia, acho que meus olhos só viram o til e brilharam sobre o tiquetaque traseiro. Vou atualizar em conformidade. Obrigado pela atenção.
22910 brian newman

5
essa lista é legal, mas eu realmente quero saber como você desenhou essa tabela? com o VIM? qual plugin? Estou procurando um atualmente.
Kent

6
Eu usei o VIM, mas nenhum plugin. Contudo; o uso do recurso de seleção de bloco tornou relativamente fácil. Que bom que você encontrou a lista útil! ~ brian
brian newman

11
Ctrl-Q para seleção de bloco é uma especificidade do mswin.vim que permite colar o CTRL-V. A maioria dos usuários do vim consideraria esse mal e desativaria o mswin.vim. "+ P ou Ctrl-R + não é tão difícil digitar para inserir conteúdo da área.
Benoit

144

gi muda para o modo de inserção, colocando o cursor no mesmo local em que estava anteriormente.


29
Eu estava tão feliz quando eu descobri sobre g;Agora, isso me leva às lágrimas :-)
Patrick Oscity

@longdeqidao de jeito nenhum. Retorna ao último ponto de inserção. Assim, você pode rolar o conteúdo do seu coração e ele o levará de volta para onde você foi inserido pela última vez.
do Cyber Oliveira

9
FYI, g; (que @PatrickOscity referido acima) coloca o cursor no local em que uma edição foi feita. Você pode usá-lo várias vezes para voltar ao histórico. Observando isso aqui porque minha ajuda do vim não menciona isso por algum motivo estranho.
PonyEars

13
A intuição de Vim nunca deixa de me impressionar. Como o @PonyEars mencionou g;eu tentei se o "oposto" seria g,e eis e eis que podemos voltar e avançar!
Cyber ​​Oliveira

aé mais curto. :) Mas gié realmente muito intuitivo, ggeralmente sendo uma operação oposta.
Erwin Rooijakkers

105
: q!

Eu gostaria de saber isso antes de iniciar o vi pela primeira vez.


23
como um cara do emacs, esse é o comentário mais engraçado que eu já li. não tenho certeza se você pretendia que fosse. Você me fez feliz hoje.
pjammer

29
Lembro-me de tentar vim e emacs pela primeira vez no mesmo dia, sem saber como sair também. Eu pensei comigo mesmo que diabos há de errado com essas pessoas !?
physicsmichael

13
+1. Na primeira vez que você inicia o vim, a mensagem padrão deve ser "write: q to quit". Eu teria que economizar muito tempo lol
José Ramón

2
@ JoséRamón Mas não mostrá-lo na tela por padrão, se você entra vim sem abrir um arquivo. Isso foi adicionado recentemente? Lembro-me claramente de tentar vim anos atrás e já estava lá. Ele também diz para você usar :q!se tentar sair sem salvar o buffer.
mechalynx

5
@ivy_lynx sim, você pode estar certo, mas apenas se você abrir o vim sem arquivos. Normalmente, a primeira vez que você abre o vim é porque você precisa editar um arquivo de configuração no Unix, então você escreve "$ vim file" e não consegue sair. Ou eu sou o único?
José Ramón

56

^ XF é concluído usando nomes de arquivos do diretório atual. Não é mais necessário copiar / colar no terminal ou verificar novamente com dificuldade.

^ XP é concluído usando palavras no arquivo atual

: set scrollbind força um buffer a rolar ao lado de outro. por exemplo, divida sua janela em dois painéis verticais. Carregue um arquivo em cada (talvez versões diferentes do mesmo arquivo). Faça :set scrollbindem cada um. Agora, quando você rola em um, os dois painéis rolam juntos. Ideal para comparar arquivos.


Como desativar o scrollbind depois de ativá-lo?
Amjith

2
jinxed_coder : :set noscbpara desativá-lo e usá :set scb-lo (não :scrollbind). :h scrollbind
jmdeldin

Ops. Corrigido para ': set scrollbind'.
11139 Brian Agnew

7
^ XP é concluído com preferência às palavras anteriores do arquivo, ^ XN com preferência às próximas palavras do arquivo.
U0b34a0f6ae 14/09/09

Você também pode diferenciar arquivos abrindo file1 e executando :diffsplit file2ou apenas iniciando o vim vim -d file1 file2. O Vim vincula automaticamente os dois arquivos.
Brian McCutchon

51

Você pode usar um conjunto inteiro de comandos para alterar o texto entre colchetes / parênteses / aspas / tags. É super útil evitar encontrar o início e o fim do grupo. Tente ci(, ci{, ci<, ci", ci', ctdependendo do tipo de objeto que você deseja alterar. E as ca(, ca{, ...variantes também excluem os colchetes / aspas.

Fácil de lembrar: altere dentro de uma declaração entre colchetes / altere uma declaração entre colchetes.


16
isso não é apenas para c. Você pode fazer isso com dexcluir (por exemplo, di (ou da (), ypara arrancar, vpara selecionar etc.
Nathan Fellman

Olá! Gostaria de saber se a documentação para isso está usando :help? Não consigo encontrar em lugar nenhum. > _ <
Matej 2/12

11
@ Peter Já verifiquei isso antes, mas não consegui encontrar menção ao peculiar comportamento "interno + delimitador". Acontece estar dentro :help motion.txt! Obrigado!
Matej

2
esta ponta é a única razão pela qual i comutada para VI, em primeiro lugar :)
Justin L.

11
Se você estiver editando HTML ou XML, poderá usar citpara alterar o conteúdo da tag atual. Por exemplo <span>Some text</span>, se o cursor estiver sobre o "m", você pode fazer ditpara obter <span></span>.
27616 Jonathan Jonathan

47
  1. Não pressione Escnunca. Veja esta resposta para saber o porquê . Como mencionado acima, Ctrl+ Cé uma alternativa melhor. Eu sugiro fortemente mapear sua Caps Lockchave para escapar.

  2. Se você estiver editando um idioma compatível com Ctags , usar um arquivo de tags e :ta, Ctrl+ ], etc. é uma ótima maneira de navegar pelo código, mesmo em vários arquivos. Além disso, Ctrl+ Ne Ctrl+ Pconclusão usando o arquivo de tags é uma ótima maneira de reduzir o tempo de teclas.

  3. Se você estiver editando uma linha que é quebrada porque é mais larga que seu buffer, você pode mover para cima / para baixo usando gk e gj.

  4. Tente se concentrar no uso eficaz dos comandos de movimento antes de aprender maus hábitos. Coisas como usar 'dt' ou 'd3w' em vez de pressionar x várias vezes. Basicamente, sempre que você pressionar a mesma tecla repetidamente, provavelmente existe uma maneira melhor / mais rápida / mais concisa de realizar a mesma coisa.


11
Não use Escape? Isso é heresia. Escape é seu melhor amigo, dentro e fora do trabalho.
Xcramps 14/08/09

28
se é um amigo tão bom, por que está tão distante no teclado?
anthony

porque 99% das pessoas nunca o usam.
Stefano Borini

5
O escape é separado de outras teclas por alguns centímetros no meu teclado. Você não pode perder.
18711 Brian Carper

15
# 3 é incrível! Ainda aprendendo coisas novas ...
Brian Newman

45

A tecla asterisco,, *procurará a palavra sob o cursor.

[+ Tablevará você à definição de uma função C que está sob o seu cursor. (Mas nem sempre funciona).


11
Tente 'man ctags' se você estiver usando o * nix para aprender como gerar um arquivo "tags" que diz ao vim como encontrar a definição de qualquer função ou variável em vários idiomas além de C. Use ctrl +] para encontrar a definição do token sob o cursor ou use: tag tokenToFind para encontrar qualquer token que ele conheça. Você pode até iniciar o vim com "vim -t tokenToFind" para abrir o arquivo apropriado e posicionar o cursor na função que você precisa editar.
21711 Adam Liss

23
a tecla # irá procurar no sentido inverso para a palavra sob o cursor
Funkodebat

O github.com/bronson/vim-visual-star-search permite a busca em estrela de seleções visuais. Não quero mais perder isso.
Patrick Oscity

[ + Tab vai trabalhar sempre quando você estender o pathcom pastas necessários comoset path+=path/to/files
dlmeetei

43

ZZ(funciona como :wq)

E sobre a posição do cursor: descobri que um cursor que sempre fica no meio da tela é legal -

set scrolloff=9999

2
Não sabia disso. :xfaz isso bem
sa125

18
Não é totalmente preciso. Funciona como :x, que só salva o arquivo se houver alterações, enquanto :wqsempre salva o arquivo.
Erik B

ZQ (funciona como: q!)
xialu

42

Algumas das minhas mais recentes adições ao meu brainstore do Vim:

  • ^wi: Pule para a tag abaixo do cursor dividindo a janela.
  • cib/ciB: Altere o texto dentro do conjunto atual de parênteses () ou chaves {}, respectivamente.
  • :set listchars=tab:>-,trail:_ list: Mostra separadores / espaços finais visualmente diferentes de outros espaços. Isso ajuda muito na codificação Python.

4
Isso precisa de mais votos! cibé ótimo.
Matt Parker

também: ciw para alterar a palavra atual (ou caw, a mesma mas apenas a mão esquerda) ciW para alterar a atual W = o. (rd) Os mesmos com v em vez de c serão selecionados no visual em vez de substituir
lajarre

5
cib é equivalente a digitar "ci (". Você também pode fazer "ci [", "ci {" ou se o seu vimrc estiver configurado corretamente) "ci <", para outros tipos de colchetes.
Tom Lord

2
Além disso, "cit" para alterar o texto dentro de uma tag. Muito útil ao trabalhar com XML / HTML.
21813 Walter Walter

Também vale a pena mencionar que você pode usar o sufixo com a chave de fechamento, se preferir. Além disso, eu acabei de aprender sobre ci}& cituau, isso vai ser muito útil. vi[m]está provando um programa muito interessante!
underscore_d

37

gv inicia o modo visual e seleciona automaticamente o que você selecionou anteriormente.


34

: shell para iniciar um console de shell do Vim. Útil quando, por exemplo, você deseja testar um script sem sair do Vim. Basta clicar em ^ d quando terminar com o console do shell e voltar ao Vim e seu arquivo editado.


Eu acho que :!shfoi muito difícil. Eu prefiro isso porque é mais fácil de linhas de comando compor usando registros / conclusões do buffer atual ou por exemplo, uso %/ %:hpara o nome do arquivo atual / dirname etc.
sehe

11
Este é muito legal. Eu usá-lo todos os dias .. Antes que era,: wq, fazer coisas cli, reabrir vim com o mesmo arquivo .. Grande otimização
Flashin

7
Ctrl-Z para alternar para o shell e fg <ENTER> para voltar ao vim.
Mario G.

Coloque map <Esc>! :shell<CR>seu .vimrc, e você pode iniciar o shell apenas com Alt + !, ou Alt + Shift + 1. (Mnemônico: :!{cmd}executa {cmd}com o shell.)
musiphil

:shellirá iniciar um novo nível de shell aninhado. Considerando ctrl-zque não.
26618 wisbucky


31

vimcryption

vim -x filename.txt

Você será solicitado a inserir uma senha, editar e salvar. Agora, sempre que você abrir o arquivo no vi novamente, será necessário digitar a senha para visualizar.


Sincronizar com sua caixa de depósito e você terá um gerenciador de senhas muito bom ;-)
Luis Nell

15
Mas observe que, a menos que você set cryptmethod=blowfish(disponível apenas em 7.3+), ele utilizará um algoritmo com força de riso. Veja help encryptionpara mais detalhes.
AB

3
Por favor, não use criptografia vim, não é boa criptografia e segurança ruim é pior que nenhuma. Mais informações: github.com/neovim/neovim/issues/694
rodrigoq

2
dgl.cx/2014/10/vim-blowfish meta-tldr: "corrigido no Vim 7.4.399 [ groups.google.com/forum/#!msg/vim_dev/D8FyRd0EwlE/bkBOo-hzTzoJ] , por motivos de compatibilidade com versões anteriores necessárias para ser um novo método de criptografia, então use :set cm=blowfish2"
underscore_d

28

Crie e depure seu código no Vim!

Configuração

Na verdade não muito. Você precisa de um Makefileno diretório atual.

Compilar

Enquanto estiver no Vim, digite :makepara chamar um shell e criar seu programa. Não se preocupe quando a saída passar; basta pressionar Enterquando terminar para retornar ao Vim.

A mágica

De volta ao Vim, você tem os seguintes comandos à sua disposição:

  1. :cl lista os erros, avisos e outras mensagens.
  2. :ccexibe a mensagem de erro / aviso atual na parte inferior da tela e pula para a linha incorreta no seu código.
  3. :cc npula para a mensagem nth .
  4. :cn avança para a próxima mensagem.
  5. :cp pula para a mensagem anterior.

Há mais; se você estiver interessado, digite :help :ccno Vim.


11
trabalha com mais do que apenas compilar código. Ou seja, qualquer tarefa escrita em um makefile é um ótimo uso para isso.
Dwight Spencer #

25

^ P e ^ N

Complete o texto anterior (^ P) ou o próximo (^ N).

^ O e ^ I

Vá para o local anterior (^ O - "O" para antigo) ou para o próximo (^ I - "I" próximo a "O").

Ao realizar pesquisas, editar arquivos etc., você pode navegar por esses "saltos" para frente e para trás.

Marcas

Pressione ma (marca m, a - nome da marca). Posteriormente, para retornar à posição, digite `a .


11
Uau, eu não sabia sobre ^ O e ^ I: isso é incrível. Pode valer a pena incluir :help jump-motionsetc na sua resposta, caso alguém queira mais informações.
DrAl

confira ShowMarks vim.org/scripts/script.php?script_id=152 . Isso o ajudará a lembrar onde e quais são todas as suas marcas em um buffer. você pode alternar a visualização on e off com \ mt
tester

Eu não entendo a diferença entre ^ P e ^ N ...
lajarre

@lajarre que percorrer a lista de completação disponíveis no sentido oposto
Patrick Oscity

2
Costumo usar ^ O ^ O ao abrir o Vim depois que percebi que desejo editar o último arquivo editado novamente. Economia enorme de tempo!
Patrick Oscity

24

Pressione %quando o cursor estiver entre aspas, parênteses, colchete ou colchete para encontrar sua correspondência.


20
Se o cursor não estiver sobre nenhum deles, ele se desloca para a direita até atingir um deles.
do Cyber Oliveira

@ Léo: Obrigado pela dica de bônus!
23411 Adam Liss

22

Até [caractere] ( t). É útil para qualquer comando que aceite um intervalo. Meu favorito é ct;ou ct)que exclui tudo até o ponto-e-vírgula / parênteses de fechamento e o coloca no modo de inserção.

Além disso, Ge ggsão úteis (Vá para baixo e para cima, respectivamente).


melhor aqui, embora alguns dos outros são úteis também, eu só sabia sobre todos eles já
Funkodebat

11
Também, em fvez de t, o que irá [ação] através desse personagem; por exemplo, ter o cursor no início de um argumento de função df,o excluirá (em idiomas adequados, é claro).
Actorclavilis

t são ótimos para editar parte de uma variável camelCase. Por exemplo, se você só duplicada uma linha e necessidade de mudar firstVariable para secondVariable, posicione o cursor no início do firstVariable, então CTV
Greg

11
T e F também funcionam, mas na direção oposta.
Fede

20

^r^w para colar a palavra sob o cursor no modo de comando.

É realmente útil ao usar comandos grep ou replace.


Se for a única palavra que você deseja, então * no modo normal procurará a palavra sob o cursor.
Idbrii 19/09/10

17

Digitar um número de linha seguido por gglevará você a essa linha.


31
: Seguido pelo número da linha faz o mesmo: 42 vai ao número da linha 42
Anti Veeranna

12
Digitar um número de linha seguido por G tem o mesmo efeito.
do Cyber Oliveira

3
<number>govai para o <number>th caractere no arquivo.
Actorclavilis

17

Eu gostaria de ter conhecido as coisas básicas do modo de bloco visual anteriormente. Mesmo que você não use o Vim para mais nada, pode ser um grande poupador abrir um arquivo no Vim apenas para algumas operações de bloco. Tenho certeza de que perdi muito tempo fazendo esse tipo de coisa manualmente.

Exemplos que achei particularmente úteis quando, digamos, refatorar listas de nomes constantes simbólicos de forma consistente:

Entre no modo Visual Block ( Ctrl+ Qpara mim no Windows em vez de Ctrl+ V)

Mova o cursor para destacar o bloco desejado.

Em seguida, I whatever textpressione Escpara inserir o texto na frente do bloco em todas as linhas.

Use em Avez de Ipara inserir o texto após o bloco em todas as linhas.

Além disso - simplesmente alternar o caso de uma seleção visual ~pode economizar muito tempo.

E simplesmente excluir colunas também, é dclaro.


15

^ y copiará o caractere acima do cursor.


6
... e ^ E irá inserir o caractere sob o cursor
muito php

não funciona para mim, ele só se move o cursor para o início do texto
Alex

14

q <letra> - grava uma macro.

e

@ <same-letter> - reproduz.

Esses são, de longe, os comandos mais úteis no Vim, pois você pode fazer com que o computador faça muito trabalho para você, e você nem precisa escrever um programa ou algo assim.


O uso de qmatérias simplifica, mas você não é obrigado a usá-lo: basta salvar em um chamado de buffer de comando tampão "- por exemplo, usando tampão a- "ad$...
Mei

@Mei qgrava uma macro; macros podem conter comandos, não apenas texto, portanto "ad$é diferente de qa.
precisa saber é o seguinte

@ Sortofabeginner Isso é irrelevante aqui. O comando "ad $ coloca o texto no buffer ae qa o executa. #
311 Mei

2
@Mei qanão executa; qagrava e @aexecuta. É verdade que você pode escrever uma macro em texto sem formatação, armazená-la no registro acom algo como "ad$e executá-la com @a, mas isso é um pouco mais trabalhoso. Há uma diferença fundamental entre recortar e colar e gravar e executar.
precisa saber é o seguinte

Doh! Eu sabia. Obrigado pela correção
Mei

13

Abrindo vários arquivos usando guias

:tabe filepath

Navegando entre Arquivos Abertos

gt and gT or :tabn and :tabp

Salve a sessão aberta para poder voltar à sua lista de arquivos abertos posteriormente

:mksession session_file_name.vim

Abra uma sessão criada

vim -S session_file_name.vim

Feche todos os arquivos de uma só vez

:qa

Outro comando que aprendi recentemente

autocmd

Ele permite que você execute um comando em um evento; portanto, você pode, por exemplo, executar o comando make ao salvar um arquivo usando algo como:

:autocmd BufWritePost *.cpp :make

12

qx começará a gravar as teclas digitadas. Você pode executar praticamente qualquer tarefa de edição e o Vim se lembra dela. Pressione q novamente quando terminar e pressione @x para reproduzir as teclas digitadas. Isso é ótimo para edições repetitivas, que são muito complexas para se escrever um mapeamento. Você pode ter muitas gravações usando um caractere diferente de x .


5
Além disso, o mesmo caractere 'x' é compartilhado entre o comando da macro de registro 'q' e as pranchetas nomeadas ("x ...). Você pode deixar trechos de macros ao redor do arquivo e copiá-los para uma prancheta nomeada (por exemplo," xyy ) e depois reproduza-os (@x).
do Cyber Oliveira

E se você criar a macro impressionante nunca, poderá colar essa área de transferência no seu _vimrc com um 'let @x = ""' (colocando a macro no "") e salvá-la para sempre!
Kearns

11

Eu diria que um dos meus favoritos está colocando a janela de ajuda em uma nova guia:

:tab help <help_topic>

Isso abre a ajuda em uma nova guia e, como alguém que ama as guias do Vim, isso é ridiculamente útil.


2
Buffers são as guias do vim. Eles são mais suportados pelo fluxo de trabalho do vim. Eu suspeito que as guias foram adicionadas apenas ao vim porque muitas pessoas não entendiam os buffers.
still_dreaming_1

Ok, logo depois de dizer isso, achei um uso para abas no vim. É verdade que se você estiver usando um buffer por guia, precisará aprender sobre buffers. Não é assim que as guias devem ser usadas no vim. Os usuários mais avançados do vim usam buffers da maneira como as guias são usadas na maioria dos programas. Muitas pessoas pensam que as guias deveriam ter sido nomeadas layouts no vim. Eles são principalmente para ter diferentes coleções de janelas abertas em diferentes guias. Você também pode ter um buffer específico para o qual você abre muito em uma guia e usa a outra guia para visualizar todos os outros buffers.
still_dreaming_1

9

cw

Alterar palavra - exclui a palavra sob o cursor e coloca você no modo de inserção para digitar uma nova. É claro que isso funciona com outras teclas de movimento, para que você possa fazer coisas como c $ para mudar para o final da linha.

personagem f +

Localiza a próxima ocorrência do caractere na linha atual. Então você pode fazer o vft para selecionar todo o texto até o próximo "t" na linha atual. É outra tecla de movimento, por isso também funciona com outros comandos.


9

:b [any portion of a buffer name]para alternar buffers. Portanto, se você tiver dois buffers, "somefile1.txt" e "someotherfile2.txt", poderá alternar para o segundo simplesmente ":b 2.t<enter>". Ele também suporta a conclusão da guia, embora não seja necessário.

Falando na conclusão da guia, a configuração :set wildmode=full wildmenutambém é muito útil. Ele permite a conclusão completa da guia no modo de comando, bem como um menu muito útil no estilo ncurses de todas as correspondências possíveis ao usá-lo.


9

:% s, / pesquisa, / substituição,

Você pode usar outros caracteres que não sejam /(barra) para separar padrões para substituição. Dessa forma, você não precisa escapar das barras dos caminhos dos arquivos.


2
oh inferno sim. Eu sabia que sedtinha isso, mas não vim. Quanto mais você conhece
beerbajay
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.