Nie rozumiem, jak zezwolić na wyróżnianie składni w plikach edytowanych przez vi podczas korzystania z sudo. Kiedy ja sudo vi <filename>
terminal jest tylko czarno-biały z ustawieniami mojego terminalu. W vi, jeśli wejdę, :syntax on
nic się nie zmieni.
Kiedy vi <filename>
cała składnia jest odpowiednio pokolorowana. Za pomocą RHEL 5.4, odpowiednia env:
LS_COLORS=no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;
33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=01;32:*.cmd=01;
32:*.exe=01;32:*.com=01;32:*.btm=01;32:*.bat=01;32:*.sh=01;32:*.csh=01;
32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;
31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tz=01;31:*.rpm=01;
31:*.cpio=01;31:*.jpg=01;35:*.gif=01;35:*.bmp=01;35:*.xbm=01;35:*.xpm=01;
35:*.png=01;35:*.tif=01;35:
SHELL=/bin/bash
TERM=xterm-color
vi
nie obsługuje koloru, więc wszystko, co pokazuje kolor, działavim
lub jest podobne.Odpowiedzi:
Odpowiedź Larka jest prawdopodobnie najbardziej prawdopodobna. Możesz nie chcieć zmieniać konta root vi na stałe vim, ponieważ jeśli twoje zasoby są niskie vi prawie zawsze gwarantuje, że zawsze będzie działać, nie jestem pewien co do vim.
Prawdopodobnie używasz (kolor)
pod twoim normalnym użytkownikiem i
pod sudo lub rootem. Możesz to sprawdzić za pomocą:
raz pod twoim normalnym użytkownikiem, a drugi przez sudo
Zrób
jeśli potrzebujesz więcej szczegółów
źródło
W systemie RHEL
/bin/vi
jest zazwyczaj minimalną wersjąvim
bez obsługi wyróżniania składni./usr/bin/vim
jest w pełni funkcjonalnym edytorem. Jest bardzo prawdopodobne, że w środowisku użytkownikavi
jest to aliasvim
. Spróbuj tego:Czy widzisz teraz podświetlanie składni?
źródło
Twój
vi
prawdopodobnie pochodzi/bin/vi
z pakietu,vim-minimal
który nie obsługuje podświetlania składni.sudo vi
uruchamia się/bin/vi
dla Ciebie.Bash rozwija alias tylko dla pierwszego słowa w linii poleceń, więc w:
vi
nie jest zastępowane,vim
nawet jeśli masz zdefiniowany ten alias.Rozwiązaniem jest zdefiniowanie innego aliasu (dla wywołującego użytkownika
sudo
):Zwróć uwagę na spację po drugim
sudo
.Korzystając z tego
sudo
, bash wykona rozszerzenie aliasu dlavi
insudo vi
. Walias
części dokumentu Bash napisano:Po wprowadzeniu polecenia możesz nacisnąć Ctrl+ Alt+ Ew,
bash
aby zobaczyć wynik rozwinięcia.Kredyty:
https://bbs.archlinux.org/viewtopic.php?id=36796
http://www.shellperson.net/using-sudo-with-an-alias
Wystarczy aliasing
vi
w/root/.bashrc
nie zadziała.Można również zauważyć, że
vi
nie jest aliasowany dla roota w niektórych dystrybucjach w /etc/profile.d/vim.sh:Zmiana tego również nie rozwiąże problemu.
źródło
Domyślnie w 5.4 vi jest domyślnie. Zapomniałem, która wersja się rozpoczęła. Spowoduje to dodanie niezbędnego aliasu:
źródło
odkryłem, że w mojej wersji vima (instalacja z
sudo apt-get install vim
debianem 7)syntax on
polecenie jest zdefiniowane dla poszczególnych użytkowników w~/.vimrc
. jednak domyślnie instalacja nie utworzyła/root/.vimrc
plikusudo vi
do załadowania. więc właśnie skopiowałem~/.vimrc
do katalogu/root/
i to załatwiło sprawę:sudo cp ~/.vimrc /root/
źródło
Wynika to z faktu, że użytkownik root nie ma pliku konfiguracyjnego vim. więc po prostu skopiuj standardowy plik konfiguracyjny vim użytkownika do katalogu głównego.
sudo cp -r ~/.vi* /root/
coś w tym stylu.Uwaga: sprawdź, czy nie masz pliku odpowiadającego,
~/vi*
który nie jest dla Vima.źródło
1) Sprawdź, czy naprawdę używasz vima, a nie vi (co niestety często jest domyślne w świeżo zainstalowanych systemach)
2) Sprawdź, czy masz
/etc/vim/vimrc
linięsyntax on
3) Nie wszystkie rodzaje plików mają domyślnie dostępne informacje o podświetlaniu składni ....
źródło
Dla tych, którzy nadal szukają pomocy, wypróbuj te polecenia.
sudovi = which sudo vi
usrvi = which vi
Inaczej...
mv $sudovi $sudovi.save
ln -s $usrvi $sudovi
(link symboliczny)źródło