Pergunta

Gostaria de imitar Textmates CTRL+ALT+w, que cria um novo par de tags HTML de abertura e fechamento na mesma linha.

No VIM Surround estou usando CTRL+st no modo Editar para isso, mas ele sempre recua e cria uma nova linha após definir a tag, para que fique assim (* = posição do cursor):

<p>
  *
</p>

Existe uma maneira de conseguir isso?:

<p>*</p>
Foi útil?

Solução

Acho que o seu problema é que a área selecionada é "em linha".Por exemplo, se você selecionar algumas vidas com V e cercá-lo com tags, as tags serão colocadas uma linha acima e uma abaixo das linhas selecionadas.

Você provavelmente deseja criar uma seleção "em termos de personagem", com v antes de cercá-lo.

De qualquer forma, poste o mapa que você criou, para que possamos ajudar a depurar isso.


Atualizar

Após alguns esclarecimentos nos comentários, diria que o plugin surround não é a melhor opção.Como o próprio nome descreve, foi criado para lidar com conteúdo cercado.Então você pode precisar de conteúdo para cercar.

No seu caso, recomendo dar uma olhada em Tag de fechamento automático HTML.Este plugin fecha a tag html assim que você digita o >.Certamente é mais apropriado e usa menos teclas que o surround.

<p         <--- Now when you type ">", if becomes:
<p>|</p>   <--- Where "|" is the cursor.

Obviamente, você obterá esse comportamento para todas as tags.Mas isso pode ser útil se você gostar.

Outras dicas

No modo normal, digite vstp> para entrar no modo visual e gerar uma abertura e fechamento <p> tag na mesma linha na posição atual do cursor.Use S maiúsculo para manter o nível de recuo atual.

Isso não coloca o cursor entre as tags como você descreve, mas o Textmate também não. CtrlC atalho (acho que você quis dizer CTRL+Shift+w, não CTRL+ALT+w, já que o último gera apenas um sinal de diamante).

Minha resposta provavelmente está chegando tarde, mas tentarei ajudar.Eu tive um problema semelhante com o plugin Vimsurround.Cada vez que seleciono uma frase (uma linha) usando ctrl+V e tento cercá-la com algo, recebo o seguinte:

{
var myVar
}

em vez disso:

{ var myVar } // what I wanted

Encontrei uma solução fácil:No modo normal, escolho uma linha com vis comando e então digito C maiúsculo (meu mapeamento surround vim) e escolho colchetes para cercar.

O título da pergunta está tecnicamente rotulado incorretamente com base no que o autor realmente estava procurando, mas como eu estava realmente procurando a resposta para a pergunta feita no título, acho que deveria fornecer uma resposta também.

Para criar uma nova tag em torno de um elemento sem o recuo automático que o Vim Surround usa ao usar uma seleção por bloco (ou seja: VysS), você pode fazer algo como:

^ sim$

Este comando moverá o cursor para o primeiro caractere não vazio da linha, emitirá o comando que deseja utilizar You Surround e irá para o final da linha.Em seguida, basta começar a inserir sua tag.

O resultado é este:

<input type="email" name="email">

Poderia se tornar algo assim:

<li><input type="email" name="email"></li>

O comando também pode ser repetido com . e todas as outras coisas normais do Vim.

Me deparei com essa questão porque também estava me perguntando isso - acredito que a maneira mais simples de fazer isso é:

yss<p>

(yss circunda uma linha com algo sem recuo - veja aqui: http://www.catonmat.net/blog/vim-plugins-surround-vim/)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top