Tôi có một tệp được gọi là .aliases
bash và zsh, tôi đặt dòng này
# vim: set filetype=bash:
nhưng nếu tôi làm
: echo &ft
tôi có conf
Tôi có một tệp được gọi là .aliases
bash và zsh, tôi đặt dòng này
# vim: set filetype=bash:
nhưng nếu tôi làm
: echo &ft
tôi có conf
Câu trả lời:
Cần làm việc. Tôi đã thử dòng đó bản thân mình và nó đã làm việc. Tôi có thể là tùy chọn 'modeline' của bạn đã được đặt thành 'nomodeline'. Hãy thử thực hiện điều này và xem những gì bạn nhận được.
:verbose set modeline?
Điều đó sẽ cho bạn biết giá trị của tùy chọn 'modeline' và nếu không phải là mặc định, nơi nó được đặt lần cuối.
Một số bản phân phối Linux đặt 'nomodeline' trong / etc / vimrc hoặc / usr / share / vim / vimrc làm thước đo bảo mật, mặc dù các vấn đề bảo mật với 'modeline' đã được khắc phục từ lâu.
modelines
rằng tùy chọn này không được thực hiện và nó sẽ không bao giờ được. Điều này giống như tất cả các lỗi bảo mật xuất phát từ các lệnh nhúng tệp hoặc hướng dẫn macro để chạy trong PDF, Word, Excel, & c & c & c.
Tôi mô tả một danh sách kiểm tra gỡ lỗi đầy đủ trong câu trả lời khác này .
Tôi đã thực sự bối rối về điều này bởi vì tài liệu này không hoàn toàn đúng.
Hóa ra trong phiên bản 8 (và có thể sớm hơn) bạn không thể sử dụng từ này set
trong modeline của mình. Các tài liệu mô tả "hình thức thứ hai" là /* vim: set ai tw=75: */
nhưng điều này không hoạt động. Bạn phải sử dụng "mẫu đầu tiên"// vim: ai tw=75
Lưu ý: Bạn có thể sử dụng một trong hai loại chỉ số nhận xét đó. Hoặc không có gì cả.
set
hoạt động tốt đối với tôi trên vim 8.0 (mặc dù không phải trên 7.4). Cũng đáng lưu ý rằng với hình thức thứ hai // vim: ai tw=75
, không thể có bất kỳ ký tự nào khác ở cuối dòng, hoặc vim sẽ phàn nàn và bỏ qua mô hình.
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.
(Các dòng cuối cùng có nghĩa được sửa đổi bởi ... , được biên soạn bởi ... , phiên bản lớn ... ).
set modelines=1
(hoặc bất kỳ giá trị khác 0 nào) trong ~ / .vimrc của tôi đã làm cho nó hoạt động với tôi.
modeline
không được đặt (theo mặc định trong Vim trừ khi bạn root)
set nomodeline
trong /etc/vimrc
do cho tất cả các lỗ hổng với modelines xử lý trong vim.
modelines
thành một giá trị khác không. Sự giúp đỡ nói mặc định là 5
, vì vậy đó là những gì tôi đặt ra và đó là mẹo cho tôi. Các tiểu bang rằng,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.
Chỉ thêm những thứ sau đây vào ~/.vimrc
công việc của tôi cho tôi trên hộp Funtoo Linux của tôi:
set modeline
Vì điều này dường như xuất hiện trong các tìm kiếm:
Tôi đã từng gặp vấn đề tương tự:
# vim: set filetype=sh:
không hoạt động, kết quả là ft = conf là tốt. không có modeline trong ~ / .bash_alias của tôi, ft trống, nên có gì đó thay đổi.
trong khi
# vim: filetype=sh:
đã làm việc. sự hiện diện ":" cuối cùng dường như không liên quan.
Tôi đang dùng OSX với phiên bản ủ Vim8, để ghi lại.
Thật kỳ lạ vì từ người mẫu giúp cả hai
[text]{white}{vi:|vim:|ex:}[white]{options}
và
[text]{white}{vi:|vim:|Vim:|ex:}[white]se[t] {options}:[text]
dường như được hỗ trợ
Đầu ra của
verbose set ft?
với "vim: filetype = sh" là
filetype=sh
Last set from modeline
không có mô hình:
filetype=
với "vim: set filetype = sh"
filetype=conf
Last set from /usr/local/Cellar/vim/8.0.1350/share/vim/vim80/filetype.vim
Có thể có một tác dụng phụ ở đâu đó trong conf của tôi, nhưng cú pháp modeline không tương thích là cách duy nhất hoạt động như mong đợi đối với tôi.
/usr/share/vim/vim80/debian.vim
từ vim-common
trên distro dựa trên Debian vô hiệu hóa modeline
theo mặc định.
" modelines have historically been a source of security/resource
" vulnerabilities -- disable by default, even when 'nocompatible' is set
set nomodeline
Bạn phải kích hoạt modeline
rõ ràng trong .vimrc
hoặc ~/.vim/vimrc
tập tin của bạn .
set modeline
Rất có thể đó là do modeline bị vô hiệu hóa.
Tôi làm việc xung quanh bằng cách:
Trong trường hợp này, các lệnh trong danh sách trắng mặc định bao gồm filetype
.