Как включить цвет в Vim поверх SSH?

У меня есть два удаленных сервера:

Сервер 1: Linux 2.6.18-238.12.1.el5PAE i686 / VIM - Vi IMproved - версия 7.0.237
Сервер 2: Linux 2.6.18-338.19.1.el5.lve0.8.36 x86_64 / VIM - Vi IMproved версия 7.0.237

Когда я ssh на сервер 2 и использую vim для редактирования php или же .htaccess Файл имеет красивый цвет подсветки. Ниже /etc/vimrc файл на этом сервере.

Когда я ssh на сервер 1, цвет не появляется. Я попытался скопировать приведенный ниже код в мой файл ~/.vimrc на сервере 1, но синтаксис цвета не работает. Другие функции (как set nocompatible) работают, но не цвета.

Почему цвет не работает на сервере 1, и как я могу проверить и исправить это? tput colors на оба терминала возвращается 8, Я старался :syntax on а также :syntax enable но это тоже не помогает.

------------------------------------------------------------

Содержание /etc/vimrc файл:

if v:lang =~ "utf8$" || v:lang =~ "UTF-8$"
   set fileencodings=utf-8,latin1
endif

set nocompatible    " Use Vim defaults (much better!)
set bs=indent,eol,start     " allow backspacing over everything in insert mode
"set ai         " always set autoindenting on
"set backup     " keep a backup file
set viminfo='20,\"50    " read/write a .viminfo file, don't store more
            " than 50 lines of registers
set history=50      " keep 50 lines of command line history
set ruler       " show the cursor position all the time

" Only do this part when compiled with support for autocommands
if has("autocmd")
  augroup redhat
    " In text files, always limit the width of text to 78 characters
    autocmd BufRead *.txt set tw=78
    " When editing a file, always jump to the last cursor position
    autocmd BufReadPost *
    \ if line("'\"") > 0 && line ("'\"") <= line("$") |
    \   exe "normal! g'\"" |
    \ endif
  augroup END
endif

if has("cscope") && filereadable("/usr/bin/cscope")
   set csprg=/usr/bin/cscope
   set csto=0
   set cst
   set nocsverb
   " add any database in current directory
   if filereadable("cscope.out")
      cs add cscope.out
   " else add database pointed to by environment
   elseif $CSCOPE_DB != ""
      cs add $CSCOPE_DB
   endif
   set csverb
endif

" Switch syntax highlighting on, when the terminal has colors
" Also switch on highlighting the last used search pattern.
if &t_Co > 2 || has("gui_running")
  syntax on
  set hlsearch
endif

if &term=="xterm"
     set t_Co=8
     set t_Sb=%dm
     set t_Sf=%dm
endif

: вывод версии

VIM - Vi IMproved 7.0 (2006 May 7, compiled Aug  4 2010 07:21:18)
Included patches: 1, 3-4, 7-9, 11, 13-17, 19-26, 29-31, 34-44, 47, 50-56, 58-64, 66-73, 75, 77-92, 94-107, 109, 202, 234-237
Compiled by <bugzilla@redhat.com>
Tiny version without GUI.  Features included (+) or not (-):
-arabic -autocmd -balloon_eval -browse +builtin_terms -byte_offset -cindent -clientserver -clipboard -cmdline_compl -cmdline_hist -cmdline_info -comments -cryptv -cscope -cursorshape -dialog -diff -digraphs -dnd -ebcdic -emacs_tags -eval -ex_extra -extra_search -farsi
-file_in_path -find_in_path -folding -footer +fork() -gettext -hangul_input +iconv -insert_expand -jumplist -keymap -langmap -libcall -linebreak -lispindent -listcmds -localmap -menu -mksession -modify_fname -mouse -mouse_dec -mouse_gpm -mouse_jsbterm -mouse_netterm
-mouse_xterm +multi_byte -multi_lang -mzscheme -netbeans_intg -osfiletype -path_extra -perl -printer -profile -python -quickfix -reltime -rightleft -ruby -scrollbind -signs -smartindent -sniff -statusline -sun_workshop -syntax -tag_binary -tag_old_static -tag_any_white
 -tcl +terminfo -termresponse -textobjects -title -toolbar -user_commands -vertsplit -virtualedit -visual -viminfo -vreplace +wildignore -wildmenu -windows +writebackup -X11 -xfontset -xim -xsmp -xterm_clipboard -xterm_save
   system vimrc file: "/etc/virc"
     user vimrc file: "$HOME/.vimrc"
      user exrc file: "$HOME/.exrc"
  fall-back for $VIM: "/usr/share/vim"
Compilation:
gcc -c -I. -Iproto -DHAVE_CONFIG_H     -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2
Linking: gcc   -L/usr/local/lib -o vim       -lselinux -ltermcap -lacl

4 ответа

Решение

Я подозреваю, что у вас есть alias vim=vi в ~/.bashrc, Попробуйте выполнить "настоящую" команду, а не псевдоним:

\vim /path/to/php/file

Похоже, у вас работает CentOS. Убедитесь, что вы установили vim-enhanced пакет:

rpm -qa | grep vim
vim-minimal-7.0.109-4.el5_2.4z
vim-enhanced-7.0.109-7.el5
vim-common-7.0.109-7.el5

По версии vim вы можете сказать, что это vim-tiny и он не скомпилирован с -syntax вариант.

Также положить export TERM=xterm-256color в вашем bashrc, чтобы получить полную выгоду...

Вы также можете использовать sshfs смонтировать ресурс так, чтобы ваш локальный vim использовался для редактирования этих файлов.

Vim также может редактировать удаленные файлы. Прелесть этого в том, что вы можете редактировать, не выходя из собственной настраиваемой и знакомой конфигурации vim.

vi scp://username@example.com/path/to/file

Существует особый случай, когда ваш клиентский терминал не устанавливает цвет TERM, а вместо этого устанавливает COLORTERM. Сделай это:

На вашем клиентском компьютере добавьте SendEnv COLORTERM в /etc/ssh/ssh_configи на сервере добавьте AcceptEnv COLORTERM в /etc/ssh/sshd_config,

Перезагрузить sshd (service sshd reload) и восстановить соединение.

Если ваш сервер CentOS/RHEL и имеет /etc/profile/256term.sh (предоставляется пакетом initscripts), что мой сделал по умолчанию, это должно автоматически установить TERM в xterm-256color, включите цвет в bash (ls ...) и включите цвет в vim.

Как уже указывалось в quanta, если у вас есть только vi, установите vim-extended.

Я не уверен, требуется ли это, если ваш клиентский терминал уже устанавливает цвет TERM. Я должен был сделать это, чтобы обойти Терминатор с жестко закодированным TERM=xterm. У терминала gnome в Ubuntu действительно есть TERM xterm-256color по умолчанию, поэтому цвет может работать без использования Send/AcceptEnv в ssh.

Я думаю, у вас действительно может быть vi, а не vim-расширенная консоль, к которой вы подключены по SSH. Мне пришлось установить vim на vi или присвоить ему псевдоним, и у меня все работало нормально. Эта информация отсутствует в " E519:Option not supported: filetype" в вашем комментарии.

Я нашел полезную информацию об этом здесь.

Другие вопросы по тегам