Comment puis-je obtenir que vim arrête de mettre des commentaires devant de nouvelles lignes?

50

J'édite mon .vimrcfichier et j'inclus des commentaires. Quand j'ai un commentaire comme celui-ci:

" example comment

Puis appuyez sur Entrée à la fin de la ligne après avoir terminé le commentaire. La ligne suivante est automatiquement configurée en tant que commentaire (les guillemets sont automatiquement insérés):

" example comment
" 

Comment puis-je arrêter ce comportement?

Greg
la source

Réponses:

66

Ceci est contrôlé avec le formatoptionsréglage; de :help fo-table:

Vous pouvez utiliser cette 'formatoptions'option pour influencer la manière dont Vim formate le texte. 'formatoptions'est une chaîne pouvant contenir l’une des lettres ci-dessous. Le réglage par défaut est tcq. Vous pouvez séparer les lettres d’option par des virgules pour plus de lisibilité.

Notez que la déclaration sur les "valeurs par défaut" est quelque peu trompeuse, car de nombreux types de fichiers modifient les options de format pour mieux les adapter au type de fichier; par exemple dans /usr/share/vim/vim74/ftplugin/vim.vim:

" Set 'formatoptions' to break comment lines but not other lines,
" and insert the comment leader when hitting <CR> or using "o".
setlocal fo-=t fo+=croql

Vous pouvez voir le courant formatoptionsavec:

:set fo?
  formatoptions=jcroql

Et voyez où ils ont été placés comme suit:

:verbose set fo?
  formatoptions=jcroql
      Last set from /usr/share/vim/vim74/ftplugin/vim.vim

Dans ce cas, vous souhaitez supprimer le rdrapeau, mais peut-être aussi les drapeaux cet o:

r       Automatically insert the current comment leader after hitting
        <Enter> in Insert mode.
c       Auto-wrap comments using textwidth, inserting the current comment
        leader automatically.
o       Automatically insert the current comment leader after hitting 'o' or
        'O' in Normal mode.

Cela peut être fait comme suit:

:set formatoptions-=r formatoptions-=c formatoptions-=o

Notez que l'utilisation :set formatoptions-=crone fonctionnera pas comme prévu (puisqu'il s'agit d'une chaîne, il la recherchera crodans cet ordre, ce qui ne fonctionnera souvent pas.).

Pour définir les modifications uniquement pour le tampon actuel, utilisez à la :setlocalplace de :set. Si vous voulez toujours avoir ces options, il vaut probablement mieux utiliser un autocmddans votre vimrc; par exemple:

au FileType vim setlocal fo-=c fo-=r fo-=o

Cela définira les options uniquement pour le type de fichier 'vim', et n'interférera pas avec les autres types de fichiers.

Si vous voulez toujours le définir, utilisez:

au FileType * set fo-=c fo-=r fo-=o

Simplement utiliser set fo-=crone fonctionnera pas car de nombreux types de fichiers définissent / développent formatoption(comme indiqué ci-dessus); le fichier FileType autocmd est exécuté après le chargement des fichiers de type de fichier.

Martin Tournoij
la source
1
Confirmé. En outre, il est répondu ici: stackoverflow.com/questions/16030639/vim-formatoptions-or
Melon
1
Ajouter au FileType * set fo-=oà mon fichier .vimrc n'a pas fonctionné. Je presse odans une ligne commentée et il commente toujours aussi.
Ixx
Cela me dérange depuis longtemps. Les valeurs par défaut formatoptionsenveloppaient mon fichier txt. Je me cassais la tête textwidthet wrapmarginrien ne fonctionnait. Même rétrogradé mon vim de 8.1 à 8.0 en pensant que c'était un bug. Cela a résolu mon problème, merci.
Anishjp
2

Ajoutez ceci dans votre vimrc:

au BufEnter * set fo-=c fo-=r fo-=o

L'utilisation FileTypene fonctionnera pas puisque d'autres plugins sont définis formatoption.

Aura
la source
Cela semble être la seule solution pour moi même lorsque je désactive tous les plugins de Vundle. Utiliser Neovim. Une idée pourquoi cela pourrait être?
Andrew Gazelka