Vi szerkesztő: Miért gondolja a programozók, hogy ez a régi szerkesztő még mindig félelmetes

Közzététel: Támogatása segít fenntartani a webhely működését! Az ezen az oldalon javasolt szolgáltatások némelyikén referenciadíjat keresünk.


A Vi egy szöveges szerkesztő, amelyet eredetileg a Unix operációs rendszer számára hoztak létre. A menük helyett a vi a billentyűparancsok kombinációit használja a parancsok végrehajtásához. Mint ilyen, nincs szükség egér vagy érintőpad használatára – minden kizárólag a billentyűzettel történik.

Ismerje meg a Vi Szerkesztőt

Rövid története

A Vi eredete visszakerül a legkorábbi parancssori szerkesztőbe, amelyet az Unix rendszerekben ed-nek hívtak. Ed rendkívül jól működött a teletípusokkal, de nem volt alkalmas a kijelző terminálokra. Nagyon sokan barátságtalannak ítélték meg, és magukra vállalták, hogy jobb verziót hozzanak létre. Közöttük George Coulouris, akkoriban a Queen Mary College oktatója, aki létrehozta az em-et, a megjelenítési terminálokhoz tervezett szerkesztőt..

1976-ban meglátogatta a Berkeley UC-t, és különféle embereknek mutatta meg őket. A reakciók vegyesek voltak, de néhány hallgató, Bill Joy és Chuck Haley lenyűgözte em-jüket, és alapjául használta saját szerkesztésük alapját, az en elnevezést, amelyet azután kibővítettek, hogy létrehozzák az ex 0.1-es verziót. Miután Haley elhagyta a Berkeley-t, Joy 1977-ben átalakította a szerkesztőt, amikor teljes képernyős vizuális módot adott az ex-hez, lehetővé téve, hogy a szöveget teljes képernyőn nézzék meg, és ne csak egy sort jelentsenek egyszerre..

Az Ex 1.1 hivatalosan szerepelt az első BSD Unix kiadásban 1978-ban, és vi-ként vált ismertté az ex 2.0 kiadása után, a második Berkeley Software Distribution részeként, 1979-ben, amikor a szerkesztőt “vi” néven telepítették, mert automatikusan a felhasználók egyenesen az ex vizuális módjára.

vi klónok

Figyelembe véve azt a tényt, hogy az eredeti vi forráskódja 2002-ig nem volt szabadon hozzáférhető, a vi szerkesztő sok klónját elkészítették. Hasonló megjelenésűek és funkcionálisak voltak, de teljesen a semmiből készültek. Ez lehetővé tette további funkciók hozzáadását és a szerkesztő más portokba portolását.

A vi klónok listája tartalmazza Calvin, elvis, elwin, lemmy, nvi, stevie, vile, viper, BusyBox és xvi. A legnépszerűbb klón azonban a Vim, amely a legtöbb UNIX rendszerrel elosztott vi szerkesztő továbbfejlesztett változata.

életkedv

A Vim a Vi IMproved kifejezést jelenti, és még több funkcióval rendelkezik, mint a vi, így sok programozó körében kedvencévé vált. A szolgáltatások tartalmazzák a (szkriptálható) szintaxis kiemelést, az egér támogatását, a grafikus verziókat, a vizuális módot, az új szerkesztési parancsokat és az ex parancsok kiterjesztéseit. Szinte minden Linux disztribúcióhoz tartozik, és minden Apple MacOS példányhoz mellékelve van.

Mivel néhány V-funkció hiányzik a Vim-től, rendelkezik egy vi kompatibilitási móddal, ami szigorúbban megfelel a vi-nek. Ez a szolgáltatás vezérelhető a: kompatibilis opcióval.

A Vim sokféle módon testreszabható – beleértve a felhasználói felületet és az alapvető funkciókat. Személyre szabott makrókat definiálhat a billentyűleütések sorozatának automatizálásához, a belső felhasználói funkciók beállításához és a számos bővítmény előnyeinek kihasználásához, amelyek új funkciókat adnak a Vim-hez. A beépülő modulokat a Vim belső szkriptnyelvén, vimscript néven írják. Támogatja a Lua, Perl, Python, Ruby, Tcl és Racket parancsfájlokat is.

A Vi alapjai

Ez a szakasz bemutatja a vi összes alapját, hogy azonnal megkezdje a dokumentumok hatékony szerkesztését. De ne felejtsd el: még sokkal többet kell tudni, és minden, amit megtanulsz, termelékenyebbé tesz majd.

Mit csinál Vi??

A vi gombbal csak a billentyűzet segítségével szerkesztheti a szöveges fájlokat. Ide tartoznak az XML, TeX, HTML és a programozási nyelvek, de nem a bináris fájlok, például a Word vagy az OpenDocument. Fájl szerkesztéséhez írja be a parancssort:

vi fájlnév

Amikor a vi fut, átveszi a terminál ablakot. Ha a fájl már létezik, annak eleje kitölti a képernyőt. A fájl neve az utolsó sorban jelenik meg. Ha még nem létezik, a képernyő üres sorokkal fog kitölteni, kivéve a bal oldali margóban lévő tilde-t. Az alsó sorban a név után az „[Új fájl]” jelenik meg.

Kezdetben parancs módban van. Ez a vi három fő módjának egyike. Parancs módban minden billentyűleütés parancs. A „i” megnyomásával indíthatja el. Most beszúrási módban van, ahogy az ablak alján található „- INSERT -” szó emlékezteti Önt. Mindent, amit gépel, szövegként illeszt be. A beszúrás és a parancs mód közötti visszatéréshez nyomja meg a gombot.

A harmadik mód az utolsó sor üzemmód. Parancs módból érheti el a kettőspont (:) billentyű beírásával. Amíg az utolsó sor módban van, parancssort ad meg az ablak alján. Csak akkor hajtja végre, ha megnyomja. A beillesztett anyag mentéséhez írja be a „: w” (kettőspont, amelyet w és kisbetű követi) betűt. Ez kiírja a fájlt. Ha ez egy új fájl, akkor meg kell adnia a fájl nevét. Ezt a „: w fájlnév”, majd a „w” fájl megadásával hajthatjuk végre. Ezután visszatér a parancs módba.

A vi minden billentyűleütése kis- és nagybetűk között érzékeny! Ha véletlenül lezárja a sapkákat, furcsa dolgok történhetnek.

Navigáció

Ez a cikk csak néhány alapvető vi parancsot ír le. További részletekért tekintse meg a vim dokumentációját.

Kis méretű mozgás

A kurzort a nyílbillentyűkkel vagy a „j” (le), „k” (fel), „h” vagy (balra) és „l” vagy (jobb) gombokkal mozgathatja. A nyílbillentyűket több okból elkerülni kell. A legnagyobb az, hogy az ujjainak nem kell elhagyniuk a kezdőhelyzetet. Másik lehetőség, hogy nem mindig érhetők el – ha talál egy régi verziót, vagy olyan, ahol a terminál típusa nincs megfelelően beállítva. Végül, ha nekünk a: map funkciót (lásd alább), könnyebb használni a betűparancsokat.

Egy szót továbbléphet a „w” gombbal, vagy visszatérhet egy szót a „b” betűvel.

Nagyméretű mozgás

A „0” beírása a sor elejére, a „$” a végére viszi. Hasonlóképpen: „: 0” viszi a fájl elejére, a „: $” pedig a végére. Ez egy általános rendszer része, ahol a „: num” eljuttatja a sorszámhoz. Tehát a „: 101” elviszi a 101. sorszámra (Ha a fájlban kevesebb, mint 101 sor található, akkor a fájl végére viszi.)

A Vi általában lehetővé teszi, hogy fontos dolgokat egynél több módon tegyen. Tehát eljuthat egy adott sorhoz a “Gnum” segítségével, ahol num a sorszám. Ennek az az előnye, hogy szükség van egy kevesebb karakterre. Ennek az a hátránya, hogy nem áll összhangban a „0” és a „$” értékkel, így a „0G” nem viszi el a fájl elejére, és a „$ G” nem viszi a végére.

Két további kritikus navigációs parancs a ctrl-b az oldal visszalépéséhez, és a ctrl-f az oldal továbblépéséhez.

Szöveg hozzáadása és módosítása

Már látta az „i” parancsot a szöveg beszúrására. A kurzortól kezdve elhelyezi, amit beírt. Az „a” parancs beilleszti a karaktertől kezdődő szöveget az Ön után. Tehát könnyű azt gondolni, hogy ez a két parancs az (i) beszúrás és az (a) függelék. Ha emlékszel rájuk, könnyen megjegyezheti a parancsok nagybetűs verzióit. Az „A” parancs beszúrja a szöveget a sor végére, az „I” parancs beszúrja a sort a sor elejére. A nagybetűs „A” parancs hozzáfűzi azt, amit a sor végére ír.

Az „o” beírásával új sor nyílik meg a kurzor után, és elkezdheti beírni. Az „O” nagybetű ugyanezt fogja tenni a kurzor előtt.

Szöveg törlése

A törlés parancsai nagyon sokoldalúak. A „dw” beírásával egy szót töröl, a kurzor pozíciójától kezdve. Megadhat egy számot előtte, hogy törölje ezt a sok szót. Tehát a „3dw” három szót töröl. A „d $” vagy a „D” gépelés törli a sor végére. A „dd” parancs törli az egész sort, a „10dd” pedig tíz sort. A „d” (d betű és egy szóköz) vagy az „x” beírásával egyetlen karakter törlődik. A „20x” beírásával legfeljebb 20 karakter törölhető, de nem léphet túl az aktuális soron.

Szöveg megváltoztatása

A szöveg megváltoztatására szolgáló parancs „c”. Pontosan ugyanúgy működik, mint a „d” parancs, azzal a különbséggel, hogy beillesztési módba kerül, ahol a szöveget törölték. Tehát a 3cw három szót töröl, és helyettesíti azokat a gépeléssel, amíg be nem üt .

Ne essen pánikba, ha rosszul törölte. Az „u” parancs visszavonja az utolsó változtatást. A legtöbb megvalósításban többször is megadhatja, hogy visszavonja a legutóbbi módosításokat. Ha egyszer annyit von vissza, a ctrl-r újraindítja azt, amit éppen megszüntett.

Az vi egyik legerõsebb dolga a „.” parancs. Ez megismétli az utolsó változást. Tehát, ha éppen a „3cw” gombbal változtatott meg szöveget, akkor a „.” a következő három szót (bárhol is vagy) azt fogja okozni, amellyel megváltoztatta az utolsó három szót. Vagy ha csak tíz sort törölt „10dd” betűvel, akkor a „” betűvel beírja. törli a következő tíz sort. Ez nagyon hasznos a „: map” paranccsal is.

Szöveg beillesztése

Szöveget mozgathat az egyik helyről a másikra törlés és beillesztés útján. A beillesztés parancsa: „p” beillesztés a kurzor után, vagy „P” beillesztés előtte. Ha egy vagy több teljes szövegsort töröl, a szöveg az aktuális sor alatt („p” betűvel) vagy felett („P” betűvel) jelenik meg..

Rúgó szöveg

A „yank” parancs, a „yank”, másolás helyett másol, nem pedig törli. A szöveget átmeneti pufferbe helyezi, amelyet másutt beilleszthet, egyszer vagy többször. A lehetőségek megegyeznek a törlés opcióival, azzal a különbséggel, hogy az „yy” egy egész sor felcsavarására szolgál. (Ez megfelel a „dd” -nek, hogy egy egész sort töröljen.)

Légy óvatos. Minden alkalommal, amikor rángat vagy törli, a szöveg bekerül a névtelen pufferbe, amely hasonló a vágólapra más alkalmazásokban. Ez felváltja az előző, névtelen puffert. Ha egy kicsit hosszabb ideig szeretné megtartani a szöveget, használhatja a 26 elnevezett puffer egyikét. Megadja, hogy a betűjelet kettős idézőjelet megelőzi. Négy sor becsavarása a „c” nevű pufferbe, írja be a „4 ″ cyy” értéket (egyszeres idézőjelekkel az érthetőség kedvéért). Beillesztéshez ugyanazt a dupla idézőjelet és pufferbetűt kell használni a beillesztés parancs előtt. Tehát, ha azt a négy sort szeretné beilleszteni, amelyet éppen átmásoltunk a „c” pufferbe, az aktuális alatti sorba, akkor a „” cp parancsot kell használni..

keresés

Szöveg kereséséhez írja be a „/” betűt, majd a keresési karakterláncot és. A kurzort követően megtalálja a következő mérkőzést, szükség esetén a tetejére tekerve. A visszakereséshez írja be a “?” ahelyett “/.”

Ügy

Alapértelmezés szerint a keresés kis- és nagybetűk között érzékeny. A kis- és nagybetűk közötti érzékelés nélküli kereséshez indítsa el a keresési karakterláncot a „c” betűvel. Tehát, ha a „/ cthis” -t követi, akkor vi megtalálja „ezt”, nagybetűtől függetlenül. Az alapértelmezett értéket úgy is megváltoztathatja, hogy beírja a következőt: „: ignorecase”. Beírhatja a „: set ic” beállítást is. A kis- és nagybetűk közötti kereséshez való visszatéréshez írja be a „: set noignorecase” vagy a „: noic” beállítást.

Az utolsó keresést megismételheti az „n” paranccsal. Ha ellenkező irányba szeretne keresni, használja az „N” parancsot.

Rendszeres kifejezések

A keresési karakterlánc valójában egy reguláris kifejezés. Ez lehetővé teszi a minták keresését, de egyes karakterek nem működnek szó szerint. Egyszerű példaként a „w..d” kifejezésre keresve „fa”, „szél” vagy „w00d” található. Ez azért van, mert “.” a keresés bármely karakterhez illeszkedik. Ha a “.” beír egy előrejelzést előtte. Így írná be a „/” betűt. parancs.

A reguláris kifejezésekkel kapcsolatos további információkért lásd a cikkünket, a Regular Expressions Primer és az erőforrás című cikkünket.

Munka fájlokkal

Mint már említettük, a „: w” elmenti a fájlt. Ha másik fájlba szeretné menteni, írja be a „: w newfilename” elemet. Ha készen áll a vi-re, gépelhet „: wq” gombbal a mentéshez és a kilépéshez. Ne felejtsük el, hogy az utolsó sorban egy kettősponttal kezdődő parancsnak be kell írnia a teljes kitöltést. Ennek eredményeként sok vi rajongó használja a „ZZ” parancsot, amely ugyanazt teszi.

Új fájl

Ha másik fájlra szeretne váltani, írja be az „: e newfilename“ parancsot. Ha még nem mentette el az előző fájlt, a vi figyelmeztet. Ha valóban el akarja dobni a változtatásokat, használja az „e! newfilename „. Használhatja az „: e!” fájlnév nélkül, ha összezavarodott, és visszatérni szeretne az aktuális fájl utolsó mentett verziójához.

Válthat az aktuális és az utoljára szerkesztett fájl között a „: e #” paranccsal. Ezzel átválthat két fájl között oda-vissza, ami hasonló a két fájl egyszerre szerkesztéséhez, amelyet alább tárgyalunk.

Több fájl

Egyszerre több fájlt szerkeszthet, és válthat azok között. A vi terminológiában váltod a szerkesztési pufferek között. Több fájl egy munkamenetben történő szerkesztéséhez indítsa el a vi parancsot a következő parancssorral:

vi fájl1 fájl2 fájl3

Az első felsorolt ​​fájl megjelenik a képernyőn. A „: bn” (következő puffer) vagy „: bp” (előző puffer) használatával léphet át rajtuk. Megnevezett pufferekbe is becsaphatja a szöveget az egyik fájlból a másikba. (A pufferek szerkesztése és a pufferek beillesztése két különböző dolog. Kicsit zavaró.)

Shell parancsok Vi

A parancsok parancsai futtathatók anélkül, hogy elhagyná a vi. Ehhez írja be a “:!” (kettőspont és felkiáltójel), majd a parancs. Megjelenik a parancs kimenete, majd meg kell nyomnia a parancs módba való visszatéréshez. Még a „:! Sh” betűt is beírhatja, ha a héjon belülről futtat egy parancsértelmezőt, végrehajtja a több parancsot, majd visszatérhet a vi elemre. Ez akkor hasznos, ha szerkeszti valamilyen kódot, és tesztelni akarja a változásokat.

Futtathat egy shell parancsot, és beillesztheti annak kimenetét az aktuális fájlba az „: r!.

Billentyűzet leképezés

Az egyik legerőteljesebb dolog a vi számára az a képesség, hogy a parancsokat kulcsokra kell leképezni. Ez a következőképpen történik:

: térképparancsok

A kulcs egyetlen karakter. Bármely karakter lehet, de legjobban nem használja olyan kulcsot, amely már olyan parancs, mint a „c” vagy az „a”. A parancsok meglehetősen bonyolultak lehetnek. Tartalmazhatják például az Enter billentyűt a „” és az escape billentyűt a „” betűvel. Tehát ha ismétlődő feladata van, akkor egyszerűen hozzárendelheti egyetlen kulcshoz. Például a következő parancs hatására a „q” gomb a következő sor második szavára lép, és változtassa meg a „Súgó!” Gombra. és térjen vissza az eredeti sor első karakteréhez:

: térkép q j0wcwHelp! k

A térképparancs a leghatékonyabb, ha reguláris kifejezésekkel és az ismétlés („.”) Paranccsal kombinálják. Ha bármilyen unalmas dolgot csinál a vi alatt, nézd meg, készíthet-e egy leképezést, amely meg tudja csinálni. A legtöbb esetben megteheted.

Erőforrások

Ez egy nagyon gyors áttekintés arról, hogy mi lehetséges a vi. Ismételje meg a dokumentáció teljes információit. Érdemes megjelölni egy csaló lapot, például a vimsheet.com vagy a Vim Cheat Sheet for Programmers. Itt van még néhány forrás:

Online források

A következő források különféle cikkeket, oktatóanyagokat és még csalókat tartalmaznak.

  • The Traditional Vi: a vi szerkesztő hivatalos honlapja letöltési linkekkel.
  • Vi GYIK: nagyszerű kezdőpont, mivel választ ad a leggyakrabban feltett kérdésekre a vi-ról és miért érdemes megtanulni.
  • Bevezetés a képernyőszerkesztéshez a Vi használatával: egy oktatóanyag a VI-ről, haladóbb felhasználók számára, ismertetve annak jellemzőit és használatát.
  • Vi Kézi oldal: leírja az elérhető parancsokat.
  • Unix – A Vi szerkesztő bemutatója: egy nagyon rövid és lényegre szóló bemutató a vi számára, amely teljes kezdőknek szól.
  • Hogyan kell használni a Vi-t: egy újabb oktatóprogram, amely a kezdõ kezdõk számára egy „szelíd bevezetõként” szolgál a szerkesztõ számára, de referenciaanyagként is használható a köztes felhasználók számára.
  • Vi Cheat Sheet: egy praktikus csaló lap a mag vi parancsairól.
  • Vim: a Vim hivatalos honlapja.
  • Interaktív Vim oktatóanyag: ahogy a neve is sugallja, ez az oktatóanyag interaktív – a parancssort és a billentyűzetet közvetlenül a böngészőjében emulálja, így kipróbálhatja és megtanulhatja a Vim-et anélkül, hogy félne a számítógépétől..
  • Grafikus Vi-Vim Cheat Sheet and Tutorial: egy grafikus cheat lap, amely megmutatja a GIF billentyűzet alapvető parancsát, a hozzá tartozó oktatóprogrammal.
  • Vim félelmetes: egy meglehetősen nagy méretű bővítmény a Vim számára.
  • Rendkívül gyors és egyszerű bevezetés a Vi szövegszerkesztőbe: Norm Matloff oktatója „5 perces bevezetést” nyújt a vi számára. Valószínűleg kissé túlságosan kevés az igaz kezdők számára, de ez egy nagyszerű dokumentum, ha csak egy gyors emlékeztetőre van szüksége.
  • Vi Szövegszerkesztő: ez a Ryan oktatóanyaga alapvető bevezetést nyújt, amely útmutatást nyújt a semmit nem ismerőktől.
  • Tanulja meg a Vim-t fokozatosan: ez az oktatóanyag elején kezdődik, de sok fejlett témához gyorsan belekerül.
  • Leképezési gombok Vim-ben: ez egy átfogó útmutató a leképezéshez a vim segítségével. Ha vi energiafelhasználóvá akarsz válni, ellenőrizd ezt.

Video oktatóanyagok

Számos video oktatóprogram áll rendelkezésre, ha inkább a továbbtanulás során szereti tanulni.

  • A Vi / Vim szerkesztő: bevezető útmutató a vi / vim szerkesztő használatáról, beleértve egy fájl megnyitását, szöveg beszúrását, a szöveg fájlba írását és a vi kilépését.
  • Tanuld meg szeretni a Vim-t: önmagában nem egy bemutató, de kiemeli, hogy miért kellene a Vim-et használni.
  • Learning Vim egy héten: Mike Coutermash által bemutatott beszélgetés, amely a Blog Vim in heti blogbejegyzésén alapul. A kezdőknek szól, és magában foglalja a Vimmel való felkelést és a futást.

Könyvek

Tekintettel mind a vi, mind a Vim népszerűségére, a következő könyvek nagymértékben ismertetik a szerkesztõket.

  • Robbins, Hannah és Lamb tanulmánya a Vi és Vim Szerkesztőknek (2008): ismerteti a szerkesztés alapjait és a fejlett eszközöket mind a szerkesztők, mind a programozók számára, például a többablakos szerkesztést, hogyan lehet interaktív makrókat és szkripteket írni a szerkesztő kibővítéséhez, és több.
  • Damien Conway Mastering Vim (2014): leginkább köztes felhasználók számára, a Vim fejlettebb funkcióit, konfigurációs lehetőségeit és számos olyan plugint tartalmaz, amelyek jobb szerkesztési élményt nyújtanak.
  • Hogyan kell használni a UNIX-LINUX Vi szövegszerkesztőt: Tippek, trükkök és technikák (és oktatóanyagok is!) (2006), készítette Larry L Smith: ez egy rövid és egyszerű bevezetés a szerkesztőbe. Ha hétvégén szeretne felkelni és futni, akkor ezt a könyvet kell használni.
  • Gyakorlati célok: Szöveg szerkesztése a gondolkodás sebességén (2015), készítette: Drew Neil: ha már ismeri a vi szerkesztőt, és szeretne hatalmi felhasználóvá válni, akkor ezt a könyvet kell használni. 126 tippből áll, amelyek megmutatják, miért vesznek néhány ember vi.
  • A Vi és Vim szerkesztői Pocket Reference (2011), készítette: Arnold Robbins: a vi, a Vim és a vi fő klónjainak legértékesebb parancsaira vonatkozik.

Beletelik egy ideig, hogy egy vi-szakértővé váljon, de ha odaér, ​​akkor azon tűnődni fog, vajon miért zavart valaha egy egérrel.

Következtetés

A komoly fejlesztők között (legalábbis a Unix világában) valóban csak két szerkesztőt érdemes megemlíteni: Emacs és vi. Mindkettőnek megvannak az előnyei és hátrányai. És a különböző embereknek erős véleményük van arról, hogy melyik szerkesztőt kell használniuk.

Richard Stallman a GNU Projekt és a szabad szoftvermozgalom alapítója. Amellett, hogy a kezdeti GNU fordítót (GCC) írta, GNU Emacsot írt. Itt van egy kis móka a vi költségén:

Az Emacs ennél sokkal többet tehet – főleg ha Lisp-ben kódol. De a vi rendkívül könnyű, és olyan emberek számára, akik jól ismerik, rendkívül erős és gyors.

A fenti források segítenek Önnek azonnali vi mesterré válni – és jelentősen javítják a termelékenységet.

További olvasmányok és források

Több útmutató, oktatóanyag és infographics található a kódoláshoz és fejlesztéshez:

  • Mantis tárhely: megtudhatja, mely webtárhely-szolgáltatók kínálnak akciós ajánlatokat, beleértve ezt a népszerű hibakövető programot, amely a komoly kódolók alapvető eszköze.
  • Ubuntu Primer: mindent megtudhat az egyik legnépszerűbb Linux disztribúcióról. Ez egy nagyszerű rendszer, amellyel továbbfejleszthető – és a vim-kel együtt jár!
  • Objektum-orientált programozás: megismerheti az objektum-orientált nyelvek fogalmait és az objektum-orientált programozási nyelvek széles skáláját. Néhányan meglephetnek. Objektum-orientált Fortran?!

Vajon az internet túlélné-e a világ végét??

Gondolkozott már azon azon, hogy egy súlyos katasztrófa milyen hatással lenne az internetre? Nézze meg infográfunkat: Túlélné-e az internet a világ végét? Lehetséges, hogy mindannyian elpusztulunk, de az internet tovább élne.

Megélné-e az Internet a világ végét?
Vajon az internet túlélné-e a világ végét??

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map