Kirjoittaja Aihe: Kysymyksiä Vimistä  (Luettu 3337 kertaa)

mikk0

  • Käyttäjä
  • Viestejä: 555
    • Profiili
Kysymyksiä Vimistä
« : 18.09.05 - klo:14.00 »
Mulla on ongelma vim-editorin substitude-toiminnon kanssa.

Eli :%s/korvattava lause/korvaava lause/ tekee juuri sen mitä haluan, mutta olen ihmetellyt voisiko tämän tehdä niin, ettei tarvitsisi kirjoittaa koko korvattavaa lausetta, vaan voisin kertoa suoraan että korvattava on kursorista vaikkapa lauseen loppuun asti. Tämähän on ihan normaalia toimintaa monessa muussa yhteydessä, esim c4w, mutta en ole keksinyt vielä miten se tässä toteutetaan.

Muutoinhan kyseessä on mitä loistavin editori, mutta kun kaikkia ominaisuuksia ei osaa hyödyntää, niin se hidastaa työskentelyä. Tämä on harmi, sillä vim on oikeinkäytettynä ennenkaikkea juuri nopea.

Hätävarana asensin vim-gnome-paketin. Nyt kun voin tehdä muokkaukset graafisesti gvimillä, niin onpahan ainakin hiiri käytössä ja tämä korvaa-toimintokin löytyy ihan pikakuvakkeena, mutta nopeampaa tämä olisi ilman hiiren (tai varsinkaan touchpadin) kanssa sekoilua.

Mikko

Mikko Saarinen

mikk0

  • Käyttäjä
  • Viestejä: 555
    • Profiili
Re: Kysymyksiä Vimistä
« Vastaus #1 : 21.09.05 - klo:13.40 »
Vastailen tässä nyt itselleni, kun sain kaivettua tietoa muualta:

Eli näin tämän saa ainakin tehtyä:

kopioi (yank) rekisteriin haluamansa sanat, vaikkapa y3w
seuraavaksi kirjoittaa :%s/<Ctrl-R>0/Korvaavat sanat/

Tässä tuo <Ctrl-R> siis tarkoittaa, että painetaan Ctrl ja R -näppäimiä yhtä aikaa. Kun painaa 0 (nolla), niin se laajentaa rekisterissä nolla (viimeisin yank) olevat sanat siihen riville. Näin niitä ei tarvitse kirjoittaa uudelleen.

Vielä kun osaisi mapata jonkun näppäinyhdistelmän sellaiseksi, että se kirjottaisi tuon käskyn alun itsestään ja sitten kun tietäisi miten tuota rekisteriä voi käyttää komennossa suoraan (luulin että se on @0, mutta ei ollut), niin ei tarvitsisi kuin painaa tätä näppäinyhdistelmää ja kirjoittaa korvaavat sanat ja enteriä, niin korvaus toimisi nopeammin.
Mutta on tämäkin jo alku  :D
Mikko

Mikko Saarinen

wille

  • Käyttäjä
  • Viestejä: 15
    • Profiili
Re: Kysymyksiä Vimistä
« Vastaus #2 : 21.09.05 - klo:13.48 »
Eli :%s/korvattava lause/korvaava lause/ tekee juuri sen mitä haluan, mutta olen ihmetellyt voisiko tämän tehdä niin, ettei tarvitsisi kirjoittaa koko korvattavaa lausetta, vaan voisin kertoa suoraan että korvattava on kursorista vaikkapa lauseen loppuun asti.

Mahdatko yrittää käyttää oikeaa kalua väärään tarkoitukseen? s-komennolla yleensä tehdään paljon muutoksia kerralla, kun taas c-komennolla muutetaan yhtä sanaa tai lausetta. Itse tekisin tuon maalaamalla ensin koko lauseen (ensin 'v' ja sitten nuolinäppäimillä maalaten, tai hiirellä koko operaatio), ja sitten painaisin 'c'.

edit: Näköjään löysit yhden ratkaisun jo ennen kuin sain viestini kirjoitettua. Näin ei olisi käynyt, jos tämä foorumisofta tukisi Vimiä.  ;) Mutta siis yleensä suosin itse c-tä s:n sijaan, ja jos useita samanlaisia muutoksia pitää tehdä, niin sitten komennon ja haun toistonappuloilla yleensä käy nopeimmin. s:n kanssa taas voi kokeilla regexpiä, jotenkin näin: ":%s/alku.+loppu/uusi lause/cg". Map-komentoa en itse ole vuosiin tarvinnut, sillä editori on jo sellaisenaan hämmästyttävän monipuolinen.

En muuten tiedä, onnistuuko s:llä kokonaisten lauseiden muuttaminen lainkaan, jos lause ulottuu usealle riville.
« Viimeksi muokattu: 21.09.05 - klo:15.43 kirjoittanut wille »

mikk0

  • Käyttäjä
  • Viestejä: 555
    • Profiili
Re: Kysymyksiä Vimistä
« Vastaus #3 : 22.09.05 - klo:07.14 »
Tässä oli ideana käyttää tuon Ubuntuguiden suomennokseen tätä Vimiä. Eli siis guidessa on useita samanlaisia lauseita monessa eri paikassa ja tarkoitus oli suomentaa ne kaikki kerralla.

Siksipä tämmöinen kysely, sillä siinähän alkuperäinen lause on jo olemassa ja se siis tarvitsee vain saada sinne :s -komennon korvattava-kohtaan.

Mikko

Mikko Saarinen

wille

  • Käyttäjä
  • Viestejä: 15
    • Profiili
Re: Kysymyksiä Vimistä
« Vastaus #4 : 22.09.05 - klo:13.01 »
Tässä oli ideana käyttää tuon Ubuntuguiden suomennokseen tätä Vimiä. Eli siis guidessa on useita samanlaisia lauseita monessa eri paikassa ja tarkoitus oli suomentaa ne kaikki kerralla.

Siinä tapauksessa varmaan s:llä onnistuu nopeimmin, jos lause mahtuu yhdelle riville. Tuo toinen tapakin on aika nopea, koska toistot voi yleensä tehdä kahden napin painalluksella ('n'  ja '.' ). Rivinvaihdot eivät siinä haittaa.
« Viimeksi muokattu: 22.09.05 - klo:13.03 kirjoittanut wille »

wille

  • Käyttäjä
  • Viestejä: 15
    • Profiili
Re: Kysymyksiä Vimistä
« Vastaus #5 : 24.10.05 - klo:13.53 »
Tämä ei liity pelkästään Vimiin, mutten löytänyt pikahaulla soveltuvaa vastausta muualta:


$ sudo apt-get install vim-gtk
Luetaan pakettiluetteloita... Valmis
[...]
Näillä paketeilla on tyydyttämättömiä riippuvuuksia:
  vim-gtk: Riippuvuudet: vim (= 1:6.3-078+1ubuntu3) mutta 1:6.3-085+1 on merkitty asennettavaksi


Mitähän tällaisessa tilanteessa kannattaa tehdä? Asennettuna on Breezy.

edit: Ongelma ratkesi poistamalla Vim ja asentamalla se uudestaan. Näköjään mulla oli Debianista otettu Vim asennettuna.  ::)
« Viimeksi muokattu: 24.10.05 - klo:14.04 kirjoittanut wille »

mikk0

  • Käyttäjä
  • Viestejä: 555
    • Profiili
Re: Kysymyksiä Vimistä
« Vastaus #6 : 16.12.05 - klo:11.31 »
Nyt pitäisi saada substitute-komennolla rivinvaihto aikaiseksi, mutta miten?

sedillä onnistuu esim s/searchpattern/searchpattern\n/,
jolloin tuon patternin jälkeen ilmestyy rivinvaihto.

Jos teen saman vimillä, niin rivinvaihdon sijasta sinne ilmestyy jokin ^@ -merkki.

Miten tämä pitäisi tehdä?

Mikko

Mikko Saarinen