Saya memiliki file yang dipanggil .aliases
untuk bash dan zsh, saya meletakkan baris ini
# vim: set filetype=bash:
tetapi jika saya membuat
: echo &ft
saya mendapat conf
Saya memiliki file yang dipanggil .aliases
untuk bash dan zsh, saya meletakkan baris ini
# vim: set filetype=bash:
tetapi jika saya membuat
: echo &ft
saya mendapat conf
Jawaban:
Itu seharusnya bekerja. Saya mencoba jalur itu sendiri dan berhasil. Saya bisa jadi pilihan 'modeline' Anda diatur ke 'nomodeline'. Coba jalankan ini dan lihat apa yang Anda dapatkan.
:verbose set modeline?
Itu akan memberi tahu Anda nilai opsi 'modeline' dan jika bukan default, di mana itu ditetapkan terakhir.
Beberapa distribusi Linux menetapkan 'nomodeline' di / etc / vimrc atau / usr / share / vim / vimrc sebagai langkah keamanan, meskipun masalah keamanan dengan 'modeline' telah lama diperbaiki.
modelines
bahwa opsi tersebut tidak diterapkan dan tidak akan pernah ada. Ini seperti semua bug keamanan yang berasal dari perintah yang tertanam file atau instruksi makro untuk dijalankan dalam PDF, Word, Excel, & c & c & c.
Saya menggambarkan daftar periksa debug lengkap dalam jawaban lain ini .
Saya benar-benar bingung untuk yang satu ini karena dokumentasi ini tidak sepenuhnya benar.
Ternyata dalam versi 8 (dan mungkin sebelumnya) Anda tidak dapat menggunakan kata set
dalam modeline Anda. Dokumentasi menggambarkan "bentuk kedua" sebagai /* vim: set ai tw=75: */
tetapi ini tidak bekerja. Anda harus menggunakan "formulir pertama"// vim: ai tw=75
Catatan: Anda dapat menggunakan salah satu dari indikator komentar tersebut. Atau tidak sama sekali.
set
berfungsi baik untuk saya pada vim 8.0 (walaupun tidak pada 7.4). Juga perlu dicatat bahwa dengan bentuk kedua // vim: ai tw=75
, tidak mungkin ada karakter lain di akhir baris, atau vim akan mengeluh dan mengabaikan modeline.
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Nov 24 2016 16:44:48) Inklusive der Korrekturen: 1-1689 Extra-Patches: 8.0.0056 Verändert von pkg-vim-maintainers@lists.alioth.debian.org Übersetzt von pkg-vim-maintainers@lists.alioth.debian.org Riesige Version mit GTK2-GNOME GUI.
(Baris terakhir berarti dimodifikasi oleh ... , dikompilasi oleh ... , versi besar ... ).
set modelines=1
(atau nilai non-0) di my ~ / .vimrc membuatnya berfungsi untuk saya.
modeline
tidak juga disetel (yang secara default di Vim kecuali Anda root)
set nomodeline
di /etc/vimrc
karena semua kerentanan dengan modelines penanganan di vim.
modelines
ke nilai bukan nol. Bantuan mengatakan defaultnya adalah 5
, jadi itulah yang saya atur dan itulah yang membantu saya. Menyatakan bahwa,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.
Menambahkan hanya berikut ini untuk saya yang ~/.vimrc
bekerja untuk saya di kotak Funtoo Linux saya:
set modeline
Karena ini tampaknya muncul dalam pencarian:
Saya memiliki masalah yang sama:
# vim: set filetype=sh:
tidak berfungsi, menghasilkan ft = conf juga. tanpa modeline di ~ / .bash_alias saya, ft kosong, jadi sesuatu berubah.
sementara
# vim: filetype=sh:
bekerja. kehadiran ":" terakhir tampaknya tidak relevan.
Saya menggunakan OSX dengan versi Vim8 yang diseduh, sebagai catatan.
ini aneh karena dari modeline membantu keduanya
[text]{white}{vi:|vim:|ex:}[white]{options}
dan
[text]{white}{vi:|vim:|Vim:|ex:}[white]se[t] {options}:[text]
tampaknya didukung.
Output dari
verbose set ft?
dengan "vim: filetype = sh" is
filetype=sh
Last set from modeline
tanpa modeline:
filetype=
dengan "vim: set filetype = sh"
filetype=conf
Last set from /usr/local/Cellar/vim/8.0.1350/share/vim/vim80/filetype.vim
Mungkin ada efek samping di conf saya, tetapi sintaks modeline yang tidak kompatibel adalah satu-satunya yang berfungsi seperti yang diharapkan untuk saya.
/usr/share/vim/vim80/debian.vim
dari vim-common
pada distro berbasis Debian menonaktifkan modeline
secara default.
" modelines have historically been a source of security/resource
" vulnerabilities -- disable by default, even when 'nocompatible' is set
set nomodeline
Anda harus mengaktifkan modeline
secara eksplisit di file .vimrc
atau Anda ~/.vim/vimrc
.
set modeline
Kemungkinan besar itu karena modeline dinonaktifkan.
Saya mengatasinya dengan:
Dalam hal ini, perintah daftar putih default termasuk filetype
.