2012-03-07 5 views
19

Sto lavorando su una grande base di codice, in cui ogni file ha diverse convenzioni di rientro: schede, 4 spazi, 3 spazi, eccÈ possibile riconoscere automaticamente gli stili di indentazione (tabulazioni vs spazi)?

Io attualmente default su schede e fare set shiftwidth=N expandtab smarttab quando mi imbatto in un file di spazi frastagliata ma è fastidioso

Esiste una funzionalità in Vim o in un plug-in che può riconoscere che, ad esempio, il buffer corrente utilizza una rientranza con tre spazi per turno?

risposta

18

Esistono vari plug-in che tentano di gestire tale situazione. Qui ci sono alcuni che ho trovato da ricerca di detect indent a vim.org

+1

segugio sembra funzionare meglio di DetectIndent, nei miei cinque minuti di test . Per qualche ragione, DetectIndent fa ipotesi errate anche su un semplice file C con formattazione coerente (ha le schede di dimensione 2 e DetectIndent pensa che sia la dimensione 4). – Kat

2

Buona domanda, sto per affrontare lo stesso problema anche, e recentemente ho scritto un tale vi m plug-in per me stesso: https://github.com/luochen1990/indent-detector.vim

Ha le seguenti caratteristiche:

  • rilevare trattino mista e Warnning eco sulla bufEnter e bufWrite automaticamente.
  • commuta l'impostazione del rientro per adattarsi automaticamente allo stile di rientro corrente.
  • tempo di rilevamento è limitato, quindi non è necessario preoccuparsi di aprire file enormi.

penso che è ben progettato, e hanno bisogno di essere conosciuto, inviare un problema su github se avete qualche suggerimento :)