Nel mio .vimrc ho un'impostazione di tabulazione generica di due spazi, e mi piacerebbe sovrascriverlo su una lingua per base (ovvero, quattro per Python, ecc, altrimenti uso il default), ma io sono avendo difficoltà a trovare un buon esempio di questo.Come faccio a configurare impostazioni diverse per le schede in diverse lingue in Vim?
risposta
Basta mettere le impostazioni nel file plugin filetype ~/.vim/ftplugin/LANGUAGE.vim. mio ~/.vim/ftplugin/perl.vim contiene le linee:
"
" ---------- tabulator/shiftwidth --------------------
" Set tabulator and shift width to 4 (Perl Style Guide)
"
setlocal tabstop=4
setlocal shiftwidth=4
"
Queste impostazioni saranno automaticamente in vigore per ogni file con il tipo di file 'perl' (nuovo o esistente).
In genere ciò che si fa è impostare un file di tipo vimrc speciale con le impostazioni per una lingua specifica, quindi utilizzare autocomandi nel file .vimrc principale per eseguire il vimrc speciale quando necessario. Ecco la mia configurazione per Haskell (.hs
, ecc) file:
autocmd! BufNewFile,BufReadPre,FileReadPre *.hs so ~/.vim/haskell.vim
autocmd! BufNewFile,BufReadPre,FileReadPre *.hsc so ~/.vim/haskell.vim
autocmd! BufNewFile,BufReadPre,FileReadPre *.lhs so ~/.vim/haskell.vim
autocmd! BufNewFile,BufReadPre,FileReadPre *.cabal so ~/.vim/haskell.vim
mio ~/.vim/haskell.vim
fa cose del genere "expandtab set" per utilizzare gli spazi al posto delle schede, e ogni sorta di altre magie per la formattazione e cose come questa. Spesso puoi scaricare versioni valide di queste per varie lingue da http://vim.org e altri siti.
Nota che puoi fare molto di più che modificare semplicemente le impostazioni di Vim. Ad esempio, è possibile eseguire il file attraverso un filtro prima e dopo la modifica:
" Edit gpg-encrypted ascii-armoured files
autocmd! BufReadPre,FileReadPre *.asc set bin
autocmd BufReadPost,FileReadPost *.asc '[,']!gpg -q -d
autocmd BufReadPost,FileReadPost *.asc set nobin
autocmd! BufWritePre,FileWritePre *.asc set bin
autocmd BufWritePre,FileWritePre *.asc '[,']!gpg -e
autocmd BufWritePost,FileWritePost *.asc undo
autocmd BufWritePost,FileWritePost *.asc set nobin
Grande, grazie. Ho intenzione di andare con questa soluzione invece di quella basata su ftplugin, perché questo sembra più pulito nel caso in cui ho più estensioni per i file che utilizzano la stessa lingua (come nel tuo esempio Haskell). –
C'è un piccolo prezzo da pagare. I comandi source (ad esempio so ~/.vim/haskell.vim) verranno eseguiti ogni volta che si passa a un buffer di questo tipo. –
Questa non è la soluzione corretta. La soluzione corretta consiste nell'utilizzare i ftplugin (non è necessario scrivere e mantenere autonomamente gli autocomandi) e (molto importante) nell'uso delle impostazioni locali. -> s #: set tabstop = #: setlocal tabstop = #. Vedi la risposta di fgm. Se la tua estensione non è riconosciuta come haskell, aggiorna la base dei tuoi file. Non vuoi che vim applichi l'evidenziazione della sintassi corretta ai tuoi file? –
La mia risposta è basata su this tip sul Wiki VIM. Questa risposta utilizza la directory "dopo" in modo da non dover utilizzare i file plugin forniti per diversi tipi di file.
Ad esempio, per specificare impostazioni personalizzate per i file Python, creare un file chiamato python.vim
per contenere le impostazioni Python:
setlocal expandtab
setlocal shiftwidth=4
setlocal softtabstop=4
Inserire questo file in entrambe le
~/.vim/after/ftplugin
(Linux)$HOME/vimfiles/after/ftplugin
(Windows)
E, infine, è necessario disporre di questo nella vostra .vimrc
(Linux) o _vimrc
(Windows):
filetype plugin indent on
Perché il downvote? –
Per errore, se modifichi la tua risposta, posso inviarla di nuovo. –
@BjornTipling - c'è quella modifica che hai richiesto un anno fa. :) –
Questi altre risposte sembrano troppo complessa. Invece di fare casino con ancora più directory e file nel tuo albero ~ /. Vim, aggiungi quanto segue al tuo ~/.vimrc.
autocmd Filetype python setlocal expandtab tabstop=4 shiftwidth=4 softtabstop=4
(si può essere l33t e abbreviare i parametri per et ts=4 sw=4 sts=4
). Ho trovato questo in Setting Vim whitespace preferences by filetype
Io uso il plugin editor config e aggiungi un file .editorconfig a tutti i miei progetti - vi permetterà di definire diverse impostazioni di rientro per i diversi progetti che utilizzano lo stesso linguaggio di programmazione che può essere utile come spesso diversi progetti nella stessa lingua hanno standard di codifica diversi.
potete vedere un esempio dei tipi di configurazione è possibile impostare qui: http://editorconfig.org/
Ciò è grande perché un certo numero di altri editor supportano anche lo stesso file .editorconfig (atomo, testo sublime, webstorm, visualstudio, ecc. ecc.), quindi funziona bene su un team o un repository in cui le persone utilizzano tutti i diversi tipi di editor. – Charlino
- 1. Come faccio a distinguere le diverse schede ISO 14443-4?
- 2. Lingue diverse in diverse parti della domanda
- 3. effettuare traduzioni in diverse lingue
- 4. Diverse chiavi URL per diverse lingue Pagine CMS
- 5. Lingue diverse per il pulsante Mi piace
- 6. strtotime con lingue diverse?
- 7. Stampa Epoch Time in diverse lingue
- 8. lunghezza mysql() per diverse lingue restituisce diverse dimensioni
- 9. Sintesi vocale Android in lingue diverse
- 10. Schede di dimensioni diverse in Android
- 11. client eureka discovery client in diverse lingue
- 12. Comunicazione Angularjs tra controller in diverse schede
- 13. Interfaccia utente iOS Automazione per lingue diverse
- 14. Accesso a due file con impostazioni diverse
- 15. Impossibile ottenere i nomi dei giorni in lingue diverse dall'inglese
- 16. Test applicazione Java in diverse impostazioni internazionali
- 17. strano "mezzo per addirittura" arrotondamento in diverse lingue
- 18. Come enumerare le schede in vim?
- 19. Come faccio a gestire diverse viste in angular.js
- 20. Come strisciare attraverso diverse schede ionici
- 21. Come aggiungo intestazioni diverse a pagine diverse?
- 22. Come posso fare in modo che vim apra tutti i file che corrispondono a un modello in diverse schede?
- 23. Passa attraverso risorse incorporate di lingue/culture diverse in C#
- 24. Le espressioni regolari possono funzionare con lingue diverse?
- 25. d3.js - etichetta della scala temporale in lingue diverse dall'inglese
- 26. Come scrivono wrapper di lingue diverse per la stessa libreria?
- 27. Android: pubblica un'applicazione con diversi screenshot corrispondenti a lingue diverse?
- 28. SimpleDateFormat restituisce la data della stringa in diverse lingue
- 29. Apertura di diverse schede della stessa cartella di lavoro in finestre diverse in Excel 2010
- 30. Limitazioni e alternative ai tentativi in lingue diverse dall'inglese?
È triste che dobbiamo ancora avere ftplugin per farlo. – shabunc
Perché? Questo approccio sembra pulito rispetto ad altri menzionati in altre risposte. – flyer88
ftplugin è un ottimo approccio per questo – connorbode