Os comandos do cygwin vim são diferentes do normal?

28

Não consigo editar arquivos de texto usando o vim no cygwin.

Eu tenho que pressionar ivárias vezes para inserir texto. Às vezes funciona e às vezes não. Sempre que movo o cursor para cima, tenho que pressionar I várias vezes.

Qual poderia ser o problema? Faz backspaceo trabalho em cygwin?

Randhir Singh
fonte
Você está executando dentro do console nativo do Windows, em outro emulador de terminal executando como um aplicativo nativo, em um emulador de terminal executando no X? Qual versão do Windows? O atraso entre pressionar ESCe pressionar iimporta?
Gilles 'SO- stop be evil'

Respostas:

34

O Cygwin vim é enviado com a configuração padrão do vim, que deixa o vim no modo de compatibilidade do vi, onde ele tenta emular o vi original o mais próximo possível. Entre outras limitações, as teclas de seta não funcionam nesse modo e o backspace apenas move o cursor para a esquerda em vez de apagar um caractere.

Criar um vazio ~/.vimrcé suficiente para desativar o modo de compatibilidade do vi:

touch ~/.vimrc

Dito isto, ipara entrar no modo de inserção deve funcionar de qualquer maneira. Você precisará fornecer mais detalhes sobre onde e como está executando o vim. Além disso, você está realmente executando o vim que acompanha o Cygwin, ou a versão nativa do Windows para o vim?

Atualizar

Você pode adicionar os conjuntos abaixo em ~ / .vimrc para fazer com que seja semelhante ao vim padrão

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

Se o vim não pegar seu arquivo vimrc, ele poderá estar procurando um .vircarquivo. Nesse caso, renomeie o arquivo e as alterações serão aplicadas.

ak2
fonte
Teria sido bom se você dissesse como desativar a compatibilidade.
Gideon 20/05
Você sabe onde é o local padrão do cygwin? Eu quero criar .virc por GUI em vez de cygwin
Alex
13

A maneira mais fácil é copiar o arquivo vimrc de amostra do Cygwin VIM

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

Isso resolverá o problema de todas as contas do seu sistema. Se, por algum motivo, você desejar apenas alterá-lo para um usuário específico, faça

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

Veja a referência aqui

Gaurav
fonte
1
Essa deve ser a resposta aceita, porque o exemplo realmente ativa o destaque de sintaxe por padrão e provavelmente muitos outros padrões estão acostumados.
JohnEye
Não funcionou até a reinicialização do PC. Mas funciona!
3bdalla
Excelente resposta, simples e resolveu todos os diferentes problemas que eu estava vendo com uma nova cygwin instalar, e destaque de sintaxe é um bônus que foi inesperado
crobicha
Esta é de longe a melhor resposta !!
Theodore R. Smith
1
onde está localizado esse arquivo? Eu estava procurando por isso em / usr / share /, mas não consigo ver nenhum diretório chamado vim.
Neo33 15/08/16
3

Eu tive um problema com as teclas de seta enquanto tentava vim dentro do Windows 8.1 usando o cygwin. O problema foi imprimir a A / B / C / D enquanto navegava com as teclas de seta no modo de inserção. A solução trabalhada para mim é:

cp vimrc_example.vim ~/.vimrc

Basicamente, acima do comando de copiar o vimrc_example.vimarquivo para /home/<user name>/.vimrc.

noufal
fonte
Isso consertou para mim. Eu tive o mesmo problema com a chave de inserção e as setas não funcionando no vim. Isso estava no Windows 10.
Yanick Girouard
2

Tem certeza de que não está usando o vi em vez do vim?

Rfelsburg
fonte
1

Tente desta maneira:

  • primeiro:

    cp /usr/share/vim/vim73/vimrc_example.vim ~/.vimrc
    
  • Em seguida, adicione esta linha ao seu ./.bashrcarquivo:

    alias vi="vim"
    
binghenzq
fonte
0

Não, os comandos são exatamente os mesmos. Parece que você tem um problema de entrada. O teclado está com defeito ou o terminal está com problemas ou algo assim.

Caleb
fonte
0

Dependendo das características do seu programa de terminal, quando você pressiona uma tecla do cursor, ele envia uma sequência de caracteres começando com a tecla ESC. Por exemplo, a tecla Seta para cima envia os três caracteres ESC [A. Com o vim no modo de entrada, pressionar uma tecla do cursor pode encerrar o modo de entrada quando ESC é visto, e os caracteres subseqüentes podem ser interpretados como comandos do vim. Como ele sai do modo de entrada, é necessário pressionar i novamente para continuar inserindo texto. Talvez seja isso que está acontecendo com você.

Verifique se o seu terminal possui opções que podem alterar a emulação, como VT-100, VT-220 ou uma configuração que especifica o que é enviado quando as teclas Backspace ou Del são pressionadas. Alterar essas configurações pode obter o comportamento desejado. Se você estiver usando o console de comando nativo do Windows, provavelmente não terá essas opções.

Pode ser necessário evitar o uso das teclas do cursor no modo de entrada. Pressione ESC para sair do modo de entrada, mova o cursor e, em seguida, i novamente para obter mais entradas. Foi assim que nós, veteranos, tivemos que fazer isso antes que o vim se tornasse inteligente o suficiente para interpretar as teclas do cursor no modo de entrada.

malabarista
fonte