Problema: Mover linhas verticalmente fecha as dobras

9

Quando movo as linhas com m(por exemplo :m+1) todas as minhas dobras estão fechadas. Posso abrir a dobra zvnovamente e o cursor estará na posição em que mudei. Eu uso dobrar com {{{ }}}marcas e tenho set foldmethod=markerno meu .vimrc.

Como posso impedir que o vim feche dobras ao mover linhas?

dnieder
fonte
11
Não consigo reproduzir isso usando vim -u NONE -U NONE -N. Pode ser um problema com seu vimrc ou um plug-in.
EvergreenTree
2
Acontece comigo mesmo com -u NENHUM -U NENHUM -N. Eu uso a v7.4 no arch linux
dnieder
11
@ EververreenTree Estou com o mesmo problema. Com vim -u NONE -U NONE -N fold-teste apenas definindo foldmethod=marker. Estou executando o Vim 7.4.712 no Arch. Se eu tentar o mesmo com o Vim no Vim 7.4.160 no CentOS 7, obtenho exatamente os resultados opostos (todas as dobras são abertas ao usar :m+1). E o Vim 7.2.441 no CentOS 6 funciona bem ... Todas as fold*configurações parecem as mesmas nessas máquinas.
Martin Tournoij 5/05
11
Isso é muito estranho. Isso parece um bug.
EvergreenTree
3
Isso pode ser causado pelo patch 7.4.700, que tenta impedir, que as dobras ficam inválidas em: move
command

Respostas:

2

Você pode desativar a dobra antes de fazer isso :m+1usando zi. E, em seguida, ative-o novamente com zi.

Você também pode adicionar um mapeamento especial para isso no seu .vimrc:

""move line up/down with Shift+up/down
nnoremap <S-Up> zi:m-2<CR>zi
nnoremap <S-Down> zi:m+<CR>zi
inoremap <S-Up> <Esc>zi:m-2<CR>zia
inoremap <S-Down> <Esc>zi:m+<CR>zia
user2683458
fonte
Isso funcionou para mim. (embora eu usei ligações diferentes)
IanEdington
1

Dobrar é um mecanismo bastante complicado (veja outra resposta que eu dei sobre dobras para uma discussão detalhada sobre a digitalização de dobras).

Para dar uma resposta completa, precisaremos ver que tipo de plug-ins você está carregando ao inicializar uma instância do vim.

Eu apostaria que existem alguns plugins que estão mexendo com as configurações padrão do vim ( vim -u NONEdeveriam ter reproduzido isso). Qualquer plug-in que altere foldmethodé uma causa provável (eu tentaria removê-los 1 por 1 e ver o que causa o problema)

Se você não quiser mexer com seus plugins, recomendo ajustar manualmente as configurações de sintaxe + análise e, em seguida, abra um buffer de teste para confirmar sua funcionalidade. Pode ser uma jornada frustrante fazê-lo jogar bem, mas com algumas escavações implacáveis, :helpvocê deve ser capaz de lidar com a fera que está dobrando.

Dan Bradbury
fonte