... lub w dowolnym trybie.Jak wykryć, czy Vim działa w trybie ograniczonym?
Chcę tylko, aby zapobiec niektóre rozszerzenia z załadunkiem, kiedy jest to sprawa, coś jak:
if ! currentmode('restricted')
Bundle('some-extension')
endif
... lub w dowolnym trybie.Jak wykryć, czy Vim działa w trybie ograniczonym?
Chcę tylko, aby zapobiec niektóre rozszerzenia z załadunkiem, kiedy jest to sprawa, coś jak:
if ! currentmode('restricted')
Bundle('some-extension')
endif
Masz rację; specjalna zmienna, taka jak v:vimmode
, byłaby pomocna, ale nie sądzę, aby coś takiego istniało. Dlaczego nie podnieść tego na vim_dev mailing list?!
W międzyczasie musisz wykryć tryb poprzez wywołanie czegoś, co jest zabronione w trybie ograniczonym. Mój najlepszy pomysł, który jest najmniej inwazyjnym na sukces jest wywoływanie writefile()
z pustym Nazwa pliku:
silent! call writefile([], '')
" In restricted mode, this fails with E145: Shell commands not allowed in rvim
" In non-restricted mode, this fails with E482: Can't create file <empty>
let isRestricted = (v:errmsg =~# '^E145:')
nie jestem pewien, czy to dobry pomysł:
restricted-mode
niepełnosprawnych polecenia zewnętrzne (także niektóre związane z nimi funkcje). Jeśli wywołasz zewnętrzne polecenie lub pewne określone funkcje w rvim, otrzymamy błąd E145
.
Więc może po prostu zadzwonić do jakiegoś obojętnego polecenia zewnętrznego przez system()
, a następnie złapać wyjątek E145
. aby odróżnić, czy jest w trybie ograniczonym. na przykład
try
call system("echo x") "or even call system("")
catch /E145/
"your codes
endtry
nadzieję, że pomoże