В A. 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, это означает, что a .vimrc файл существует, что, по-видимому, делает его бессмысленным.

4 66
vim

4 ответа:

Если это общесистемный vimrc, эта опция не будет выключена. Итак, если вы меняете общесистемный vimrc и хотите его, вам нужно его установить.

из раздела документации *совместимость-по умолчанию* (выделено мной):

когда Vim запускается, "совместимый" опция включена. Это будет использоваться, когда Vim начинает свою инициализацию. Но как только vimrc пользователей файл найден, или файл vimrc в текущая каталог, или "VIMINIT" переменная окружения установлена, она будет установите значение "nocompatible".

другое отличие заключается в том, что явная установка "nocompatible" отменяет вызов vim с помощью -C флаг.

в любом другом сценарии, да, установка "nocompatible" в вашем vimrc-это noop.

В конце концов я думаю, что это просто "береженого Бог бережет".

многие люди разделяют их .файлы vimrc на GitHub, и я иногда буду тестировать настройки без замены моего .файл vimrc. vim позволяет мне делать это с флагом-U.

vim -u test_vimrc

от vim": help nocompatible"

(Примечание: это не происходит для общесистемного файла vimrc или gvimrc, ни для файла, заданного с аргументом | - u/).

Это означает, что если вы поделитесь своими .vimrc с кем-то, и они используют флаг-u для загрузки вашего файла, vim не будет настроен так же, как если бы файл был назван .vimrc и находится в вашем домашнем каталоге.

Я использовал vim в Cygwin на виртуальной машине Windows, и каждый раз, когда я был в режиме вставки, нажатие клавиш со стрелками приведет к печати vim "A", "B", "C" или "D" на экране вместо прокрутки. Я нашел форум, который сказал, что включение vim в nocompatible mode исправит это. К счастью, так оно и было.

Я поставил "set nocompatible" в моем ~/.файл vimrc и проблема ушла. Так что, возможно, это не 100% бесполезно.

основываясь на том, что Джонни указал выше, я был просто поражен, когда я только что узнал:

$ 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.