Codice di rientro / formato automatico per Vim?

Sto cercando di usare Vim sempre di più quando posso. Uno dei miei maggiori punti di forza tra Vim e un IDE come Aptana è la capacità di indentare automaticamente .

Esiste un mezzo per la formattazione automatica del codice (HTML, CSS, PHP) in modo che sia correttamente rientrato?

In tal caso, come si installa in vim? capire molto i plugin. Ho provato a rivedere questo thread e mi ha confuso di più: Come modificare il comportamento del rientro automatico di vim?

Commenti

  • Potresti chiarire quale lingua stai cercando di indentare? Mi aspetto che se ‘ è già supportato da vim dovrebbe già rientrare automaticamente senza ulteriori sforzi. In caso contrario, dovresti essere in grado di ottenere un plug-in.
  • idealmente Html / css e php

Risposta

Per far rientrare lintero file automaticamente:

gg =G 

spiegato:

  • gg – vai allinizio del file
  • G – vai alla fine del file
  • = indent

Commenti

  • Potresti scomporlo? Cosè tipicamente g da solo? e = G?
  • @Chris vedi la modifica
  • Bel suggerimento, non lho mai saputo. Tuttavia, fa un lavoro inutile con bash.
  • Come eseguire gg=G dalla shell senza aprire il file?
  • @takeshin puoi per favore spiegalo molto di più, dobbiamo digitarlo nel file o dobbiamo eseguirlo nel terminale

Risposta

Non so come eseguire la formattazione automatica del codice esistente, ma se stai scrivendo codice e hai bisogno del rientro automatico:

  • :set autoindent (o :set ai) attiverà il rientro automatico
  • Ctrl d per annullare il rientro (AKA outdent) il tuo codice
  • Tab o spazi per rientrare – Io personalmente uso tab
  • :set tabwidth=4 (o :set tw=4) controllerà quanti spazi una tabulazione deve far rientrare il codice
  • Il comando >> farà rientrare la riga corrente. Se inserisci il prefisso con un numero, dì 4>>, quindi farà rientrare 4 righe, a partire dalla riga corrente.
  • Allo stesso modo Il comando << annulla il rientro di una riga

Spero che questo ti dia un buon inizio.

Commenti

  • Per inserire automaticamente il codice esistente, utilizza ={motion} in modalità normale, ad es. =G farà rientrare tutto il codice dalla riga corrente alla fine del file. == farà rientrare la riga corrente.
  • assicurati inoltre che i plug-in di rientro siano caricati (ad es. con :filetype indent on)
  • set tw = 4 imposta TEXTWIDTH su 4

Answer

Rientro automatico *.sh

Basta aggiungere le seguenti righe in ~/.vimrc

filetype indent on set smartindent autocmd BufRead,BufWritePre *.sh normal gg=G 

Commenti

  • Questo vale solo per la modifica con vim o con tutti gli strumenti delleditor?
  • ~./vimrc applicabile solo per vim editor.

Answer

Questo plugin semplifica la formattazione del codice . Integra formattatori esterni e ha un fallback sulla funzionalità di rientro di vim.

https://github.com/Chiel92/vim-autoformat

Inoltre, nota la differenza tra formattazione e rientro. Il rientro corregge solo lo spazio bianco prima di ogni riga, mentre la formattazione si occupa anche di qualsiasi altra cosa, come gli spazi bianchi attorno agli operatori ecc.

Risposta

Crea / modifica il file ~/.vimrc e aggiungi la seguente riga:

set autoindent 

Commenti

  • Questo non aggiunge nulla alle risposte esistenti …
  • @jasonwryan Actually Hai Vu La risposta di ‘ menziona :set autoindent che abilita il rientro automatico solo per il file corrente. Aggiungendolo in .vimrc abilita il rientro automatico in modo permanente.
  • il tuo commento è già menzionato dalla risposta di Rahul ‘, quindi pensa prima di pubblicare

Risposta

autoformat / indent di vim “funziona abbastanza bene. Innanzitutto, inserisci questa riga nel tuo ~/.vimrc:

filetype plugin indent on 

Quindi apri un file in vim e digita gg=G

(gg sposta il cursore sulla prima riga. = esegue il comando indent. G dice al comando indent di essere eseguito da qui allultima riga.)

Se la formattazione automatica sembra davvero scadente, come se ogni riga fosse appena rientrata, esegui :scriptnames e controlla se .../indent/html.vim (o qualunque lingua tu stia utilizzando) è nellelenco. In caso contrario, assicurati che il tuo ~/.vimrc sia corretto. Oppure se hai eseguito :filetype plugin indent on dalla riga di comando di vim, dovrai riaprire il file :e

Answer

Per eseguire una riformattazione dello script bash, la soluzione gg = G proposta non funziona bene in VIM, indipendentemente se si imposta lo script come di tipo shell. Invece funziona;

shfmt -i 2 -ci script.sh

Per identificare tutte le righe con 2 spazi e correggere altrimenti la formattazione.

Risposta

In bash faccio questo:

source <(echo "Zibri () {";cat script_to_be_reindented.sh; echo "}") declare -f Zibri| cut -c 5-|head --lines=-1|tail --lines=+3 

questo elimina i commenti e reindenta lo script “bash way”. non lo farà funziona se lo script contiene HEREDOCS ma se lo fai:

source <(echo "Zibri () {";cat script_to_be_reindented.sh; echo "}") declare -f Zibri|head --lines=-1|tail --lines=+3 

funzionerà con qualsiasi script ma lintero script sarà rientrato di 4 spazi. sentiti libero di modificare ma cita il mio nome nel tuo script e pubblicalo! : D

Commenti

  • Credo che questo possa mancare il punto della domanda; piuttosto che indentare una serie di righe, credo che lOP desiderasse rientrare automaticamente in VIM per una varietà di linguaggi. Per inciso, potresti essere in grado di ottenere questo risultato un po più direttamente con sed se lo desideri: cat script_to_be_reindented.sh | sed 's#^# #g' (ehm, beh, COSÌ markdown sta sostituendo gli spazi con una tabulazione, ma ottieni il punto)
  • Tutto ciò che questa risposta fa è inserire spazi allinizio della linea e ripristinare tutto lallineamento. Lo stesso (escluso il markdown) può essere fatto con sed -i 's|^[ \t]\+| |' script.sh (ovvero 4 spazi allinterno di | | ma questo sito web filtra più spazi in uno) .

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *