O VIM destrói links simbólicos sob o Windows

6

Parece que, ao trabalhar com um arquivo no VIM , ele usa principalmente uma versão de backup do arquivo e, em seguida, substitui o original ao salvar. Este é um problema ao usar links simbólicos no Windows (por exemplo, mklink link_path target_path ), pois ele destrói o link simbólico.

Alguém sabe alguma maneira de contornar isso? Eu já vi isso na FAQ que fala especificamente sobre esse problema, mas a solução recomendada não funciona. Talvez tenha feito em algum momento, mas não para o Vim 7.3 (no Windows 7 x64).

    
por Thiru 29.09.2010 / 04:46

4 respostas

1

Este bug foi corrigido em 7.3.1182 . Vim 7.4 é o primeiro lançamento no vim.org para incluir este patch (lançado em 2013-08-10).

Para suportar versões mais antigas do vim, você pode usar algo assim em seu vimrc:

" Writing files on Windows doesn't preserve file attributes seen via cygwin
" (presumably because the created backup copy didn't inherit them correctly).
if has('win32') && v:version < 704
    set backupcopy=yes
endif
    
por 21.08.2014 / 19:01
2

Hum no windows, o link simbólico é movido para criar o arquivo de backup. Então as correções são escritas com o primeiro nome. (NB: O arquivo temporário ainda está vinculado ao arquivo original)

Eles dizem que "A única maneira de corrigir isso na versão atual não é    fazendo um arquivo de backup, por :set nobackup nowritebackup "

É essa a solução que você estava falando? Porque isso está funcionando no meu vista.

EDIT: Claro, você não terá backups.

    
por 10.03.2011 / 17:16
2

Se você ainda precisar de backups, poderá usar:

set bkc=yes

(por que? leia :h bkc ) ele resolve o problema no Windows.

Se o arquivo original for somente leitura, você precisará remover o sinalizador somente leitura antes de abrir o arquivo. Como alternativa, ao editar o arquivo, você pode remover o sinalizador somente leitura e executar :set modifiable , em seguida, salvá-lo.

Existe uma alternativa usando resolve () para resolver o caminho apontado pelo link. Eu uso version7.3 e resolve () parece não conseguir resolver os links feitos com o comando mklink no Windows):

http://vim.1045645.n5.nabble.com/How-do-I-make-e-path-completion-follow-symlinks-td1175347.html

    
por 05.06.2011 / 07:16
1

Usar a opção backupcopy pode ser melhor se você tiver apenas determinados arquivos ou diretórios nos quais espera encontrar links simbólicos. Por exemplo, eu uso links sym para editar arquivos de tempo de execução em meu repositório de código-fonte vim e ver as alterações refletidas no meu diretório ~ / vimfiles:

" for some reason, backupcopy=auto doesn't work on Windows to keep
" symbolic links. I use these in my vimfiles directory to override some
" runtime files which I really edit in the vim source repository.
autocmd BufWritePre ~/vimfiles/* set backupcopy=yes
autocmd BufWritePost ~/vimfiles/* set backupcopy&

Observe que o valor padrão de 'backupcopy' é SUPPOSED TO keep links simbólicos ao gravar, de acordo com a ajuda:

Veja o link

    
por 07.07.2011 / 05:59