Ubuntu Suomen keskustelualueet

Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: JA5U - 13.02.17 - klo:08.57

Otsikko: Vim ja tekstin korvaaminen: // kommenttirivien vaihto /* kommenttiriveiksi */
Kirjoitti: JA5U - 13.02.17 - klo:08.57
Moi

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

s:/\/\//\/\*
Otsikko: Vs: Vim ja tekstin korvaaminen: // kommenttirivien vaihto /* kommenttiriveiksi */
Kirjoitti: Tomin - 13.02.17 - klo:10.52
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.
Otsikko: Vs: Vim ja tekstin korvaaminen: // kommenttirivien vaihto /* kommenttiriveiksi */
Kirjoitti: JA5U - 13.02.17 - klo:11.55
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
Otsikko: Vs: Vim ja tekstin korvaaminen: // kommenttirivien vaihto /* kommenttiriveiksi */
Kirjoitti: nm - 13.02.17 - klo:12.49
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
Otsikko: Vs: Vim ja tekstin korvaaminen: // kommenttirivien vaihto /* kommenttiriveiksi */
Kirjoitti: snifi - 13.02.17 - klo:17.45
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.
Otsikko: Vs: Vim ja tekstin korvaaminen: // kommenttirivien vaihto /* kommenttiriveiksi */
Kirjoitti: nm - 13.02.17 - klo:17.56
- 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.
Otsikko: Vs: Vim ja tekstin korvaaminen: // kommenttirivien vaihto /* kommenttiriveiksi */
Kirjoitti: JA5U - 17.02.17 - klo:13.35
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.
Otsikko: Vs: Vim ja tekstin korvaaminen: // kommenttirivien vaihto /* kommenttiriveiksi */
Kirjoitti: JA5U - 17.02.17 - klo:13.38
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.
Otsikko: Vs: Vim ja tekstin korvaaminen: // kommenttirivien vaihto /* kommenttiriveiksi */
Kirjoitti: Tomin - 17.02.17 - klo:16.30
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