Eu gosto de escrever tutoriais e artigos para um fórum de programação que frequento. Este fórum tem um limite de caracteres por postagem. Eu usei o Notepad ++ no passado para escrever postagens e mantém uma contagem de caracteres ativos na barra de status. Estou começando a usar o gVim mais e realmente não quero voltar ao Notepad ++ neste momento, mas é muito útil ter essa contagem de caracteres. Se eu ultrapassar a contagem, geralmente acabo colando a postagem no Notepad ++ para que eu possa ver quando apara o suficiente para atingir o limite.
Vi sugestões que :set ruler
ajudariam, mas isso só fornece a contagem de caracteres pelo índice da coluna atual na linha atual. Isso seria ótimo se eu não usasse quebras de parágrafo, mas tenho certeza de que você concorda que ler vários milhares de caracteres em um parágrafo não é confortável.
Li a ajuda e pensei que rulerformat
funcionaria, mas, depois de examinar o statusline
formato usado, não vi nada que contasse caracteres para o buffer atual.
Vi que existem plugins que adicionam isso, mas ainda estou mergulhando no gVim e não tenho certeza se quero carregar plugins aleatórios antes de entender o que eles fazem. Eu preferiria usar algo embutido no vim, mas se não existe, não existe.
O que devo fazer para alcançar meu objetivo? Se envolve um plug-in, você o usa e como funciona?
g CTRL-G
Eu não sabia que isso existia. Agradável!! [...] %
?sugere que você poderia fazer uma operação a seco de uma ala de substituição
(que informa o número de caracteres correspondentes) ou que você gosta
strlen()
do texto visualmente selecionado:("é o registro sem nome)
como você pode chamar uma expressão em sua linha de status como
%{myfunc()}
essa pode ser um bom ponto de partida. contar o tempo todo pode ser um pouco demorado, já que você teria que selecionar o texto inteiro e, em seguida, puxá-lo, mas talvez mostrar o número de bytes no registro "-registo já esteja bom para você. se você realmente deseja saber o número de caracteres no buffer: apenas selecione visualmente TODO o texto no buffer e puxe-o para que a solução seja:que fornece o número de caracteres no registro "" (que é idêntico ao número de bytes se você selecionar e puxar o buffer atual).
fonte
g<CTRL-g>
método na resposta aceita.Uma melhoria na resposta de mrucci:
Você pode usar
wc
no linux sem precisar salvar o arquivo primeiro, direcionando a:w
saída do comando da seguinte maneira:e você pode mapeá-lo para algo como mencionado por mrucci.
fonte
da-te
o que também é uma boa solução alternativa para o seu problema. basta ir até o final do buffer com Ge o número de bytes mostrado na sua linha de status é o número de caracteres (não é verdade com caracteres de vários bytes, é claro). volte para onde você veio ctrlo.
fonte
set statusline+=\ %o\ %N
(curiosamente, ele não funciona para, por exemplo, o item "t S") . Então, se você vê a linha de status inalterada, é porque você precisa executarset laststatus=2
. Para mim, substituiu a linha de status transparente existente pela nova, sendo preto sólido e tendo apenas o item "contagem de bytes".Se você costuma usar: w para salvar o arquivo, cada vez que você faz isso, o status reporta o número de caracteres gravados. Por exemplo, no final desta frase, fiz a: w (sim, estou usando o gvim para escrever esta nota) e relatou: 245C redigida.
fonte
Você pode anexar uma expressão para exibir o bytecount do buffer na linha de status com:
Ou você pode alterar a variável de opção diretamente para evitar tudo isso escapando:
fonte
...%{ line2byte(line(\"$\")+1))-1 }
que inclua os caracteres da última linha na contagem. Entretanto, essa abordagem não conta caracteres multibyte corretamente.Solução alternativa que tenho usado até aceitar a resposta de mrucci:
Descobri por acidente que, quando eu: w para salvar o arquivo, o comando gera o número de bytes gravados. Isso é mais ou menos uma contagem de caracteres, então já foi suficientemente próximo. Também gosto da resposta de mrucci, possivelmente mais do que essa, porque ela também conta com palavras.
fonte
Se você mantiver uma cópia de arquivo do seu texto, basta escrever seu texto no disco - a contagem de caracteres é exibida por padrão.
Se você não quiser manter um arquivo, basta salvar seu texto para
/dev/null
::w!/dev/null
.Você também pode
wc
contar seus caracteres::%!wc -c
- mas não se esqueça de clicar Upara restaurar seu texto.Se você precisar disso com frequência, apenas mapeie esses comandos para uma sequência de teclas:
:map #wc :w!/dev/null^[
- observe que^[
deve ser inserido como Ctrl+ V Esc.Como primeiro indicador do tamanho do texto, basta ativar os números de linha; admitido: isso precisa de aritmética mental ;-)
fonte
Depois de fazer essa pergunta e ler as respostas (obrigado mrucci), adicionei essas linhas ao meu arquivo de inicialização .vimrc.
Deixo para o vim: ajude os usuários a descobrir o que fazem.
Pessoalmente, acho útil iniciar os mapeamentos do Vim; ou, já que raramente os uso como o primeiro caractere de um comando.
fonte