VIM: pontos de bala dobráveis

7

Sou muito novo no VIM, mas tenho tentado me ensinar na semana passada, mas estou encontrando um problema que tem se mostrado bastante frustrante:

Atualmente, estou usando principalmente o VIM para fazer anotações e usar a capacidade de dobrar do VIM para tornar o meu trabalho menos confuso. No entanto, encontrei um problema, onde cada ponto, que vai além do meu conjunto de linhas, se dobra em si mesmo. Para ser mais claro:

Eu gostaria de não ter pontos de marcadores únicos.

Eu pareço ter rastreado o problema para a maneira como meu texto é indentado: uma vez que o dobramento parece acontecer em um nível de recuo por padrão, meus pontos de dobra se dobram devido à segunda linha ser mais "indentada". Então, eu entendo que provavelmente há vagas formas de resolver este problema: dizer ao VIM para dobrar se o recuo na próxima linha for maior 1, ou lidar com a forma como os marcadores são envolvidos de forma completamente diferente.

Como essas soluções podem ser implementadas?

Eu uso um plugin chamado Workflow , então aqui está o meu vimrc:

set tw=100
set formatoptions=tcq
set com=fb:*
set spell
set spelllang=de
colorscheme synic
set fileencoding=utf8
execute pathogen#infect()
syntax on
filetype plugin indent on

E aqui está o que o próprio plugin define:

setlocal foldlevel=1
setlocal foldenable
setlocal sw=2 sts=2
setlocal expandtab
setlocal foldtext=WorkflowishFoldText()
setlocal foldmethod=expr
setlocal foldexpr=WorkflowishCompactFoldLevel(v:lnum)
setlocal autoindent
    
por montauk 14.12.2013 / 17:45

1 resposta

4

Infelizmente, não há como fazer isso sem o suporte do plug-in. (Mais ou menos.)

As principais linhas aqui são:

setlocal foldmethod=expr
setlocal foldexpr=WorkflowishCompactFoldLevel(v:lnum)

O primeiro significa "use o valor de 'foldexpr' para determinar o nível de dobra de cada linha". O segundo define essa opção para usar o valor de uma função definida no plugin.

A dobragem no Vim é baseada nos níveis de dobra. Em foldmethod=expr , cada linha recebe um nível de dobra (um inteiro) pelo 'foldexpr' . Esses níveis determinam onde as dobras começam e terminam.

Solução 1 : escreva um novo 'foldexpr' .

Isso pode chamar WorkflowishCompactFoldLevel() , mas ajuste o valor para que os itens com marcadores de várias linhas não sejam dobrados. Vou deixar isso como um exercício, porque acho que é a abordagem errada. O que nos leva a:

Solução 2 : a maneira como funciona agora não é um problema.

Eu acho que o verdadeiro problema não é que essas dobras existam, mas que elas estão atrapalhando. Você pode descrever o que você faz que faz você notar que essas dobras estão lá? Pode ser uma questão de definir seu 'foldlevel' inicial de forma adequada para ft=workflowish buffers.

Idealmente, você não perceberia que essas dobras existiam até que você realmente tentasse fechar uma.

    
por 14.12.2013 / 21:07

Tags