Qual é a melhor maneira de redimensionar um nome de variável no vim?


8

Eu sei que há uma maneira de pesquisar e substituir ocorrências variáveis ​​em um arquivo de origem.

Mas existe alguma maneira melhor pela qual, se eu renomear uma variável em um local, ela também seja renomeada em outros locais sem pesquisar, substituir ou substituir?


A resposta vai depender do idioma. Em algumas bases de código, pode ser prático escrever um regex que corresponda exatamente à sua situação.
aebabis

Respostas:


13

Você pode apenas usar o fluxo de trabalho usual searche replace:

/original
cwreplaced
n.n.

Você também pode tirar proveito do gnmovimento:

/original<CR>
cgnreplaced<ESC>
.....

cgnvai change o npadrão ext combinado, então em vez de usar n.n.a go to nexte repeatvocê pode apenas ..que meios replace next.

gnsignifica "procurar próxima ocorrência e iniciar uma seleção visual sobre ele", você pode ler mais sobre isso no doc: :h gn.


Você pode explicar o movimento do GN? Eu sou completamente novo no vim.
WitVault

3
Sempre perguntar Vim primeiro: :help gn.
romainl

@ nobe4: Você pode melhorar sua resposta. :) O usuário pode querer substituir por todos os $ first por $ second, e não $ first_variable. Podemos ir com \ <padrão \>? Ou sugira uma maneira melhor!
SibiCoder

6

Você pode usar um substituto:

:%s/original/replaced/g

Vai substitute todo o arquivo inteiro ( %) originalpor replaced. E substituirá várias ocorrências na mesma linha g.

Se você não tiver certeza sobre a substituição automática, poderá adicionar o csinalizador para solicitar confirmação sempre.


Eu não quero cegamente procurar e substituir.
WitVault

3
Então a cbandeira é o caminho a percorrer.
nobe4

2

Eu gostaria de adicionar outra opção.

Você pode fazer /originale depois fazer :%s//replacement. (Use /cno final se você quiser confirmação).

Embora você esteja pressionando mais 3 teclas, isso tem uma vantagem em relação ao fazer apenas %s/original/replacementporque fornece uma indicação visual de que sua pesquisa está correta.

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.