Membuat Shortcut "Open With Vim" dari WSL


Sebelumnya saya berkerja lebih banyak di GNU/Linux dibandingan dengan sistem operasi lainnya. Sejak PC kantor seluruhnya menggunakan Windows, beberapa hal yang melakat yang biasa saya lakukan di GNU/Linux menjadi agak sedikit terhambat, seperti penggunaan openssh, rsync, sftp, vim dan lain sebagainya. Meskipun aplikasi demikian sebetulnya ada di Windows, namun lagi-lagi karena faktor kebiasaan, saya menjadi lebih sedikit terhambat karena harus menyesuaikan. Sejak hadirnya Windows Subsystem for Linux (WSL) di Windows 10, menjadikan saya tidak lagi terhambat ketika harus berurusan dengan server atau kodingan.

Vim merupakan salah satu aplikasi teks penyuntingan favorit saya. Seperti yang sudah diketahui, vim meskipun dasarnya merupakan aplikasi yang tersedia di *Nix sistem secara default, bukan berarti di Windows tidak ada. Ia ada namun agak sedikit berbeda dengan yang kita pergunakan pada sistem operasi GNU/Linux atau macOS.

Nah, pada tulisan kali ini saya ingin berbagi tips trik bagaimana menggunakan vim yang berada dalam WSL terintegrasi dengan berkas yang ada di Windows. Cukup menarik bukan? Berikut ini caranya:

Membuat Registry

Buka regedit dengan menekan tombol Winkey + R lalu ketik regedit atau kita bisa langsung ketik regedit di startmenu seperti gambar berikut:

Kemudian masuk ke HKEY_CLASSES_ROOT\*\shell dan buat key dengan nama misalnya OpenWithVim seperti gambar berikut:

Selanjutnya dalam OpenWithVim nilai default-nya bebas mau Anda isi apa saja, contoh di sini Open with Vim (WSL). Juga buatkan key lagi di dalamnya dengan nama command.

Masuk key command isinya seperti  kode berikut:

C:\Windows\System32\bash.exe -c "vim $(lower=$(echo "%1" | sed 's/\\/\//g' | sed 's/://') && echo /mnt/${lower,})"

Sedikit penjelasan mengenai kode di atas

Pertama-tama C:\Windows\System32\bash.exe -c yang berarti kita bisa langsung mengeksekusi perintah dalam GNU/Linux tanpa harus membuka WSL console. Dalam hal ini kita memanggil vim.

Kemudian, kita buat variabel bernama lower yang mana fungsinya digunakan untuk mengkonversi path di Windows ke lowercase (huruf kecil). Kita mengambil nilai %1, yang berarti berkas dari Windows. Kemudian dalam variabel tersebut kita konversi dari Windows path ke Unix path menggunakan perintah sed. Yang mengasilkan kode seperti di bawah ini:

lower=$(echo "%1" | sed 's/\\/\//g' | sed 's/://')

Lalu, seperti yang telah diketahui bahwa WSL membaca semua drive dalam direktori /mnt sedangkan %1 menghasilkan nilai sesuai dengan path yang dituju, karena drive dalam Windows selalu ditulis dengan huruf kapital (uppercase), sedangkan GNU/Linux dalam path cenderung case sensitive, jadi pada drive di Windows perlu kita ubah ke lowercase, dengan demikian kita cukup melakukan perintah berikut:

echo /mnt/${lower,}

Semua perintah di atas kita jadikan dalam satu variabel yang mana variabel tersebut digunakan untuk vim agar dapat membaca path dari Windows. Kodenya menjadi berikut:

$(lower=$(echo "%1" | sed 's/\\/\//g' | sed 's/://') && echo /mnt/${lower,})

Berkas Registry

Jika Anda tidak ingin membuat registry seperti di atas, saya menyediakan berkasnya untuk mempermudah, cukup klik dua kali pada berkas tersebut dan langsung jadi.

Open with Vim (WSL).reg

Pengecekan

Setelah selesai kita membuat registry di atas, langkah selanjutnya yakni kita cek apakah ini sudah berjalan dengan sebagai mana mestinya atau belum. Cara termudah adalah dengan membuka salah satu berkas berbasis teks, contoh di sini saya membuka berkas bernama test.php yang berisi kodingan PHP.

Jika berhasil akan tampil seperti gambar berikut:

Sumber: