Kirjoittaja Aihe: Vim ja tekstin korvaaminen: // kommenttirivien vaihto /* kommenttiriveiksi */  (Luettu 3013 kertaa)

JA5U

  • Käyttäjä
  • Viestejä: 446
    • Profiili
Moi

En saa muuta aikaan kuin virheen E488 trailing characters, kun yritän koneellisesti vaihtaa kommentointisyntaksin toisenlaiseksi tai edes alun siitä.

s:/\/\//\/\*

Tomin

  • Palvelimen ylläpitäjä
  • Käyttäjä / moderaattori+
  • Viestejä: 11213
    • Profiili
    • Tomin kotisivut
Tämä näyttäisi toimivan ihan hyvin:
Koodia: [Valitse]
:s/\/\//\/\*/Samoin tämä:
Koodia: [Valitse]
:s%//%/*Tämähän muuttaa siis vain //-merkinnät /*-merkinnöiksi, joten toisen pään joutuu vielä erikseen muuttamaan.
Automaattinen allekirjoitus:
Lisäisitkö [RATKAISTU] ketjun ensimmäisen viestin aiheeseen ongelman ratkettua, kiitos.

JA5U

  • Käyttäjä
  • Viestejä: 446
    • Profiili
Ei se vaan ota toimiakseen, tulee tuo E488.
En jatkanut sitä kattamaan koko kommenttiriviä, kun ei se suostunut toimimaan edes alun osalta.

Vim 7.4.52

nm

  • Käyttäjä
  • Viestejä: 14639
    • Profiili
Ei se vaan ota toimiakseen, tulee tuo E488.
En jatkanut sitä kattamaan koko kommenttiriviä, kun ei se suostunut toimimaan edes alun osalta.

Vim 7.4.52

Tomin esimerkit toimivat kyllä Ubuntu 14.04:n Vim 7.4.052:lla.

Tai sedillä:
Koodia: [Valitse]
sed -e "s%//%/*%" tiedosto.c
*/ perään:
Koodia: [Valitse]
sed -e "s%//\(.*\)$%/*\1 */%" tiedosto.c

Tähän operaatioon on olemassa myös valmis Lars Wirzeniuksen kirjoittama työkalu ccmtcnvt:
http://manpages.ubuntu.com/manpages/trusty/man1/ccmtcnvt.1.html
« Viimeksi muokattu: 13.02.17 - klo:12.53 kirjoittanut nm »

snifi

  • Vieras
Eli jos yrittää purkaa tuota komentoa, niin

- alussa on Vimin komento: kaksoispiste-s tai kaksoispiste-prosentti-s (kuvassa vihreällä)
  s tulee sanasta substitute
- Komennolla on kolme argumenttia, jotka erotellaan s-kirjaimen jälkeen tulevalla merkillä, jonka saa määrätä itse.
  Tässä esimerkissä jakoviiva (keltaiset)
- Ensimmäinen argumentti on kaksi jakoviivaa, jotka molemmat täytyy kirjoittaa kenoviiva-ohjausmerkin taakse, sillä muutoin Vim tulkitsee ne argumentin erottimiksi (edellinen kohta). Tämä on korvattava teksti. (Kuvassa ensimmäiset harmaat merkit)
- Toinen argumentti on korvaava teksti eli jakoviiva ja tähti, joilla samoin on oma merkityksensä yksinään, joten nekin täytyy kirjoittaa ohjausmerkin taakse. (Toiset harmaat merkit kuvassa)
- Lopussa voi olla vapaaehtoinen komennon määre, esimerkiksi omassa tapauksessani g (sanasta global, korvaa jokainen esiintymä rivillä). Tosin tässä tapauksessa g ei ole hyvä määre, koska halutaan korvata ainoastaan ensimmäinen kommenttipari. Eli viimeinen vihreä osa saattaa jäädä tyhjäksi, mutta sitä ennen oleva keltainen erottava jakoviiva täytyy olla.

Tämän lisäksi Vim saattaa olla sellaisessa tilassa, että tietyillä merkeillä on eri merkitys ja ohjausmerkkejä käytetään näissä tiloissa eri tavalla.

nm

  • Käyttäjä
  • Viestejä: 14639
    • Profiili
- Toinen argumentti on korvaava teksti eli jakoviiva ja tähti, joilla samoin on oma merkityksensä yksinään, joten nekin täytyy kirjoittaa ohjausmerkin taakse. (Toiset harmaat merkit kuvassa)

Korvaavan tekstin puolella tähdellä ei ole erikoismerkitystä, joten sitä ei välttämättä tarvitse suojata.

JA5U

  • Käyttäjä
  • Viestejä: 446
    • Profiili
Nyt yritän korjata massana:

size="10" => size="12"

"Pattern not found" vaikka sitä kyllä riittää. Kokeilin laittaa erikoismerkit \ eteen muttei vaikutusta.

Aiemmin tänään tein seuraava:

col-sm-12 => col-sm-10 eikä siinä ollut mitään ongelmaa - aluksi. Nyt sekään ei toimi vaikka yritän vastaavia korvauksia tehdä.

Ja miten tuohon saa niitä lippuja? igm jne. jos niitä lisää loppuun, niin alkaa heti herjata. Pitäisi saada koko dokumentista korvattua arvot.

JA5U

  • Käyttäjä
  • Viestejä: 446
    • Profiili
Nyt yritän korjata massana:

size="10" => size="12"

"Pattern not found" vaikka sitä kyllä riittää. Kokeilin laittaa erikoismerkit \ eteen muttei vaikutusta.

Aiemmin tänään tein seuraava:

col-sm-12 => col-sm-10 eikä siinä ollut mitään ongelmaa - aluksi. Nyt sekään ei toimi vaikka yritän vastaavia korvauksia tehdä.

Ja miten tuohon saa niitä lippuja? igm jne. jos niitä lisää loppuun, niin alkaa heti herjata. Pitäisi saada koko dokumentista korvattua arvot.
Jaa, se oli tuo %, joka korvaa koko dokkarista.

Tomin

  • Palvelimen ylläpitäjä
  • Käyttäjä / moderaattori+
  • Viestejä: 11213
    • Profiili
    • Tomin kotisivut
Jaa, se oli tuo %, joka korvaa koko dokkarista.

Juu, vimissä on mahdollista korvata yhdeltä riviltä (eli tavallisesti :s/lauseke), koko dokumentista (:%s/lauseke), valituilta riveiltä (painamalla V ja valitsemalla rivit ja sitten normaalisti :s/lauseke, tosin siihen komennoksi tuleekin :<,>s/lauseke) tai käyttämällä rivinumeroita (:5,10s/lauseke, tässä siis rivien 5 ja 10 väliltä).

Muokkaus: Näköjään vaihtoehtoja on vielä pari muutakin, en ole kyllä itse tarvinnut kuin mainitsemistani kolmea ensimmäistä.
http://vim.wikia.com/wiki/Search_and_replace
Automaattinen allekirjoitus:
Lisäisitkö [RATKAISTU] ketjun ensimmäisen viestin aiheeseen ongelman ratkettua, kiitos.