Recentemente, percebi que vimrc
agora tenho mais de 400 linhas (que a IMO é demais, tentarei reduzir) e, para facilitar a navegação, a leitura e a edição, decidi investigar o conceito de dobrar no vim (que Eu não estava familiarizado com) .
- Tentei definir o método de dobrar,
indent
mas não gostei do resultado (era muito confuso, principalmente porque grande parte do meuvimrc
não é realmente recuado). - Eu também tentou definir
foldmethod
aexpr
esyntax
mas eu não era capaz de dobrar qualquer coisa corretamente. - Aqui, usar
diff
como método de dobra não parece relevante. (Ou, se não entendi como usá-lo) - Então, por enquanto, estou usando o
marker
método que não me satisfaz totalmente por causa dos marcadores"{{{
e"}}}
que achei "barulhentos" no arquivo.
Então, eu gostaria de saber se existem práticas recomendadas ou diretrizes comuns sobre como dobrar corretamente avimrc
.
Nota 1: Como todos sabemos, SO não é um fórum e não é feito para coletar opiniões pessoais e não é isso que estou procurando: é claro que acho que algumas pessoas têm suas preferências, mas gostaria de saber por que usar marcadores (por exemplo) melhoram mais a legibilidade do que usar recuo.
Nota 2: também meu principal objetivo é tornar o vimrc
mais claro possível, de modo que, se houver outras práticas recomendadas para criar um bom interesse, fique vimrc
curioso.
Edit 1: Eu deveria ter precisado que meu vimrc
já está subdividido em seções (e algumas vezes subseção) as principais sendo
- opções gerais
- plug-ins (contendo uma subseção para cada plug-in e sua configuração)
- mapeamentos
- navegação (também contendo subseção)
- cor
- etc ...
E é essa estrutura que me fez pensar em desistir: sinto que ser capaz de produzir apenas a seção em que estou interessado em um determinado momento é algo bastante conveniente.
Edit 2: A resposta mencionando subdivisões do vimrc
arquivo em vários arquivos é válida, mas como uma preferência pessoal, eu prefiro usar o fold, porque acho que é mais fácil manter apenas um arquivo no repositório git que contém meus dotfiles. Essa é apenas uma preferência pessoal e estou ciente de que também é possível usar essa abordagem, mas eu preferiria usar a dobradura.
"{{{
é o 'vim como' mais maneira de fazer as coisas, o plugin solarized usa isso e embora possa ser barulhento dá-lhe a forma mais padrão de configuração dobras manuaisRespostas:
Eu tenho as seguintes modelines na parte inferior da minha
vimrc
que copiei de godlygeek, o autor do tabular :Isso fará com que qualquer linha iniciada com 2+ seja
"
uma dobra. Quanto mais"
profunda a dobra. Isso permite subdividir seções, se necessário.fonte
>extra number of "
(nível inicial que é o número após <nesta linha) ou'='
(usa o nível da linha anterior), o significado pode ser encontrado emfold-expr
É uma boa idéia primeiro definir suas próprias categorias em sua
.vimrc
(como uma lista com sublistas e sub-listas) e adicionar todos os seus plugins / configurações / funções às respectivas categorias. Combinado com dobragem personalizada, isso pode funcionar muito bem:O exemplo acima mostra as possíveis categorias que acho úteis para estruturar o meu
.vimrc
. Ele usa as seguintes configurações de dobra personalizadas:Para definir suas próprias categorias e subcategorias, use a seguinte sintaxe:
A categoria de nível superior pode ser criada com muita facilidade se você usar o vim-snippets (por exemplo, com o UltiSnips ): Basta expandir o
box
oubbox
trecho fornecido pelo vim-snippets (escrevabox
oubbox
pressione o gatilho de expansão).Para alternar dobras abertas e fechadas ainda mais rápido, pressionando o espaço duas vezes:
Dessa forma, você tem um bem estruturado
.vimrc
que pode ser navegado facilmente.fonte
Eu uso o meu primário
vimrc
como um link para vários outros arquivos categorizados, fornecendo cada um à medida que avança, por exemplo, opções do Vim em um arquivo, configurações de plug-in em outro.Como resposta mais direta à pergunta do OP, eu uso o método do marcador, mas no lado direito, com espaçamento e em torno de mais categorias do que individuais, na maior parte. Eu faço cada plugin separadamente embora.
fonte
vimrc
arquivos diferentes porque (IMO) aumenta a complexidade e dificulta a manutenção. Sobre a dobra, o que você quer dizer com "fora para o lado direito com espaçamento"?" {{{
com tantos espaços quanto o seutextwidth
para que os marcadores fiquem perto das bordas direitas. Eu também tenho uma função FoldText personalizada no arquivo fold.vim. Eu prefiro arquivos separados para que meu git repo apenas um tipo específico de mod por commit.Você poderia dizer que a "melhor prática" é preeminentemente uma questão de opinião :), mas há duas abordagens que (1) fazem sentido óbvio e (2) podem ser aplicadas a todos os arquivos de configuração, não apenas ao Vim: dobrando por seções lógicas e subseções (ou até mais, se você se sentir corajoso), e dividir sua configuração em vários arquivos menores e
:source
inseri-los.Pessoalmente, prefiro desistir porque facilita o acesso às coisas, enquanto ainda me fornece uma hierarquia. Dobrar funções
autocmd
es nos níveis mais internos também é uma boa idéia, pois elas produzem unidades lógicas "naturais".marker
dobrar faz mais sentido para tudo isso, porque hierarquias lógicas não são necessariamente refletidas nos níveis de recuo ou no realce da sintaxe. Também aumentofoldcolumn
, o que me dá uma dica visual de onde estou:Em uma nota lateral, esta
foldtext
função (uma modificação de uma função semelhante por Drew Neil, IIRC) faz mais sentido para mim do que o padrão:Com a outra abordagem, os arquivos divididos, os principais problemas são encontrar coisas e alternar de um arquivo para outro. Uma maneira muito agradável de abordar ambos é usar um plug-in como CtrlSF , CtrlP ou similar. Mas você provavelmente já está usando um desses de qualquer maneira.
fonte
marker
. Na verdade, personalizarfoldcolumn
é uma coisa boa a se fazer, vou ver qual valor se encaixa melhor na minha necessidade. Também compartilho sua opinião sobre os arquivos divididos, mas não sabiaCtrlSF
que vou dar uma olhada, mesmo que esteja muito felizCtrlP
.fdm
afoldtext
eMyFoldText()
mas parece que não é a maneira correta de usá-lo.CtrlSF
funciona melhor com ag ou ack , que são versões essencialmente especializadas dogrep
.foldtext
não é um método de dobra personalizado, mas uma função para alterar a aparência do texto dobrado. A última linha em meus shows trecho de como ele é usado:set foldtext=MyFoldText()
.Práticas recomendadas básicas:
Divida em seções:
Comente cada seção / religue
(faça backup do seu
.vimrc
ou_vimrc
no Github)Apenas minha preferência pessoal. Talvez não seja de muita ajuda.
fonte
Inspirado na resposta de @ PeterRincker, criei o seguinte para usar os cabeçalhos de estilo ATX. Adicione-o ao final do seu
.vimrc
fonte
Se você possui funções grandes como eu, pode usar isso para dobrar suas funções:
E adicione esta modelagem ao seu vimrc:
fonte
Expandindo a idéia de Peter Rincker e @ go2null. Se você não deseja definir as opções de dobra na modelagem do Vim. Você pode usar o seguinte autocmd para definir o método de dobra e a expressão de dobra.
Fiz pequenas modificações para fazer a resposta original e fazê-lo funcionar como um comando vim regular (não é necessário escapar do cólon, mas é necessário fazer uma aspas duplas).
Se você não gosta da
foldexpr
string longa , podemos definir uma função para isso:Em seguida, substitua a linha autocmd prestes
foldexpr
afonte