Как включить цвет в 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" в вашем комментарии.
Я нашел полезную информацию об этом здесь.