В .vimrc, `set nocompatible` полностью бесполезен?
Несколько пользователей в этом эпическом вопросе добавили следующее в .vimrc
:
" Necesary for lots of cool vim things
set nocompatible
Но действительно ли это необходимо? Из документов:
'compatible' 'cp'
boolean (default on, off when a |vimrc| or |gvimrc| file is found)
Если set nocompatible
идет в .vimrc
, это означает, что существует файл .vimrc
, кажущийся его бессмысленным.
Ответы
Ответ 1
Если это общесистемный vimrc, эта опция не будет отключена. Итак, если вы меняете общесистемный vimrc и хотите его, вам нужно установить его.
В разделе документации * compatible-default * (выделено мной):
Когда Vim запускается, "совместимый" опция включена. Это будет использоваться, когда Vim начинает инициализацию. Но как только будет найден пользовательский файл vimrc, или файл vimrc в текущем или "VIMINIT" задана переменная окружения, она будет быть установленным в "nocompatible" .
Другим отличием является то, что явно устанавливаются "nocompatible" overrules, вызывающие vim с флагом -C..
В любом другом сценарии да, установка "nocompatible" в вашем vimrc является noop.
В конце концов, я думаю, что это просто вопрос "лучше, чем сожалеть".
Ответ 2
Многие люди делят свои файлы .vimrc на GitHub, и я иногда проверю настройки без замены моего .vimrc файла. vim позволяет мне делать это с флагом -u.
vim -u test_vimrc
Из vim ": help nocompatible"
(Примечание. Это происходит не для общесистемного файла vimrc или gvimrc, ни для файла, заданного с | -u | аргумент).
Это означает, что если вы делитесь своим .vimrc с кем-то, и они используют флаг -u для загрузки вашего файла, vim не будет настроен так же, как если бы файл был назван .vimrc и расположен в вашем домашнем каталоге.
Ответ 3
Я использовал vim в Cygwin на виртуальной машине Windows, и каждый раз, когда я был в режиме Insert, нажатие клавиш со стрелками приводило к тому, что на экране вместо vim печатались "A", "B", "C" или "D" вместо прокрутки. Я нашел форум, в котором говорилось, что установка vim в несовместимый режим исправит его. К счастью, это произошло.
Я поместил "set nocompatible" в свой файл ~/.vimrc, и проблема не исчезла. Так что, возможно, это не на 100% бесполезно.
Ответ 4
Основываясь на том, что Джонни указал выше, я был просто удивлен, когда только что нашел ЭТО:
$ cat /usr/share/vim/vimrc.tiny
" Debian system-wide default configuration Vim
set runtimepath=~/.vim,/var/lib/vim/addons,/usr/share/vim/vimfiles,/usr/share/vim/vim74,/usr/share/vim/vimfiles/after,/var/lib/vim/addons/after,~/.vim/after
set compatible
ARGH!!!
Нет, я этого не ожидал.
Debian (или Debian Unstable aka Ubuntu) действительно ДОЛЖНЫ поставить кошмар своим пользователям, переопределив настройку по умолчанию с помощью установить совместимый.
Я надеюсь, что теперь вы узнаете, почему, когда вы идете из FreeBSD, первое, что вам нужно сделать, это переопределить общесистемную настройку, поместив set nocompatible
в свой собственный ~/.vimrc
. Потому что иначе вы просто создадите буквы, а не сможете перемещать курсор так, как вы привыкли.
Я думаю, что это ужасная идея. Другими словами, эта строка set compatible
должна быть удалена из общесистемного vimrc.tiny
как в Debian, так и в Ubuntu, потому что это будет раздражать новых пользователей, которые пока не так умны, как знание как заставить клавиши курсора работать.
Такие вещи заставляют их nano
и другие из-за таких совершенно бессмысленных блокировщиков!
Мне бы очень хотелось поговорить с чуваком, который однажды распространил это изменение на общесистемный файл ресурсов в Debian. А может быть, и людям, которые в полной мере признали его изменение.
Джонни прав: на вашем персональном компьютере вы можете удалить указанную строку из общесистемного .vimrc(если есть) и коснуться пустого .vimrc на $HOME. Большое спасибо за то, что указали на это, а затем снова загромождали. Обратите внимание, что вы ДОЛЖНЫ иметь это ~/.vimrc
(даже если пусто!), Так как иначе вы не сможете использовать курсоры без явного ввода set nocompatible
.