Como criar e executar uma macro que é executada na seleção visual atual?

1

Gostaria de criar uma macro para que, se eu selecionar uma parte do texto (por um teclado ou um mouse) e invocar essa macro, ela adicione [b] e [/b] ao redor do texto (por exemplo) . Estou familiarizado com a gravação de macros usando q e executá-las com @ , mas não consegui descobrir como conectar uma macro com a seleção visual atual.

    
por Petr Pudlák 27.04.2013 / 19:17

2 respostas

4

As macros não são diferentes daquelas que você digitaria para atingir seu objetivo. Ao trabalhar com uma seleção visual, você normalmente usa movimentos como '< e '> para ir ao início e ao fim da seleção e inserir as tags com i e a ; gv permite que você selecione novamente a seleção anterior.

Para o seu exemplo específico, pode valer a pena examinar o surround.vim - Excluir / alterar / adicione o plugin parênteses / citações / XML-tags ; talvez já faça o que você quer.

    
por 27.04.2013 / 20:41
1

Outra opção a considerar é o plugin Ultisnips . Tem um mecanismo especial de "espaço reservado visual".

Snippets can contain a special placeholder called ${VISUAL}. The ${VISUAL} variable is expanded with the text selected just prior to expanding the snippet.

Assim, você pode definir um snippet que envolve a seleção visual com uma tag específica:

snippet b "surrond with [b] tag"
[b]${1:${VISUAL}}[/b]
endsnippet

ou você pode criar um snippet genérico que contenha a seleção visual com qualquer tag:

snippet tag "surround with a tag"
[${1}]${2:${VISUAL}}[/$1]
endsnippet

ou você pode enlouquecer e utilizar o poder da interpolação Python para fazer o pré-processamento desejado com o texto visualmente selecionado no snippet.

    
por 29.04.2013 / 11:40