Domanda

Ho acceso filetype plugin per alcuni plugin Vim Rails che ho aggiunto, ma un effetto collaterale di questo sembra essere che ora l'autocommentazione è stata abilitata in tutti i file sonopi (ad esempio, se avvio una linea con #, la riga successiva da Inserisci in modalità insert o o , ecc. Per accedere alla modalità di inserimento, otterrà anche un #).

Ho trovato un Guida per disabilitare l'auto- Commentando formatoptions e ha aggiunto quanto segue al mio .VimRC:

au FileType * setlocal formatoptions-=cro
.

Tuttavia, sono ancora in esecuzione in problemi - a meno che non sia esplicitamente :source .vimrc, (o immettere direttamente il setlocal ...), non è in vigore. Ho determinato che questo è il caso perché i ftplugins di Vim stanno sovrascrivendo le mie opzioni con le proprie.

Ho quindi trovato un seconda guida che parla dell'utilizzo di uno script dopo ftplugin per apportare modifiche Dopo che gli script ftplugin sono eseguiti, tuttavia la loro soluzione è creare simboli simbolici per ogni singolo tipo di filety in ~ / .vim / dopo / ftplugin a un file centrale, e questo sembra essere kludgy per me.

C'è un modo per creare uno script generico dopo-ftplugin o sto avvicinando a questo problema in modo errato? Qualsiasi aiuto sarebbe apprezzato.

È stato utile?

Soluzione

Che ne dici di un plugin "dopo"?Creare un file in ~/.vim/after/plugin/ chiamato noAutoComments.vim (o qualsiasi altra cosa) e posiziona il tuo AUTOCMD in questo?

Modifica:

La ragione per cui funziona?Sto solo indovinando qui, ma ho la sensazione che il autocmd nel file ~/.vimrc venga rimosso da un altro file (ma prima che i file "dopo" vengano acquisiti).

Ho finito per rimuovere la mia directory ~/.vim e sostituito il mio ~/.vimrc con le seguenti 3 linee:

filetype plugin on
syntax on
au FileType * setlocal formatoptions-=cro
.

Con solo queste linee nella mia generazione ~/.vimrc e nessuna directory ~/.vim/, il autocmd sembra funzionare come previsto (VIM 7.1).

Per qualsiasi file che modifico:

:verbose set formatoptions?
formatoptions=ql
      Last set from ~/.vimrc
.

Devo ancora determinare quale file (plugin) sta causando comunque questo problema.

Altri suggerimenti

Ho fatto alcune indagini e sembra che la posizione del mio autocmd nel mio file .vimrc determina se formatoptions sarà sovrascritto da Vim's ftplugins o no.Usando vim --noplugin per disabilitare tutti i plug-in esterni, ho trovato i seguenti risultati:

Se il mio VIMRC sembra:

au FileType * setl fo-=cro
filetype plugin indent on
.

Il risultato di :verbose set fo? è:

formatoptions=croql
  Last set from /usr/share/vim/vim72/ftplugin/ruby.vim
.

Tuttavia, se le linee nella mia VIMRC sono invertite:

filetype plugin indent on
au FileType * setl fo-=cro
.

Il risultato di :verbose set fo? è:

formatoptions=ql
  Last set from ~/.vimrc
.

... che è il risultato desiderato.Quindi sembra che il autocmd debba essere specificato dopo aver abilitato i plug-in.

Un altro motivo per cui ciò potrebbe non essere in vigore ...

Da :he :set-=:

            When the option is a list of flags, {value} must be
            exactly as they appear in the option.  Remove flags
            one by one to avoid problems.

Ho

    " Turn off auto-commenting
    au FileType * setlocal formatoptions-=c
    au FileType * setlocal formatoptions-=r
    au FileType * setlocal formatoptions-=o
.

Perché ho incontrato questo.

Utilizzando uno dei vari eventi autocmd per impostare l'opzione di configurazione dovrebbe funzionare se si trova quello giusto, ma inizierei eseguendo:

:verbose set formatoptions?
.

Questo ti dirà dove è stata impostata l'opzione, che potrebbe rendere più facile determinare quale AUTOCMD utilizzare.In alternativa, se non ti dispiace un po 'di hacking minore, il modo in cui probabilmente lo farai è solo scoprire dove è impostato nel plugin e commenta quella linea (e prendi nota di farlo mai aggiornareil plugin).Potresti anche contattare l'autore del plugin e chiedere loro di renderlo un'opzione configurabile.

Per gli eventi autocmd disponibili, leggi questo:

:help {event}
.

Ho provato le soluzioni proposte da molti, ma nessuno di loro ha funzionato per me, ma ho trovato una soluzione molto semplice, vale a dire, nel tuo ~ / .bash_alias:

    # vim without auto comment
    alias vi="vi +'set fo-=cro'"
.

Stavo lottando con questo problema e finalmente lavora con le seguenti linee:

syntax on
filetype on
filetype plugin on
au FileType * setlocal formatoptions-=cro
.

Penso che la chiave qui sia che il autocmd è posto dopo il filetype plugin on.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top