Digamos que eu tenha esta linha de código:
$query = "SELECT * FROM table";
Existe um comando no vi / vim que pode apagar instantaneamente tudo entre aspas e posicionar o cursor entre elas para que eu possa começar a digitar?
Use ci"
, que significa: altere o que está dentro das aspas duplas.
Você também pode manipular outros objetos de texto de maneira semelhante, por exemplo:
ci'
- mudança entre aspas simplesciw
- mudança dentro de uma palavra ci(
- mudar entre parêntesesdit
- excluir dentro de uma tag HTML, etc.Mais sobre os diferentes objetos de texto vim aqui .
vim
, mas NÃOvi
. (Não tenho certeza)F"ci"
.Você pode selecionar entre aspas e excluir (
d
), alterar (c
) etc. usandoDa mesma forma, você pode substituir colchetes, colchetes, elementos XML etc., assim:
ou simplesmente alterar / excluir, fazer o correspondente
di"
,ci"
etc. Substituira
pori
irá englobar os elementos circundantes (então você marca ou altera os colchetes e o conteúdo, por exemplo)fonte
Fiz um plugin
vim-textobj-quotes
: https://github.com/beloglazov/vim-textobj-quotesEle fornece objetos de texto para os pares mais próximos de citações de qualquer tipo e oferece suporte a citações que abrangem várias linhas. Usar apenas
iq
ouaq
permite que você opere no conteúdo das aspas simples ('), duplas (") ou traseiras (`) que atualmente cercam o cursor, estão na frente do cursor ou atrás (nessa ordem de preferência) Em outras palavras, ele salta para frente ou para trás quando necessário para alcançar as cotações.É mais fácil de entender olhando para os exemplos (o cursor é mostrado com
|
):foo '1, |2, 3' bar
:; depois de pressionardiq
:foo '|' bar
foo| '1, 2, 3' bar
:; depois de pressionardiq
:foo '|' bar
foo '1, 2, 3' |bar
:; depois de pressionardiq
:foo '|' bar
foo '1, |2, 3' bar
:; depois de pressionardaq
:foo | bar
foo| '1, 2, 3' bar
:; depois de pressionardaq
:foo | bar
foo '1, 2, 3' |bar
:; depois de pressionardaq
:foo | bar
Os exemplos acima são dados para aspas simples, o plugin funciona exatamente da mesma maneira para aspas duplas (") e back (`).
Você também pode usar quaisquer outros operadores:
ciq
,diq
,yiq
,viq
, etc.Por favor, dê uma olhada na página do github no link acima para mais detalhes.
fonte
Já dentro das citações você pode fazer
Leia como deletar dentro de "
fonte
Além da resposta de Brian, você também pode
p
(colar) ey
(arrancar) o novo valor, então, se quiser substituir o valor entre aspas por outro valor, você pode fazeryi"
na seleção que deseja copiar,vi"
para selecionar a área que você deseja substituir e, em seguida, apenasp
substituir o valor corretamente.fonte
A resposta escolhida é adequada SOMENTE para ViM, mas NÃO para vi. A pergunta também é imprecisa porque o autor não mencionou qual é a posição inicial do cursor. Se assumirmos que o cursor está entre as aspas duplas, para vi a resposta será:
Onde:
T "- volte logo após o caractere"
c - comando de mudança
t "- fornece a posição final para o comando c, onde ele deve parar de apagar os caracteres, em outras palavras, o intervalo a ser alterado
fonte