GNU/Linux >> Belajar Linux >  >> Linux

Cara membuat perubahan pengaturan khusus file di Vim menggunakan Modeline

Meskipun plugin tidak diragukan lagi sebagai salah satu kekuatan terbesar Vim, ada beberapa fungsi lain yang menjadikannya salah satu editor teks/IDE paling kuat dan kaya fitur yang tersedia untuk pengguna Linux saat ini. Salah satu fungsi ini adalah kemampuan untuk membuat perubahan pengaturan khusus file. Kemampuan ini dapat diakses menggunakan fitur Modeline editor.

Dalam artikel ini, kita akan membahas bagaimana Anda dapat menggunakan fitur Modeline Vim menggunakan contoh yang mudah dipahami.

But before we start doing that, it's worth mentioning that all the examples, commands, and instructions mentioned in this tutorial have been tested on Ubuntu 16.04, and the Vim version we've used is 7.4.

Model VIM

Penggunaan

Seperti yang telah kami sebutkan, fitur Modeline Vim memungkinkan Anda membuat perubahan khusus file. Misalnya, Anda ingin mengganti semua tab yang digunakan dalam file tertentu dari proyek Anda dengan spasi, dan pastikan bahwa semua file lain tidak terpengaruh oleh perubahan ini. Ini adalah kasus penggunaan yang ideal di mana Modeline membantu Anda melakukan apa yang ingin Anda lakukan.

Jadi, yang dapat Anda lakukan adalah, Anda dapat meletakkan baris berikut di awal atau akhir file yang dimaksud:

# vim: set expandtab:

Ada kemungkinan besar jika Anda mencoba melakukan latihan yang disebutkan di atas untuk menguji kasus penggunaan di mesin Linux Anda, semuanya tidak akan berfungsi seperti yang diharapkan. Jika demikian, jangan khawatir, karena fitur Modeline perlu diaktifkan terlebih dahulu dalam beberapa kasus (fitur ini dinonaktifkan secara default pada sistem seperti Debian, Ubuntu, Gentoo, dan OSX untuk alasan keamanan).

Untuk mengaktifkan fitur ini, buka file .vimrc (terletak di direktori home Anda), lalu tambahkan baris berikut ke dalamnya:

set modeline

Sekarang, setiap kali Anda memasukkan tab dan menyimpan file (di mana expandtab perintah modeline dimasukkan), tab akan otomatis diubah menjadi spasi.

Mari kita pertimbangkan kasus penggunaan lain. Misalkan ruang tab default di Vim disetel ke 4, tetapi untuk file tertentu, Anda ingin menambahnya menjadi 8. Untuk ini, Anda perlu menambahkan baris berikut di awal atau akhir file:

// vim: noai:ts=8:

Sekarang coba masuk ke tab dan Anda akan melihat bahwa jumlah spasi yang dicakupnya adalah 8. 

Anda mungkin memperhatikan saya mengatakan bahwa perintah modeline ini perlu dimasukkan di suatu tempat di dekat bagian atas atau bawah file. Jika Anda bertanya-tanya mengapa demikian, alasannya adalah fitur tersebut dirancang dengan cara ini. Baris berikut (diambil dari dokumentasi resmi Vim) akan memperjelas hal ini:

"Modeline tidak boleh berada di mana pun dalam file:itu harus di beberapa baris pertama atau terakhir. Lokasi persis di mana vim memeriksa modeline dikendalikan oleh modelines variabel; lihat :model bantuan . Secara default, diatur ke 5 baris ."

Dan inilah yang :model bantuan perintah (disebut pada baris di atas) mengatakan:

If 'modeline' is on 'modelines' gives the number of lines that is checked for set commands. If 'modeline' is off or 'modelines' is zero no lines are checked.

Coba dan letakkan perintah modeline di luar rentang 5 baris default (baik dari bawah atau dari atas), dan Anda akan melihat bahwa spasi tab akan kembali ke default Vim - dalam kasus saya itu adalah 4 spasi.

Namun, Anda dapat mengubah perilaku ini jika diinginkan, menggunakan perintah berikut di file .vimrc Anda.

set modelines=[new-value]

Misalnya, saya meningkatkan nilainya dari 5 menjadi 10.

set modelines=10

Ini berarti bahwa sekarang saya dapat menempatkan perintah modeline di mana saja antara 10 baris pertama atau terakhir dari file.

Selanjutnya, kapan saja, saat mengedit file, Anda dapat memasukkan hal berikut (dengan editor Vim dalam mode perintah) untuk melihat setelan terkait model saat ini serta di mana setelan terakhir ditetapkan.

:verbose set modeline? modelines?

Misalnya, dalam kasus saya, perintah di atas menghasilkan output berikut:

 modeline
Last set from ~/.vimrc
modelines=10
Last set from ~/.vimrc

Berikut adalah beberapa poin penting yang perlu Anda ketahui tentang fitur Modeline Vim:

  • Fitur ini diaktifkan secara default untuk Vim yang berjalan dalam mode yang tidak kompatibel (tidak kompatibel dengan Vi), tetapi beberapa distribusi Vim yang terkenal menonaktifkan opsi ini di sistem vimrc untuk keamanan.
  • Fitur ini dinonaktifkan secara default saat mengedit sebagai root (jika Anda membuka file menggunakan 'sudo', maka tidak ada masalah - fitur berfungsi).
  • Dengan 'set' , modeline berakhir pada titik dua pertama tidak mengikuti garis miring terbalik. Dan tanpa 'set' , tidak ada teks yang dapat mengikuti opsi. Misalnya, /* vim:noai:ts=4:sw=4 */ adalah model yang tidak valid.

Kekhawatiran Keamanan

Sayangnya, fitur Modeline Vim dapat digunakan untuk membahayakan keamanan. Faktanya, beberapa masalah Modeline terkait keamanan telah dilaporkan di masa lalu, termasuk injeksi perintah shell, eksekusi perintah arbitrer, akses tidak sah, dan banyak lagi. Setuju, sebagian besar sudah tua, dan seharusnya sudah diperbaiki sekarang, tetapi ini memberikan gambaran bahwa fitur Modeline dapat disalahgunakan oleh peretas.

Kesimpulan

Modeline mungkin merupakan fitur lanjutan dari editor Vim, tetapi tidak terlalu sulit untuk dipahami. Tidak ada keraguan bahwa sedikit kurva pembelajaran terlibat, tetapi itu tidak banyak untuk ditanyakan mengingat betapa bergunanya fitur tersebut. Tentu saja, ada masalah keamanan, yang berarti Anda harus mempertimbangkan pilihan Anda sebelum mengaktifkan dan menggunakan fitur tersebut.

Apakah Anda pernah menggunakan fitur Modeline? Bagaimana pengalaman Anda? Bagikan dengan kami (dan seluruh komunitas HowtoForge) di komentar di bawah.


Linux
  1. Bagaimana Cara Membuat Ldapsearch Bekerja Pada Sles Over Tls Menggunakan Sertifikat?

  2. Jadikan Vim sebagai IDE Perl Anda Menggunakan Plugin perl-support.vim

  3. Cara membuka file di vim menggunakan pipa

  1. Cara Mengurungkan dan Mengulang Perubahan di Vim / Vi

  2. Jadikan Vim sebagai Bash-IDE Anda Menggunakan Plugin dukungan bash

  3. Tutorial:Jadikan Vim sebagai IDE C/C++ Anda Menggunakan Plugin c.vim

  1. Cara Membuat CS:GO Server Di VPS Linux

  2. Cara Membatalkan dan Mengulang di Vim / Vi

  3. Cara Menghapus Baris di Vim / Vi