В .vimrc `set nocompatible` совершенно бесполезен? - PullRequest
68 голосов
/ 01 мая 2011

Несколько пользователей в этом эпическом вопросе помещают в .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 существует, что делает его бессмысленным.

Ответы [ 4 ]

56 голосов
/ 01 мая 2011

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

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

Когда Vim запускается, «совместимый» опция включена. Это будет использоваться, когда Vim начинает свою инициализацию. Но как только файл user vimrc найден, или файл vimrc в текущем справочник или "ВИМИНИТ" переменная окружения установлена, будет быть установленным на 'nocompatible'.

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

В любом другом случае, да, установка 'nocompatible' в вашем vimrc - это пустяк.

В конце концов, я думаю, что это просто вопрос "лучше, чем потом сожалеть".

19 голосов
/ 21 марта 2014

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

vim -u test_vimrc

Из vim ": help nocompatible"

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

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

6 голосов
/ 23 октября 2013

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

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

0 голосов
/ 23 января 2016

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

$ 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, также известный как Ubuntu) действительно ДЕЛАЕТ кошмар своим пользователям, переопределяя настройку по умолчанию на set compatibility . Я надеюсь, что теперь вы будете знать, почему, когда вы выходите из FreeBSD, первое, что вам нужно сделать, это переопределить общесистемные настройки, добавив set nocompatible в свой ~/.vimrc. Потому что в противном случае вы просто создали бы буквы вместо того, чтобы перемещать курсор так, как вы привыкли.

Я думаю, что это ужасная идея. Другими словами, эта set compatible строка должна быть удалена из всей системы vimrc.tiny в Debian и Ubuntu, потому что она будет раздражать новых пользователей, которые (пока) не настолько умны, как зная, как чтобы заставить работать клавиши курсора. Именно такие вещи заставляют их nano и других из-за таких совершенно бессмысленных блокаторов!

Мне бы очень хотелось поговорить с чуваком, который однажды распространил это изменение в общесистемном файле ресурсов в Debian. И, возможно, также людям, которые признали его изменение в полной мере.

Джонни прав: на вашем личном ПК вы можете удалить указанную строку из общесистемного .vimrc (если есть) и коснуться пустого .vimrc на вашем $ HOME . Большое спасибо за указание на это, гораздо меньше беспорядка снова. Обратите внимание, что вы ДОЛЖНЫ иметь это ~/.vimrc (даже если оно пустое!), Так как в противном случае вы не сможете использовать курсоры без явного ввода set nocompatible.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...