My Vim Configuration

I’ve just used Vim when I write code for about 6 months and I am still using it. In this post, I’m gonna write about my favorite Vim configs and plugins.

I’m using Vundle for plugin management. Vundle helps me to make easy plugin installation and update.

Abbreviations

When I write code in Vim I sometimes write the wrong command for close the file. For example, I write “Wq” instead of “wq”. I’ve discovered abbreviations for this situation.. Here are my abbreviations:

cnoreabbrev W! w!
cnoreabbrev Q! q!
cnoreabbrev Qall! qall!
cnoreabbrev Wq wq
cnoreabbrev Wa wa
cnoreabbrev wQ wq
cnoreabbrev WQ wq
cnoreabbrev W w
cnoreabbrev Q q
cnoreabbrev Qall qall

Relative Line Numbers

One of my favorite features at Vim is “relative line numbers”.

Relative line numbers help us to edit our file quickly. For example, if we want to move up or down 5 lines from the current line, we just need use “10j” or “10k”.

set number
set relativenumber

Shortcuts

To create shortcut you can find a great tutorial in vim.wikia. Here are my favorite shortcuts:

"" Split
noremap <Leader>h :<C-u>split<CR>
noremap <Leader>v :<C-u>vsplit<CR>

"" Tabs
nnoremap <Tab> gt
nnoremap <S-Tab> gT

My Favorite Plugins

I’m using many plugins. These plugins provide a better vim for me. I generally write php, html, css, basic javascript and ruby.

Here are plugins I’m using for these languages:

  • stanangeloff/php.vim
  • jelera/vim-javascript-syntax
  • hail2u/vim-css3-syntax
  • tpope/vim-rails
  • tpope/vim-rake
  • thoughtbot/vim-rspec
  • ecomba/vim-ruby-refactoring

Other plugins:

  • scrooloose/nerdtree
  • ctrlpvim/ctrlp.vim
  • airblade/vim-gitgutter
  • vim-airline/vim-airline
  • grep.vim
  • tomasr/molokai

I tried to write about my favorite the vim configurations. I guess the article has been short but I wanted to write basic configurations. I hope there is no wrong information. Maybe I’ll add some new information in the near future.

You can find my .vimrc file on GitHub.

Visual Composer Elemanı Oluşturmak

WordPress geliştirme yaparken genellikle tüm yapıyı (sayfa şablonları, tasarım aktarımı vb.) kendim kurmayı seviyorum ve yapıyordum ancak son dönemde dahil olduğum takım ve işler genellikle Visual Composer eklentisi ile yürütülüyor. Eklentiyi pek sevmedim ancak özellikle son kullanıcı için oldukça güzel faydaları olduğu söylenebilir.

Bu yazı bazı özel istekler için nasıl kendi elemanımızı oluşturabiliriz sorusuna basit bir giriş olacak.

Yazdığımız elemanları derli toplu tutmak için alt bir dizin kullanmak oldukça faydalı olacaktır. Ben genellikle “vc-elements” isminde bir dizin oluşturuyorum ve elemanlarımızın her biri için ayrı php sınıfları oluşturuyorum. Sınıfımızı oluşturmadan önce yapmamız gereken bir şey var; eklentinin “vc_before_init” actionını hook ederek elemanımızın sınıfını çağırmalıyız. Bu işlemi functions.php dosyamızda şu şekilde yapabiliriz:

function vc_before_init_actions() {
  require_once( get_template_directory() . '/vc-elements/ilk-vc-elemanim.php' );    
}
add_action( 'vc_before_init', 'vc_before_init_actions' );

Şimdi vc-elements dizini altında sınıfımızı oluşturabiliriz:

class HelloWorld extends WPBakeryShortCode {
  function __construct() {
    add_action( 'init', array(  $this, 'vc_hello_world_mapping' ) );
    add_shortcode( 'vc_hello_world', array( $this, 'vc_hello_world_html' ) );
  }

  public function vc_hello_world_mapping() {
    vc_map(
      array(
        'name' => __( 'Hello World Element', 'theme' ),
        'base' => 'vc_hello_world',
      )
    );
  }

  public function vc_hello_world_html( ) {
    return "Hello World";        
  }
}

new HelloWorld();

Sınıfımızdaki kodlardan bahsetmek gerekirse;

  • construct altında init action’ını vc_hello_world_mapping methodu ile hook edip, eklenti’nin bir fonksiyonu olan vc_map ile temel elemanımızı oluşturuyoruz.
  • Yine construct altındaki ikinci satırda ise VC’nin kullanacağı shortcode tanımlamasını yapıyoruz, vc elemanlarımız temelde bu shortcode’u kullanıyor olacak.
  • İlk satırda belirttiğim gibi vc_hello_world_mapping içerisinde vc_map kullanarak temel elemanı oluşturuyoruz, parametre olarak gönderdiğimiz array’in içerisindeki base değerinde shortcode’umuzu belirtiyoruz. Çok daha detaylı parametreler alan bir eleman oluşturmak isterseniz bu sayfayı inceleyebilirsiniz.
  • Son olarak vc_hello_world_html methodunda ise ekrana basacak değerleri döndürüyoruz.

En basit anlamda bir visual composer elemani oluşturmak bu şekilde, çok daha detaylı geliştirmeler yapmak için eklentinin kendi wikisinden yararlanmak en doğrusu olacaktır.

How to change redmine admin password?

Today, when I try to run my plugin tests, I’ve needed the answer for this question and I did some research. Here is the answer:

# start console
rails c

# if you want to start with another env, you can use this command:
RAILS_ENV=test rails c
# find your user by login name
user = User.where(login: 'admin').first
# set new password like this example
user.password = '123456789'
user.password_confirmation = '123456789'
# and save the user in last step with this command
user.save!

Keyboard Layout Configuration on Debian

If you want to change any keyboard settings on Debian, you have to install keyboard-configuration package. You can use this command for package installation:

sudo apt-get install keyboard-configuration

Keyboard settings stored in /etc/default/keyboard file. You can edit this file for changing any keyboard settings.

To change the keyboard layout, find the XKBLAYOUT line and edit the value.

After editing, you can restarting keyboard-setup service or OS to apply new keyboard layout.

Özgür Yazılım Liselerde

Özgür Yazılım Liselerde projesi, bir zorunluluğu keyif alabileceğim, yeni deneyimler yaşayabileceğim ve Özgür Yazılım felsefesinin doğru bir şekilde yayılmasına katkı sağlayabileceğim bir projeye dönüştürmemle başladı. Projedeki amacım bir dönem boyunca gidebildiğim kadar liseye (öncelikli olarak bilgisayar bölümü olan liseler) giderek öğrenci arkadaşlara özgür yazılım nedir?, özel mülk yazılım nedir? neden özgür yazılım kullanmalıyız? gibi sorularla felsefeyi tanıtmaktı.

İlk olarak mezun olduğum lise olan Güngören Anadolu Teknik lisesi’ne gitmeye karar verdim. İkinci sunumda da beni yalnız bırakmayacak olan İstanbulhs’den Halil ve Emin ile birlikte ilk sunumu burada yaptık. Genel olarak verimli geçen bir sunumdu. Gerek özgür yazılım gerekse yazılım geliştirme konusunda arkadaşlarla güzel muhabbetler gerçekleştirdiğimizi hatırlıyorum. Özellikle assembly ile yazılım geliştirsek diye bir soru yönelten arkadaşı unutamıyorum. Sunum sırasında bahsettiğimiz açık kaynak ve özgür yazılım arasındaki fark konusu, arkadaşların açık kaynak işletim sistemleri diye gördükleri derse karşı çıkmalarına yol açtığını öğretmenlerinin biraz üstlerine gittiğine şahit olduk.

Tabii ki ilgilenmeyen ve kendi halinde takılan bir sürü arkadaş vardı ama bizim yola çıkış amacımız ilgi duyabilecek meraklı bir iki arkadaşa ulaşabilmekti. Bu hedefe de tüm sunumlar boyunca ulaştığımızı düşünüyorum.

Sunumdan birkaç gün sonra arkadaşlardan mail gelmesi ve özgür yazılım günlerine katılmak istemeleri bir kez daha onlara ulaşabildiğimizin göstergesiydi ve beni oldukça mutlu etmişti.

İkinci sunumda da ATAŞEHİR Dr.Nurettin Erk-Perihan Erk lisesindeydik. Genel olarak ilk sunumla benzer sonuçlar aldığımız bir etkinlik oldu. GNU/Linux kullanan bir arkadaş vardı sanırım öte yandan bu okuldan aklımda kalan en önemli kısım bir öğretmenin özgür yazılım ile olan alakasıydı. Zamanında okulda Pardus ile ilgili dersler verdiğini ve bir özgür yazılım kulübü kurduğunu anlatmış ve son zamanlarda ilgisinin azaldığından bahsetmişti keşke lisedeyken benimde böyle bir öğretmenim olsaydı.

Üçüncü sunumda tek başıma Kartal Endüstri Meslek Lisesindeydim. Diğer sunumlara oranla çok daha az bir öğrenci arkadaşa hitap edebildim ama yine de o ilgi oranını yakalamayı başardığımı düşünüyorum zaten yukarıda bir yerlerde bahsettiğim gibi bir öğrenci arkadaşa bile ulaşmış olmak benim için yeterli bir sonuçtu bir de okullarda genel olarak sınav haftaları olduğu için bu zor takvimde bana vakit ayırdıkları için çok teşekkür ederim.

Başlangıçta yola çıktığım hedefleri gerçekleştirdiğim için çok mutluyum, sunum konusunda kişisel olarak deneyim kazanmak ve okullarda ilgili arkadaşlarla kontak kurmak uğraşlarımızın boşa çıkmadığını görmek çok güzeldi. Daha çok okula giderek daha çok arkadaşa ulaşmayı gönül isterdi ama okulun en yoğun olan son döneminde elden bu kadarı geldi.

Başta iki sunumda benimle olan Halil ve Emin olmak üzere destek veren ilgi gösteren herkese çok teşekkürler umarım bu tarz etkinlikler okullarda daha fazla olur özgür yazılım doğru bir şekilde tüm herkese yayılır.

Sunum dosyasına şu linkten ulaşabilirsiniz => https://github.com/adiloztaser/Sunumlar/tree/master/Liselerde-Ozgur-Yazilim

i3wm Maceram | Kurulum ve Kullandıklarım

İstanbul hackerspace‘te katıldığım GNU/Linux eğitimi sonunda, uzun zamandır GNU/Linux kullanmama rağmen geliştirme yaptığım zamanlar dışındaki bilgisayar kullanımımda çok fazla terminali ve dolayısıyla komutları kullanmadığımı fark ettim.

Xfce masaüstü ortamını severek kullansamda komutlarla biraz daha haşır neşir olmak için sıfır bir Debian üzerinde i3wm kurarak maceraya atıldım.

Kurulum yaparken bağlı paketler konusunda baya sıkıntı yaşadığımı hatırlıyorum ama tabii bu işin güzel noktasınında o sıkıntılarla boğuşmak olduğunu eklemem gerek.

echo 'deb http://build.i3wm.org/debian/sid sid main' &gt;
 /etc/apt/sources.list.d/i3-autobuild.list
apt-get update
apt-get --allow-unauthenticated install i3-autobuild-keyring
apt-get update
apt-get install i3

Direk kendi dökümanında yazanı kopyaladım. Yukarıdaki komutlar ile i3-wm kurulumunu gerçekleştirebilirsiniz.

Ancak sadece i3-wm kurmak yetmiyor i3’ün yanında herhangi bir display manager (görüntü/ekran yöneticisi) kurmanız gerekli. Ben LightDM kullanıyorum, hakkında daha detaylı bilgiye bu linkten ulaşabilirsiniz. Debian dağıtımı üzerinde LightDM kurulumuda şu şekilde:

aptitude install lightdm

Eğer sıfırdan bir kurulum gerçekleştiriyorsanız LightDM servisi otomatik çalışacaktır. Ancak başka bir görüntü/ekran yöneticisi kullanıyor ve LightDM ye geçmek istiyorsanız aşağıdaki komutlar ile onun servisini durdurup LightDM servisini başlatmalısınız.

Bu arada farklı yöneticiler ile kurulum yapmadığım için sadece lightdm için yazıyorum. Diğer yöneticilerde de çok farklı işlemler olduğunu zannetmiyorum.

Aşağıdaki ilk satırdaki komut aktif olan servisi durdurur, ikinci satırdaki komut ise lightdm servisini başlatır.

systemctl mask görüntü/ekran yöneticisi.service
systemctl enable lightdm.service

LightDM servisinin çalışıp çalışmadığından emin olmak için aşağıdaki komutu çalıştırıp çıktısını kontrol edebilirsiniz.

systemctl | grep lightdm

Çıktısı şu olmalı:

lightdm.service     loaded active running   Light Display Manager

LightDM‘in çalıştığından emin olduğumuza göre aşağıdaki komut ile ~/.xinirc içine exec i3 yazmamız gerekli.

echo "exec i3" &gt; ~/.xinitrc

Son olarak /etc/lightdm/lightdm.conf dosyasında user-session satırını bulup user-session=i3şeklinde değiştirmemiz gerekmekte.

Kurulum bu şekilde. i3-wm üzerinde bir çok şekilde özelleştirme yapmak mümkün bunun için daha detaylı bilgiyi resmi sitesinde bulabilirsiniz. Ben şimdi i3-wm ile birlikte bilgisayar kullanımımı sürekli rayında tutan birkaç programdan bahsedeceğim.

Feh: Basit bir resim görüntüleme programı. Hem resim görüntülemek hemde arkaplan belirlemek için bu programı kullanıyorum. i3wm’i özelleştirdiğimiz config dosyamız /home/adil/.i3 bu yolda bulunmakta. Arkaplan atamak için bu dizindeki config dosyasını açıyoruz ve şu satırı ekliyoruz.

exec --no-startup-id feh --bg-fill resim-yolu

Şu komut ilede programın kurulumunu yapabilirsiniz:

apt-get install feh

Nm-applet:  Ağ yönetimi yapmak için kullandığım program.

apt-get install network-manager-gnome

PulseAudio: Ses ayarlarını yapmak için kullandığım program. Config dosyasında komutlarını çalıştırmak için kısayol tuşları atıyorum. Önce kuruluma bakalım şu komut ile kurulum yapılabilir:

apt-get install pulseaudio

Config dosyama eklediğim aşağıdaki satırlar sayesinde $mod+F11 yaptığımda sistem sesi -10% değişmekte, $mod+F12 yaptığımda +10% artmakta ve $mod+F10 yaptığımda ise sistem sesi kapatılmakta.

bindsym $mod+F11 exec pactl set-sink-volume 1 -- -10%
bindsym $mod+F12 exec pactl set-sink-volume 1 -- +10%
bindsym $mod+F10 exec pactl set-sink-mute 1 -- toggle

Xfce4 Power Manager:  Güç tüketimi konusunda kullandığım bir uygulama öntanımlı gelen ayarlarıyla kullanıyorum. Bilgisayarım açıldığında arkaplanda çalışmaya başlıyor. Kurulum için şu komut kullanılabilir:

apt-get install xfce4-power-manager

Config dosyama eklediğim şu satır ilede bilgisayarım açıldığında arkaplanda çalışmasını sağlıyorum.

exec –no-startup-id sleep 3 &amp;&amp; xfce4-power-manager

Tilda:  Öntanımlı gelen terminal yerine tilda kullanıyorum. Kurulum için şu komut iş görür:

apt-get install tilda

Öntanımlı hale getirmek içinde config dosyasında # start a terminal satırını bulup altındaki satırı şu şekilde değiştirmemiz yeterli. Sadece tilda için değil diğer terminal programlarınıda bu değişikliği yaparak öntanımlı hale getirebilirsiniz. (Zaten anlaşılıyordur ama ekliyim dedim.)

bindsym $mod+Return exec tilda

Şimdilik yazacaklarım bunlarla sınırlı. 6 gün sonra tam 1 aydır i3wm kullanıyor olacağım bu dönemde açıkçası komutlarla iç içe bir şekilde çalıştım diyemiyorum. Oldukça kısa gelen bu zamanda tam anlamıyla istediğimi elde edememişim günlük bilgisayar kullanımındaki işlemler dışında pek yeni komut kullanmadım. Sanırım biraz daha derinlere girmek için bir tık daha efor sarf etmem gerekli.

i3wm Döküman: http://i3wm.org/docs/