vi / vim alternativa ao “Expandir seleção ao escopo” do sublimetexto

13

O texto sublime possui um recurso interessante chamado " Expandir seleção para o escopo " SHIFT + CMD + ESPAÇO, que seleciona tudo dentro do escopo.

Ele seleciona tudo no escopo, funciona perfeitamente () ou [] ou {} repetindo, expande o escopo para seu pai.

Estou procurando conseguir o mesmo com o vim.

palaniraja
fonte

Respostas:

22

Se você quis dizer, vimpode fazer isso com o modo visual ( :help visual-mode) e objetos de texto ( :help text-objects).

Para selecionar um bloco com chaves, faça: v+ a+ {, para selecionar o bloco anexo, repita a+ {. Observe que você pode optar por selecionar apenas o conteúdo das chaves usando em ivez de a.

Esses comandos, como muitos outros no vim, são construídos por uma ação seguida por um objeto de texto, onde o objeto de texto pode ser precedido por um número para incluir mais objetos afetados pela ação. Então, você também pode excluir o objeto, substituindo vpor dou corrigi-lo com c, etc.

Há objetos de texto para um monte de outras coisas além (), {}e [], por exemplo:

  • a+ wsignifica uma palavra.
  • a+ ssignifica uma frase.
  • a+ psignifica um parágrafo.
  • a+ <significa um <>bloco.
  • a+ 'significa uma sequência de aspas simples.
  • a+ "significa uma sequência de aspas duplas.

Você também pode estar interessado no plug-in surround, que permite adicionar / substituir / excluir caracteres ao redor ou até tags.

Thor
fonte
Sim, eu estava me referindo ao vim. Obrigado. existe uma maneira de continuar expandindo, por exemplo, [[[event touchesForView: button] anyObject]se o cursor estiver próximo da touchesForViewação v+ a+ [seleciona, [event touchesForView: button]eu gostaria de expandir mais um nível? isto é,[[[event touchesForView: button] anyObject]
palaniraja
3
@palaniraja: sim, existe, você pode preceder o objeto de texto por um número, por exemplo: v+ 2+ a+ [.
Thor
6

O plug-in vim-expand-region permite estender / reduzir a região visualmente selecionada para um conjunto (configurável) de objetos de texto. Ou seja, você pode começar com a seleção de uma variável, a atribuição, o bloco, a função, etc.

Ingo Karkat
fonte