Vi <filename> 'i sudo yaparken neden vurgulamayı vurgulamıyorum?


27

Ben yoluyla düzenleme ediyorum dosyalarda sözdizimi vurgulamasını izin anlamıyorum vi sudoyu kullanırken. Ben sudo vi <filename>terminal, terminal ayarlarımın sadece siyah-beyazı olduğunda. Eğer vi'ye girersem :syntax onhiçbir şey değişmez.

Ben vi <filename>tüm sözdizimi düzgün renklendirdiğimde. RHEL 5.4, ilgili env kullanarak:

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

3
viRengi desteklemiyor, bu nedenle renk gösteren bir şey çalışıyor vimveya benzer.
Chris S

Yanıtlar:


26

Larks cevabı muhtemelen en muhtemeldir. Kök hesaplarınızı değiştirmek istemeyebilirsiniz vi, kaynaklarınız düşük, sanki her zaman çalışacağından neredeyse eminim, sanki vim hakkında emin değilim.

Muhtemelen kullanıyorsunuz (renkli)

/usr/bin/vim 

normal kullanıcı altında ve

/bin/vi

sudo veya kök altında. Aşağıdakileri kullanarak kontrol edebilirsiniz:

which vi

normal kullanıcınızın altında ve diğeri sudo aracılığıyla

sudo which vi

Bir yap

man which 

daha fazla ayrıntıya ihtiyacınız varsa


Ben kullanım vim kök hesabını değiştirme ama sadece yerine sudo vi <dosya> benim kullanıcı sudo vim <dosya> kullanmak bana söyler gibi bu vi vim diğer adı edildiği gösterdi bilerek vermedi
Scott Lundgren

17

Bir RHEL sisteminde, herhangi bir sözdizimi vurgulama desteği olmadan /bin/vitipik olarak minimal versiyonudur vim. /usr/bin/vimtam özellikli bir editör. Kullanıcı ortamınız viiçin bir takma ad olması muhtemeldir vim. Bunu dene:

sudo vim /some/file

Şimdi sözdizimi vurgulama alıyor musunuz?


Evet! Görünüşe göre sinping'in cevabı istediğim davranışı elde etmek için ihtiyacım olan oydu
Scott Lundgren

11

Sizin vimuhtemelen /bin/vipaketinden vim-minimalsözdizimi vurgulamasını desteklemez. senin için sudo vibaşlattı /bin/vi.

Bash, sadece komut satırınızdaki ilk kelimede takma ad genişlemesi yapar, yani:

sudo vi

vivimtanımlanmış takma isme sahip olsanız bile , bunun yerine geçmez .

Çözüm , başka bir takma ad tanımlamaktır (kullanıcının çağırması için sudo):

alias sudo = 'sudo'

Saniyeden sonraki boşluğa dikkat edin sudo.

Bunu kullanarak sudobash, içinde takma ad genişletme işlemini vigerçekleştirir sudo vi. In aliasBash doc bölümünde şöyle der:

Diğer ad değerinin son karakteri boşsa, diğer adı izleyen bir sonraki komut sözcüğü ayrıca diğer ad genişletme olup olmadığını denetler.

Eğer komutu girdikten sonra, tuşuna basabilirsiniz Ctrl+ Alt+ Eiçinde bashgenişleme sonucunu görmek için.

Kredi:

https://bbs.archlinux.org/viewtopic.php?id=36796

http://www.shellperson.net/using-sudo-with-an-alias


Basitçe aliasing viiçinde /root/.bashrcçalışma olmaz.

Ayrıca vi/etc/profile.d/vim.sh dosyasındaki bazı dağıtımlarda kök için takma adlanmadığı da belirtilebilir:

if [ -n "$BASH_VERSION" -o -n "$KSH_VERSION" -o -n "$ZSH_VERSION" ]; then
  [ -x /usr/bin/id ] || return
  ID=`/usr/bin/id -u`
  [ -n "$ID" -a "$ID" -le 200 ] && return
  # for bash and zsh, only if no alias is already set
  alias vi >/dev/null 2>&1 || alias vi=vim
fi

Bunu değiştirmek de sorunu çözmeyecektir.


Sudo ile takma isim için harika bir numara!
Corey Henderson

Bunu seviyorum - sade ve şık !!! Bu doğru cevap.
FilmJ

3

Varsayılan olarak 5.4'te vi varsayılandır. Hangi sürümde başladığını unutuyorum. Bu sizin için gerekli takma adı ekleyecektir:

cat <<_EOF >>/root/.bashrc

alias "vi"="/usr/bin/vim"
_EOF

2

vim sürümümde ( sudo apt-get install vimdebian 7 ile kur ) syntax onkomutunun kullanıcı başına esasına göre tanımlandığını buldum ~/.vimrc. ancak, varsayılan olarak yükleme, yüklenecek bir /root/.vimrcdosya oluşturmadı sudo vi. yüzden sadece kopyalanan ~/.vimrciçine /root/dir ve bu hile yaptı:sudo cp ~/.vimrc /root/


1

Bunun nedeni kök kullanıcınızın vim yapılandırma dosyasına sahip olmamasıdır. bu nedenle standart kullanıcı vim yapılandırma dosyanızı kök dizine kopyalayın.

sudo cp -r ~/.vi* /root/ bunun gibi bir şey.

nb: ~/vi*vim için uygun olmayan bir dosya olup olmadığını kontrol edin .


0

1) Gerçekten vim kullanıp kullanmadığınızı kontrol edin vi (vi).

2) senin olmadığını kontrol /etc/vim/vimrchattı vardırsyntax on

3) Her türlü dosya varsayılan olarak mevcut sözdizimi vurgulama bilgilerine sahip değildir.


/ Etc / vim / vimrc yoktu, ancak / etc / vimrc varsayılan olarak vurgulanan sözdizimine sahip değildi: if & t_Co> 2 || set hlsearch endif üzerinde ("gui_running") sözdizimine sahiptir
Scott Lundgren

-1

Hala yardım arayanlar için bu komutları deneyin.

  • sudovi = which sudo vi
  • usrvi = which vi
  • Bu iki konum aynıysa, devam etmeyin.

Aksi takdirde...

  • mv $sudovi $sudovi.save
  • ln -s $usrvi $sudovi (sembolik bağlantı)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.