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.
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:
* <a href="https://stackoverflow.com/questions/13701218/windows-path-to-posix-path-conversion-in-bash/13701495#13701495" target="_blank" rel="noopener">https://stackoverflow.com/questions/13701218/windows-path-to-posix-path-conversion-in-bash/13701495#13701495</a>
* <a href="https://stackoverflow.com/questions/11392189/converting-string-from-uppercase-to-lowercase-in-bash/11392248#11392248" target="_blank" rel="noopener">https://stackoverflow.com/questions/11392189/converting-string-from-uppercase-to-lowercase-in-bash/11392248#11392248</a>
Komentar