Posso fazer com que a verificação ortográfica do Vim não reconheça sintaxe e verifique tudo?


7

O verificador ortográfico do Vim reconhece o código; ele usa o arquivo de sintaxe para desativar a verificação ortográfica das partes em que geralmente não faz sentido.

No entanto, de vez em quando, eu quero fazer uma verificação ortográfica. Os exemplos incluem blocos de códigos de remarcação, atributos HTML, nomes de variáveis ​​/ funções, etc.

Observe que * eu não estou procurando uma solução específica para o tipo de arquivo, mas algo genérico que diga ao Vim para "apenas verificar a ortografia".


Nota: essa pergunta surgiu anteriormente no SO , mas possui apenas uma solução específica para o tipo de arquivo. Também relacionado é Como posso verificar a ortografia nos atributos HTML? ; que também é uma solução específica para o tipo de arquivo.


4
O :syn offmencionado na resposta vinculada não é específico do tipo de arquivo e parece a maneira mais fácil e direta de fazer isso.
Ingo Karkat 23/02

@IngoKarkat Vendo como Carpetsmoker escreveu essa resposta, acho que não é suficiente para as necessidades dele.
23315 Rich

Sim, é o que eu uso agora em algumas ocasiões, mas tem o efeito colateral óbvio de desativar todos os realces de sintaxe (e é por isso que não uso com tanta frequência) ... Talvez seja a melhor resposta possível, talvez também haja uma maneira melhor (então eu pensei que seria útil perguntar novamente por aqui).
Martin Tournoij 23/02

Respostas:


3

Se você quer que isso seja algo que você pode ligar e desligar (como implicado pela escrita "na ocasião") Eu acho que você vai precisar de um script que pode remover todos os @Spelle @NoSpellgrupos a partir dos itens de sintaxe carregados existentes. (Veja :help spell-syntax.)

Uma maneira de implementar isso seria usar o :redirredirecionamento da saída de uma chamada :syntaxpara um arquivo e, em seguida, analisar o arquivo redefinindo todos os itens de sintaxe, mas removendo as referências @Spelle os @NoSpellclusters. Também é possível redirecionar a saída para uma variável .

Se você quiser ativar a verificação ortográfica em todos os lugares permanentemente , seria mais fácil escrever um script para remover os clusters dos arquivos de sintaxe reais instalados.

Se você quiser uma solução mais limpa, acho que precisará editar o próprio Vim.


0

Eu criei o script bash que fixa arquivos de sintaxe. NÃO É PERFEITO, MAS É BOM. Pode ser revertido executando-o novamente. Acrescenta contains=@Spella syn matche syn regiondefinições em todos os arquivos em determinado diretório.

Para usá-lo:

  1. Salve o script como fix_syntax_files.sh
  2. Conceder permissões
  3. Altere o caminho na parte inferior do script para um correspondente ao local dos plugins do vim
  4. Execute o script
  5. (OPCIONAL) Execute o script novamente para reverter as alterações

O script faz backup de todos os arquivos antes da modificação, para que você possa assumir que é seguro executá-lo. De qualquer forma, não sou responsável por possíveis problemas causados ​​pelo script.

Editar: você pode deixar comentários para o script no seguinte repositório: https://github.com/dominikduda/config_files/blob/master/bin/fix_vim_syntax_files.sh

#!/bin/bash

function fix_file {
  sed -i -e '/exe/! {s/contains=/contains=@Spell,/g}' $1
  sed -i -e 's/contains=@Spell,ALL/contains=ALL/g' $1
  sed -i -e 's/contains=@Spell,ALLBUT/contains=ALLBUT/g' $1
  sed -i -e 's/contains=@Spell,TOP/contains=TOP/g' $1
  sed -i -e 's/contains=@Spell,CONTAINED/contains=CONTAINED/g' $1
  sed -i -e 's/contains=@Spell,NONE/contains=@Spell/g' $1
  sed -i -e '/^ *syn match/ {/contains=/! s/$/ contains=@Spell/g}' $1
  sed -i -e '/^ *syn region/ {/contains=/! s/$/ contains=@Spell/g}' $1
  return 0
}

function revert_file {
  mv "$1/$2.spellfix-backup" "$1/$2"
  return 0
}

function fix_recursively_in_catalog {
  syntax_catalogs_paths="$(find $1 -type d ! -name '*.*' -not -path '*git*' -print)"
  syntax_catalogs_count="$(echo "${syntax_catalogs_paths}" | wc -l)"

  echo "${syntax_catalogs_count} syntax catalogs found and will be scanned for files"

  echo "${syntax_catalogs_paths}" | while read -r catalog_path ; do
      echo "    Scanning $catalog_path"
      ls -p "${catalog_path}" | grep -v / | grep -v .spellfix-backup | grep .vim | while read -r file_name ; do
          cp "${catalog_path}/${file_name}" "${catalog_path}/${file_name}.spellfix-backup"
          fix_file "${catalog_path}/${file_name}"
          echo "        Fixing ${file_name} (backup created as ${file_name}.spellfix-backup)"
      done
  done
  echo 'Fix done.'
  echo 'Remember to REVERT FIX before updating vim plugins'
  return 0
}

function revert_recursively_in_catalog {
  syntax_catalogs_paths="$(find $1 -type d ! -name '*.*' -not -path '*git*' -print)"
  syntax_catalogs_count="$(echo "${syntax_catalogs_paths}" | wc -l)"

  echo "${syntax_catalogs_count} syntax catalogs found and will be scanned for spellfix-backup files"

  echo "${syntax_catalogs_paths}" | while read -r catalog_path ; do
      echo "    Scanning $catalog_path"
      ls -p "${catalog_path}" | grep -v / | grep -v .spellfix-backup | grep .vim | while read -r file_name ; do
          revert_file "${catalog_path}" "${file_name}"
          echo "        Reverting ${file_name} (from file ${file_name}.spellfix-backup)"
      done
  done
  echo 'Revert done.'
  echo 'Remember to FIX AGAIN after plugins update (or set it as a post update hook)'
  return 0
}

function main {
  syntax_catalogs_paths="$(find $1 -type d ! -name '*.*' -not -path '*git*' -print)"
  while read -r catalog_path ; do
      if ls -p "${catalog_path}" | grep -v / | grep .spellfix-backup; then
        echo ".spellfix-backup files found, reverting fix!"
        echo "--------------------------------------------"
        revert_recursively_in_catalog $1
        return 0
      fi
  done < <(echo "${syntax_catalogs_paths}")
  echo ".spellfix-backup files NOT found, fixing!"
  echo "-----------------------------------------"
  fix_recursively_in_catalog $1
}

main ~/PATH/TO/VIM/PLUGINS/

Link parece morto? Você tem fix_syntax_files.she fix_vim_syntax_files.sh aqui , o que parece o mesmo? Não sabe ao certo qual é o link correto?
Martin Tournoij

Desculpe por reorientar meu repositório config_files. O link é atualizado.
dominikduda
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.