Отличаются ли команды cygwin vim от обычных vim?

28

Я не могу редактировать текстовые файлы, используя Vim в Cygwin.

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

В чем может быть проблема? Работает ли backspaceв cygwin?

Рандхир Сингх
источник
Вы работаете внутри собственной консоли Windows, в другом эмуляторе терминала, работающем как собственное приложение, в эмуляторе терминала, работающем под X? Какая версия винды? Имеет ли значение задержка между нажатием ESCи нажатием i?
Жиль "ТАК - перестать быть злым"

Ответы:

35

Cygwin vim поставляется с конфигурацией по умолчанию vim, которая оставляет vim в режиме совместимости с vi, где он пытается эмулировать исходный vi как можно ближе. Среди других ограничений, клавиши со стрелками не работают в этом режиме, и Backspace просто перемещает курсор влево, а не стирает символ.

Создание пустого ~/.vimrcдостаточно для отключения режима совместимости vi:

touch ~/.vimrc

Сказав это, iчтобы войти в режим вставки должен работать в любом случае. Вам нужно будет предоставить более подробную информацию о том, где и как вы используете vim. Кроме того, вы на самом деле используете vim, который поставляется с Cygwin, или нативную версию vim для Windows?

Обновить

Вы можете добавить следующие наборы в ~ / .vimrc, чтобы сделать так же, как по умолчанию vim

set nocompatible
set backspace=indent,eol,start
set backup
set history=50
set ruler
set background=dark
set showcmd
set incsearch
syntax on
set hlsearch

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

ak2
источник
Было бы неплохо, если бы вы сказали, как отключить совместимость.
Гидеон
Знаете ли вы, где по умолчанию находится домашнее местоположение cygwin? Я хочу создать .virc с помощью графического интерфейса вместо cygwin
Alex
13

Самый простой способ - скопировать пример файла vimrc Cygwin VIM

cp /usr/share/vim/vim*/vimrc_example.vim /etc/vimrc

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

cp /usr/share/vim/vim*/vimrc_example.vim ~/.vimrc

Смотрите ссылку здесь

Gaurav
источник
1
Это должен быть принятый ответ, потому что в примере фактически включена подсветка синтаксиса по умолчанию, и, вероятно, многие другие люди по умолчанию привыкли.
JohnEye
Не работал до перезагрузки ПК. Но это работает!
3бдалла
Отличный ответ, простой и решающий все проблемы, с которыми я столкнулся при новой установке Cygwin, а подсветка синтаксиса - неожиданный бонус
crobicha
Это, безусловно, лучший ответ!
Теодор Р. Смит
1
где находится этот файл? Я искал это в / usr / share /, но потом я не вижу ни одного каталога с именем vim.
neo33
3

У меня были проблемы с клавишами со стрелками при попытке vim в Windows 8.1 с помощью Cygwin. Проблема заключалась в печати A / B / C / D при навигации с помощью клавиш со стрелками в режиме вставки. Решение сработало для меня:

cp vimrc_example.vim ~/.vimrc

В основном, выше команда копирует vimrc_example.vimфайл в /home/<user name>/.vimrc.

noufal
источник
Это исправило это для меня. У меня была та же проблема с ключом вставки и стрелками, не работающими в vim. Это было на Windows 10.
Яник Girouard
2

Вы уверены, что не используете vi вместо vim?

rfelsburg
источник
1

Попробуйте так:

  • первый:

    cp /usr/share/vim/vim73/vimrc_example.vim ~/.vimrc
    
  • Затем добавьте эту строку в ваш ./.bashrcфайл:

    alias vi="vim"
    
binghenzq
источник
0

Нет команды точно такие же. Похоже, у вас есть проблема с вводом. Либо ваша клавиатура испорчена, либо ваш терминал на фрице или что-то в этом роде.

Калеб
источник
0

В зависимости от характеристик вашей терминальной программы, когда вы нажимаете клавишу курсора, она отправляет последовательность символов, начинающуюся с клавиши ESC. Например, клавиша «Стрелка вверх» отправляет три символа ESC [A. Если vim находится в режиме ввода, нажатие клавиши курсора может прекратить режим ввода, когда ESC виден, и последующие символы могут быть интерпретированы как команды vim. Поскольку он выходит из режима ввода, вам нужно снова нажать i, чтобы продолжить вставку текста. Возможно, это то, что происходит с тобой.

Проверьте, есть ли в вашем терминале параметры, которые могут изменить эмуляцию, например VT-100, VT-220, или параметр, который указывает, что отправляется при нажатии клавиш Backspace или Del. Изменение этих настроек может привести к желаемому поведению. Если вы используете командную консоль Windows, вы, вероятно, не получите эти опции.

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

жонглер
источник