Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Computer Skills
  2. Vim
Computers

VimScript menengah

by
Difficulty:IntermediateLength:MediumLanguages:

Indonesian (Bahasa Indonesia) translation by Imron (you can also view the original English article)

Dalam tutorial Basic Vim Configuration, saya menunjukkan kepada Anda dasar-dasar konfigurasi editor Vim. Sekarang saatnya untuk belajar lebih banyak. VimScript adalah bahasa pemrograman lengkap yang dapat Anda buat semua jenis program otomatisasi yang mungkin Anda perlukan. Tutorial ini akan membawa pengetahuan Anda ke tingkat berikutnya dengan pembuat struktur direktori proyek, menjelajahi Autocommands, dan melihat ekstensi Maximum-Awesome untuk MacVim.

Autocommands

Autocommands adalah perintah agar Vim melakukan tindakan ketika kondisi tertentu berlaku: pembuatan file baru, menulis ke file, dan sebagainya.

Ini adalah cara yang bagus untuk mengotomatiskan beberapa pekerjaan yang perlu Anda lakukan dalam sebuah proyek. Misalnya, ketika Anda menyimpan file SASS, autocommand dapat mengkompilasinya ke CSS normal untuk Anda.

Format untuk autocommand adalah:

Dimana <action> adalah aksi editor yang harus ditunggu oleh perintah. Anda juga dapat menentukan lebih dari satu tindakan sekaligus dengan memisahkannya dengan koma.

Dengan 86 kemungkinan <action> untuk terhubung, saya tidak akan menjelaskan semuanya di sini. Untuk melihat daftar lengkap, Anda dapat mengetik :help autocmd-events-abc. Ini membuka buffer berbeda dengan daftar lengkap. Untuk program demonstrasi, saya akan menggunakan tindakan BufNewFile untuk menjalankan fungsi untuk memeriksa dan membuat struktur folder direktori proyek.

<regexp> adalah ekspresi reguler untuk nama file yang akan ditindaklanjuti.

<VimScript Command> adalah perintah aktual di VimScript untuk dijalankan ketika <action>  terjadi yang cocok dengan <regexp>. Perlu dimulai dengan tanda titik dua, :, seperti yang akan Anda lihat di baris status editor.

Karena saya melakukan banyak pengembangan situs web, fungsi pembantu akan membuat struktur proyek yang dibutuhkan untuk situs web baru. Oleh karena itu, autocommand perlu memicu pembuatan file HTML. Format yang dibutuhkan adalah:

Fungsi untuk proyek hanyalah kerangka. Saat tutorial berlangsung, saya akan menambahkan lebih banyak ke fungsi ini.

Dengan ini di file .vimrc, Anda akan melihat nama file bergema ke bilah status saat Anda membuka file HTML baru di buffer. Anda dapat melakukan ini dengan menggunakan perintah :new <name> untuk membuat buffer baru dengan nama file yang diberikan, atau ketika Anda membuka Vim dengan nama file pada baris perintah.

Makro expand ('%: p') memberikan jalur lengkap ke file baru ketika pemicu autocommand. Dengan begitu, fungsi CreateProject akan mendapatkan nama file, dan itu adalah direktori.

Ini berfungsi baik untuk hanya membuka dan menutup Vim tanpa pernah memuat ulang file konfigurasi. Terkadang, Anda perlu mengubah file konfigurasi dan memuatnya kembali tanpa keluar. Vim kemudian akan melakukan autocmd beberapa kali per buffer baru. Itu bisa menyebabkan kekacauan.

Anda perlu, oleh karena itu, untuk memasukkan autocmd ke dalam sebuah augrup untuk Autocomand Group. Kemudian bersihkan grup sebelum menambahkan perintah baru. Baris autocmd menjadi:

Autocmd! memberitahu Vim untuk melupakan apa yang ada di grup ini sebelumnya. Gunakan blok ini sebagai ganti baris autocmd di daftar terakhir. Ini adalah praktik yang baik saat menulis autocmds.

Autocmd Triggered

Dengan skrip yang dibuat sejauh ini dimuat ke Vim, buka kembali Vim dengan perintah ini: vim test.html. Gambar di atas adalah apa yang akan Anda dapatkan. Ini akan memberikan path ke file baru. Jika Anda melakukan hal yang sama, tetapi dengan file yang sudah ada, Anda tidak akan mendapatkan prompt ini di baris bawah.

Struktur data

VimScript memiliki lebih dari sekedar variabel. Anda juga dapat menggunakan daftar. Daftar adalah pengelompokan objek ke satu variabel. Daftar sangat bagus untuk menyimpan informasi terkait. Dalam kasus pembuatan struktur file, akan ada dua daftar: daftar direktori untuk dibuat dan daftar file untuk dibuat

Anda menentukan daftar dengan []. Oleh karena itu, buat dua daftar seperti ini:

Ini membuat dua daftar: satu disebut dirs dan yang lain 'file'. Jika Anda ingin memeriksa apa yang ada dalam daftar, Anda bisa mereferensikannya dengan indeks. Ingat, VimScript memiliki pengindeksan berbasis nol. Untuk mendapatkan item pertama, Anda harus menggunakan indeks nol. Setelah ini ada di file .vimrc Anda dan Anda memuatnya kembali, Anda dapat melihatnya dengan ini:

Ini akan menggemakan “/ js/base.js” ke baris status. Anda juga dapat mereferensikan nilai mulai dari nilai paling kanan dengan indeks negatif. Karena itu,

akan menggemakan '/css/base.css' ke baris status. Anda bahkan bisa mendapatkan sub-grup elemen seperti ini:

Ini akan menyebabkan string ['/css/base.css', '/doc/help.html'] ditampilkan di baris status. Sub-set dari satu set masih satu set!

Saya memiliki dua definisi daftar di luar fungsi hanya untuk tujuan demonstrasi. Sebaiknya tidak membuat variabel dalam lingkup global (yaitu: di luar fungsi). Memiliki banyak variabel global membuat ruang lingkup global berantakan. Itu juga bisa berbenturan dengan skrip lain di jalan.

Kontrol Aliran Program

Untuk memproses setiap elemen dalam daftar, saya akan menggunakan for-struktur loop. Sebuah for-loop berulang kali mengeksekusi kode terlampir sampai suatu kondisi terjadi. Untuk mengulang setiap item dalam daftar, kode menjadi ini:

Kedua daftar sekarang berada di dalam fungsi dan dua for mengulang iterasi melalui setiap daftar. Perhatikan, ada variabel baru sebelum in pernyataan dan daftar setelah in pernyataan. Variabel baru mengakuisisi setiap elemen dalam array secara berurutan

Ada struktur perulangan lain di VimScript yang disebut while-loop. Bentuk dasarnya adalah:

Kode ini mengulang setiap item dalam daftar dirs dan menggemakannya ke baris status. Perhatikan index variabel baru. Variabel ini digunakan untuk melacak berapa kali pergi ke loop dan secara berurutan mendapatkan setiap item dalam daftar. Untuk bekerja dengan daftar, for-loop lebih efisien.

Finishing the Function

Dengan struktur data dan loop di tempat, sekarang saya akan menyelesaikan kode. Sisa kode seperti ini:

Saya menambahkan variabel baru parent yang merupakan struktur direktori induk dari file yang diberikan kepada fungsi. Perintah fnamemodify memungkinkan Anda untuk mengekstrak bagian jalur yang berbeda di seluruh platform. Anda dapat membaca lebih lanjut tentang hal itu menggunakan sistem bantuan Vim: :help fnamemodify (). Perhatikan, untuk mereferensikan variabel file yang diteruskan ke fungsi, saya harus memperluasnya dengan a :. a: Ruang lingkup mengacu pada argumen.

Di setiap loop, saya membuat variabel yang menggabungkan direktori induk dengan direktori baru atau nama file. Saya kemudian memeriksa keberadaan mereka dan membuatnya jika tidak ada. Untuk memeriksa keberadaan, fungsi isDirectory () memeriksa direktori, dan filereadable () memeriksa keberadaan file. Saya menggunakan ! untuk meniadakan nilai kembalian dari fungsi. Untuk membuat direktori, Anda memanggil perintah mkdir(). Untuk membuat file kosong, Anda harus menggunakan perintah sistem touch.

Juga, perhatikan di dalam setiap loop dan jika pernyataan saya harus lingkup variabel yang berada di lingkup atas dengan l: lingkup. Lingkup l: merujuk ke mana saja dalam definisi fungsi. Lingkup yang lebih rendah tidak secara otomatis mewarisi lingkup atas! Ini menangkap saya sepanjang waktu.

Maximum-Awesome

Sekarang Anda semakin terbiasa dengan Vim, Maximum-Awesome adalah paket setup yang memuat banyak default dan paket hebat untuk menggunakan Vim pada Mac. Ini adalah Ruby on Rails centric, tetapi berguna untuk semua jenis pemrograman.

Buka program pemutusan ke direktori tempat Anda ingin menginstal paket. Kemudian ketikkan perintah ini:

Ketika selesai, buka Vim lagi dan Anda akan melihat lingkungan kerja yang menyenangkan.

MacVim with Maximum-Awesome

Ada banyak paket menarik dalam pengaturan ini. Bersenang-senanglah menjelajah!

Kesimpulan

Sekarang Anda tahu cara membuat skrip otomatisasi untuk membantu alur kerja Anda, maju dan bereksperimen dengan fungsi bermanfaat lainnya.

Saat Anda mempersonalisasi lingkungan Vim, Anda akan lebih terkendali dan mampu melakukan lebih banyak hal. Ingat, mempraktikkan apa yang Anda pelajari adalah satu-satunya cara untuk meningkatkan dan mengingatnya. Jadi, maju dan berlatih membuat skrip otomatisasi Anda sendiri di VimScript!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.