vim ­čç╣­čçĚ

vim ­čç╣­čçĚ

- 11 mins

├ľzet

Terminal ├╝zerinden kullan─▒lan en me┼čhur yaz─▒ d├╝zenleme program─▒ VIM hakk─▒nda komutlar ve baz─▒ kullan─▒┼čl─▒ linux komutlar─▒

Script nas─▒l yaz─▒l─▒r.

VIM

Birden fazla dosya ├╝zerinde ├žal─▒┼čmak

$ vim *.txt # birden fazla txt ile dosyas─▒n─▒ ayn─▒ anda a├žman─▒z─▒ sa─člar (e─čer birden fazla dosya mevcut ise)
$ :wall veya :qall # b├╝t├╝n a├ž─▒k dosyalardan yaz veya ├ž─▒k komutudur.
$ vim -o *.txt # birden fazle txt dosyas─▒n─▒ a├žar ve yatay d├╝zlemde g├Âsterir, dikey d├╝zlem i├žin -O parametresi kullan─▒lara
$ :args *.txt # txt ile biten b├╝t├╝n dosyalar─▒ argument listesine aktar─▒r.
$ :all # b├╝t├╝n dosyalar─▒ yatay d├╝zlemde ay─▒r─▒r
$ CTRL-w # birden fazla pencere aras─▒nda gezmenizi sa─člar
$ :split # ayn─▒ dosyay─▒ iki farkl─▒ pencerede g├Âsterir.
$ :split <ac─▒lacak_dosya> # dosyay─▒ yeni bir pencerede a├žar
$ :vsplit # brden fazla pencereyi dikey komunda ay─▒r─▒r, tablolar i├žin ├žok kullan─▒┼čl─▒d─▒r. ":set scrollbind " komutu ile a├ž─▒k dosyalar da ayn─▒ anda yukar─▒ a┼ča─č─▒ yapabilirsiniz. 
$ :close # bulundu─čunuz pencereyi kapat─▒r
$ :only # bulundu─čunuz pencere hari├ž di─čerlerinin tamam─▒n─▒ kapat─▒r. 

Hece Kontrol├╝ & S├Âzl├╝k

$ aspell -c <dosya> # verilen dosyada heceleri kontrol eder, terminal komutudur
$ aspell -l <dosya> # terminal komutu
$ :! dict <cumle> # c├╝mlenin anlam─▒n─▒ kontrol etmenizi sa─člar
$ :! wn 'cumle' -over # c├╝mlenin e┼č anlaml─▒lar─▒n─▒ g├Âsterir

Dosyay─▒ yazd─▒rma

 $ :ha # b├╝t├╝n dosyay─▒ yazd─▒r─▒r
 $ :#,#ha # (#,#) ile belirtilen alandaki metini yazd─▒r─▒r

Birle┼čtime / Ekleme Komutu

 $ :r <dosya_ismi> # a├ž─▒k olan dosya i├žerisine,
                   # ayn─▒ dizinde olan ba┼čka bir dosyay─▒ eklemek i├žin bu komut kullan─▒labilir,
                   # imlecin hizas─▒ndan sonra ekleme yapar

Geri Alma / Yeniden Alma

 $ u # en son yapt─▒─č─▒n─▒z de─či┼čikli─či geri al─▒r
 $ U # yapt─▒─č─▒n─▒z b├╝t├╝n de─či┼čiklikleri geri al─▒r
 $ CTRL-R # geri al─▒nm─▒┼č bir k─▒sm─▒ yeniden getirmenizi sa─člar.
 

Kopyalama & Yap─▒┼čt─▒rma

 $ yy # imlecin bulundu─ču sat─▒r─▒ kopyalar, 2 sat─▒r kopyalamak i├žin 2yy kullan─▒labilir.
 $ p # kesilen/kopyalanan i├žeri─či imle├žten ba┼člayacak ┼čekilde yap─▒┼čt─▒r─▒r 
 

Silme/Kesme (NORMAL modda uygulan─▒r. Yani Vim komut sat─▒r─▒nda de─čil. EXE modunda de─čil. )

 $ x # imlecin ├╝zerinde bulundu─ču karakteri siler.
 $ dw # imlecin bulundu─ču kelimeyi sonuna kadar siler (Bo┼čluklar dahil )
 $ de # imlecin bulundu─ču kelimeyi sonuna kadar siler (Bo┼čluklar hari├ž )
 $ cw # kelimenin geriye kalan k─▒sm─▒n─▒ siler ve sizi ekleme moduna al─▒r, ekleme modundan ESC ile ├ž─▒kabilirsiniz.
 $ c$ #  bulundu─ču sat─▒r─▒ tamamen siler ve sizi ekleme moduna al─▒r ekleme modundan ESC ile ├ž─▒kabilirsiniz. 
 $ d$ # imlecten itibaren sat─▒r─▒ siler e
 $ dd # sat─▒r─▒ tamamen siler, imlecin nerede oldu─čunun ├Ânemi yoktur
 $ 2dd # ileriki 2 sat─▒r─▒ siler, benzer sekilde 3dd : uc sat─▒r siler, 4dd: dort sat─▒r siler, (imlecten bag─▒ms─▒z)
    Koyma  

 $ p # kesilen/kopyalanan i├žeri─či imle├žten ba┼člayacak ┼čekilde yap─▒┼čt─▒r─▒r 
 

Dosya i├žerisinde arama (Vim) (bu k─▒s─▒mda genelde d├╝zenli ifadeler kullan─▒l─▒r )

 $ /aramak_istedi─činiz_d├╝zen # yazd─▒─č─▒n─▒z ifadeyi a├ž─▒k olan belge i├žerisinde arar ve hepsini i┼čaretler
 $ ?aramak_istedi─činiz_d├╝zen # yazd─▒─č─▒n─▒z ifadeyi a├ž─▒k olan belge i├žerisinde arar ama i┼čaretlemez, n ile ileriki kelimeyi g├Ârebilirsiniz. 
 $ :set ic # kelimelerin b├╝y├╝k/k├╝├ž├╝k harf ayr─▒m─▒n─▒ ortadan kald─▒r─▒r
 $ :set hls # aranan ve bulunan kelimeleri vurgulu ┼čekilde g├Âsterir.

D├╝zenli ifadeler ile metin y├Ânetimi

 $ :s/harf1/harf2/ # harf1, harf2 ile de─či┼čtirilir fakat sadece ilk kar┼č─▒la┼čmada yap─▒l─▒r
 $ :s/harf1/harf2/g # b├╝t├╝n dosya i├žerisindeki harf1, harf2 ile de─či┼čtirilir.
 $ :s/harf1/harf2/gc # yukar─▒daki i┼člemin ayn─▒s─▒n─▒ onay alarak yapmak i├žin "c" eklenir
 $ :#,#s/harf1/harf2/g #  (#,#) aras─▒ndaki sat─▒rlarda bulunan harf1, harf2 ile de─či┼čtirilir.
 $ :%s/harf1/harf2/g # t├╝m dosyadaki harf1 ifadesi harf2 ile de─či┼čtirilir.
 $ :%s/\(harf1\)\(.*\)/\1/g # harf1 sonrakisindeki b├╝t├╝n sat─▒rlar─▒ siler.
 $ :%s/\(SL\dm\d\d\d\d\d\.\d\)\(.*\)/\1\t\2/g #  SL1m12345.1 ve tan─▒m─▒ aras─▒na TAB bo┼člu─ču ekler 
 $ :%s/\n/ifade/g #Sat─▒r verilen ifade ile de─či┼čtirilir.
 $ :%s/\(^SL\dm\d\d\d\d\d.\d\t.\{-}\t.\{-}\t.\{-}\t.\{-}\t\).\{-}\t/\1/g  #  5 ve 6.nc─▒ TAB taki (5. Kolondaki), i├žeri─či "{-}" ile degi┼čtirir. 
 $ :#,#s/\( \{-} \|\.\|\n\)/\1/g # (#,#) verilen aral─▒kta ne kadar c├╝mle oldu─čunu hesaplar
 $ :%s/\(E\{6,\}\)/<font color="green">\1<\/font>/g # 6 dan fazla E ge├žen k─▒s─▒mlar─▒, HTML renkleri ile vurgular.
 $ :%s/\([A-Z]\)/\l\1/g # B├╝y├╝k harfleri, k├╝├ž├╝k harfler ile de─či┼čtirir, '%s/\([A-Z]\)/\u\1/g' , bu ise k├╝├ž├╝k harfleri b├╝y├╝k harfler ile de─či┼čtirir.
 $ :g/ifade/ s/\([A-Z]\)/\l\1/g | copy $ # ifade yeni olu┼čturulan ifade ile de─či┼čtirilir e┼čde─čer olanlar copy $ ile yazd─▒r─▒l─▒r. 
 

HTML D├╝zenleme

 -metini HTML format─▒na cevirme
 $ :runtime! syntax/2html.vim # vim i├žerisinde bu komutu ├žal─▒┼čt─▒r─▒n─▒z.
 

Vim i├žerisinden terminal komutu ├žal─▒┼čt─▒rma

 $ :!<terminal_komutu> <ENTER> # terminal komutunu vim i├žerisinden ├žal─▒┼čt─▒r─▒r
 $ :sh terminal ile vim aras─▒nda gezmenizi sa─člar
 

Tablo d├╝zenleyicisi olarak VimÔÇÖ i kullanmak

 
 $ v # karakterleri se├žmek i├žin g├Ârsel mod ba┼člat─▒l─▒r.
 $ V # sat─▒rlar─▒ se├žmek i├žin g├Ârsel mod ba┼člat─▒l─▒r.
 $ CTRL-V # blok g├Ârsel se├žim yapman─▒z─▒ sa─člar.
 $ :set scrollbind # ayn─▒ ayna ayr─▒lan iki ayr─▒ dosyada gezinti yapman─▒z─▒ sa─člar. 
  

Vim ayarlar─▒n─▒ de─či┼čtirmek

- .vimrc dosyas─▒ i├žerisindeki parametreler iste─činize g├Âre de─či┼čtirilebilir.

Kullan─▒┼čl─▒ terminal komutlar─▒

 $ cat <dosya1> <dosya2> > <sonuc> # dosya1 ve dosya2 yi sonuc dosyasina kopyalar ve sonuc dosyasini olusturur.
 $ paste <dosya1> <dosya2> > <p_sonuc> # iki farkl─▒ kaynaktan gelen girdiyi, aralar─▒nda TAB bo┼člu─ču olacak ┼čekilde ayn─▒ dosya (p_sonuc) i├žerisine yap─▒┼čt─▒r─▒r.
 $ cmp <dosya1> <dosya2> # iki dosyan─▒n ayn─▒ olup olmad─▒g─▒n─▒ size bildirir.
 $ diff <dosya1> <dosya2> # iki dosya aras─▒ndaki farkl─▒l─▒klar─▒ g├Âsterir
 $ head -<numara> <dosya> # verdi─činiz numara kadar ilk X sat─▒r─▒ yazd─▒r─▒r.
 $ tail -<numara> <dosya> # verdi─činiz numara kadar son X sat─▒r─▒ yazd─▒r─▒r. 
 $ split -l <numara> <dosya> # dosyan─▒n sat─▒r─▒lar─▒n─▒ ay─▒r─▒r.
 $ csplit -f out dosya_ismi "%^>%" "/^>/" "{*}" # dosya_ismini > den itibaren bir├žok farkl─▒ k├╝├ž├╝k dosyalar olu┼čturur.
 $ sort <dosya_ismi> # dosya i├žerisindekileri s─▒ralar -b argument kullan─▒l─▒rsa bo┼čluklar─▒ yok sayar.
 $ sort -k 2,2 -k 3,3n girdi_dosyas─▒ > c─▒kt─▒ # -k argument i kolon i├žin, -n say─▒sal olarak s─▒ralar ve tablo ┼čeklinde kaydeder. 
 $ sort girdi_dosyas─▒ | uniq > c─▒kt─▒ # uniq komutu ayn─▒ olan verileri dahil etmez.
 $ join -1 1 -2 1 <tablo1> <tablo2> #  tablo1 ve tablo2 yi birle┼čtirir, -1 dosya1, 1:kolon1; -2dosya2, col2. 
 $ sort tablo1 > tablo1a; sort tablo2 > tablo2a; join -a 1 -t "`echo -e '\t'`" tablo1a tablo2a > tablo3 # '-a <tablo>' : verilen tablonun b├╝t├╝n kay─▒tlar─▒n─▒ yazd─▒r─▒r.  Normalde yazd─▒rma i┼člemi iki tabloda ortak olan k─▒s─▒mlar─▒ yazd─▒r─▒r.  '-t "`echo -e '\t'`" ->' 
 : TAB bo┼člu─ču kullanarak tablolar─▒ ├ž─▒kt─▒ dosyas─▒na yazd─▒r─▒r. 
 $ cat tablom | cut -d , -f1-3 # cut komutu : tablonun belirlenen k─▒s─▒mlar─▒ al─▒r, -d alanlar─▒n nas─▒l ayr─▒laca─č─▒n─▒ belirtilsiniz. -d : burada , olarak belirlenmi┼čtir, normalde TAB bo┼čluk, -f tablonun kolonlar─▒n─▒ belirtir, kolon 1 den 3 e. 

Kullan─▒┼čl─▒ tek sat─▒r komutlar

 $ for i in *.input; do mv $i ${i/isim\.eski/isim\.yeni}; done # isim.eski ad─▒ndaki dosyan─▒n ismini, isim.yeni olarak de─či┼čtirir. Komutu test etmek i├žin,  do mv komutu ├Ân├╝ne "echo" konulabilir.  
 $ for i in *.girdi; do ./uygulama $i; done #  bir ├žok dosya i├žin verilen uygulamay─▒ ├žal─▒┼čt─▒r─▒r. 
 $ for i in *.girdi; do komut -d /veri/../veri_taban─▒ -i $i > $i.out; done #  komut for d├Âng├╝s├╝ i├žerisinde *.girdi ├╝zerinde ├žal─▒┼č─▒r ve *.out dosyas─▒ olu┼čturur. 
 $ for i girdi *.pep; do hedef -db /usr/../veri_taban─▒ -seed $i -out $i; done # hedef in ├╝zerinde for d├Âng├╝s├╝ ├žal─▒┼čt─▒r─▒l─▒r ve ├ž─▒kt─▒ dosyas─▒ yazd─▒r─▒l─▒r.
 $ for j girdi 0 1 2 3 4 5 6 7 8 9; do grep -iH <ifade> *$j.seq; done # 
 verilen ifadeyi girdi > 10.000 dosyaya kadar arar ve ne kadar o ifade ge├žti─čini yazd─▒r─▒r.
 $ for i in *.pep; do echo -e "$i\n\n17\n33\n\n\n" | ./program $i > $i.out; done # etkile┼čimli program─▒ ├žal─▒┼čt─▒r─▒r ve girdi/├ž─▒kt─▒ sorar. 

Basit Perl Komutlar─▒

 $ perl -p -i -w -e 's/ifade1/ifade2/g' girdi_dosyas─▒ #  girdi dosyas─▒ i├žerisindekileri verilen ifadelere g├Âre de─či┼čimini yapar. '-p'  bu komut yedek bir dosya olu┼čturur 
 $ perl -ne 'print if (/ifade1/ ? ($c=1) : (--$c > 0)) ; print if (/ifade2/ ? ($d = 1) : (--$d > 0))' girdi_dosyas─▒ > c─▒kt─▒_dosyas─▒ # ifade1 ve ifade2 i├žeren sat─▒rlar─▒ ayr─▒┼čt─▒r─▒r (parse eder.)  

WGET (terminal ├╝zerinden linki verilen dosya indirimini ger├žekle┼čtirir.)

 $ wget ftp://ftp.itu.edu.tr.... # verilen linkteki dosya wget komutunun ├žal─▒┼čt─▒r─▒ld─▒─č─▒ dizine iner. 

SCP (─░ki makine aras─▒nda g├╝venli kopyalama i┼člemi sa─člar. )

 Genel Kullan─▒m.
 $ scp kopyalanacak_dosya kopyalanacak_yer #
 ├ľrnekler 
 Sunucudan dosya kopyalamak i├žin (bilgisayar─▒n─▒z─▒n terminalinden)
 $ scp kullan─▒c─▒@sunucu_ip:dosya_ad─▒ . # '.'  en sona nokta koyulmas─▒, sunucu ├╝zerindeki kopyalanacak dosyay─▒ bulundu─čunuz yere kopyalamas─▒n─▒ sa─člar. 
 Bilgisayar─▒n─▒zdan sunucuya kopyalama yapmak i├žin. (Bilgisayar terminalinden)
 $ scp resim.jpg kullan─▒c─▒@sunucu_ip:~/belgeler/resimler/
 Sunucu ├╝zerinde bulunan klas├Âr├╝ bilgisayar─▒m─▒za kopyalamak i├žin. (Bilgisayar terminalinden)
 $ scp -r kullan─▒c─▒@sunucu_ip:dizin/ ~/Masaustu
 Bilgisayar ├╝zerinde bulunan klas├Âr├╝ sunucuya kopyalamak i├žin. (Bilgisayar terminalinden)
 $ scp -r klas├Âr/ kullan─▒c─▒@sunucu_ip:dizin/
  

NFTP : (Dosya transfer i┼člemlerinizi kolay ┼čekilde terminal ├╝zerinden yapman─▒z─▒ sa─člar )

 $ open ncftp
 $ ncftp> open sunucu_url  # sunucuya baglant─▒ sa─član─▒yor..
 $ ncftp> cd /root/Masaustu. # masaustune gecildi
 $ ncftp> get resimler.gz    # masaustunde bulunan resimler.gz indirildi.
 $ ncftp> bye    # gule gule mesaj─▒ al─▒nd─▒
Ahmet Turkmen

Ahmet Turkmen

Software Engineer

comments powered by Disqus
rss facebook twitter github gitlab youtube mail spotify lastfm instagram linkedin google google-plus pinterest medium cool-kubernetes stackoverflow reddit quora quora dev