Puis-je désactiver la continuation des commentaires à la ligne suivante dans Vim?


65

Dans Vim, si je tape un commentaire dans un fichier de code et que je tape Enter, le nouveau trait devient automatiquement un commentaire.

Par exemple, dans un fichier Ruby:

# I manually typed the pound at the start of this line and hit enter.
# This line formatted itself this way automatically.

Généralement, c'est ce que je veux, mais pas toujours. Comment puis-je désactiver temporairement ce comportement de commentaire automatique?


Par temporairement, voulez-vous une commande qui le fait une seule fois ou définir une option qui durera quelques commandes jusqu'à ce que vous le réactiviez? Duplication possible sur plusieurs sites: stackoverflow.com/questions/4896003/…
Ciro Santilli a dit

Réponses:


86

Je pense que tu cherches

:set formatoptions-=cro

De :help fo-table:

You can use the 'formatoptions' option  to influence how Vim formats text.
'formatoptions' is a string that can contain any of the letters below.  The
default setting is "tcq".  You can separate the option letters with commas for
readability.

letter  meaning when present in 'formatoptions'

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

13
Merci beaucoup! Ce comportement me dérangeait-- Je suis venu d'Unix vi à Linux vim. Pour les googleurs: Pour une utilisation permanente , voir aussi stackoverflow.com/questions/6076592/… et entrez cette ligne dans / etc / vimrc:autocmd BufNewFile,BufRead * setlocal formatoptions-=cro
bgStack15

N'a pas aidé; taper /**<ESC>oajoute toujours une étoile sur la ligne suivante.
Qix

Ça ne marche pas z
felwithe le

8

Définir temporairement l'option 'coller' peut faire ce que vous voulez, mais désactive également beaucoup d'autres fonctionnalités de Vim:

Utilisez-le :set pastepour l'allumer et l' :set nopasteéteindre. Alternativement, vous pouvez utiliser :set paste!pour le basculer.

Voir également:

:help 'paste'
:help 'pastetoggle'

(Ces commandes sont saisies avec des guillemets simples.)


4
:set pastepour l'allumer et l' :set nopasteéteindre
Utilisateur

2
alternativement, vous pouvez utiliser :set paste!pour basculer entre VRAI et FAUX
Felipe Alvarez

3

Je saisis de nouvelles lignes simples non formatées avec <CR>.

Quand je veux continuer à taper la ligne suivante dans le bloc commenté, j'utilise simplement la Otouche comme d'habitude.

Essaye ça:

nnoremap <silent> <cr> :set paste<cr>o<esc>:set nopaste<cr>

1
Que veux-tu dire par <CR>? Une clé particulière?
Peter Mortensen

1
CR signifie "retour de chariot". Sur les ordinateurs que j'ai utilisés, il a été associé à la touche Entrée.
Sebastian Jylanki

0

J'ai fini avec ceci:

nnoremap <Leader>o o<Esc>^Da
nnoremap <Leader>O O<Esc>^Da

Il ajoute une nouvelle ligne, supprime tout ce qui a déjà été inséré et laisse le curseur en mode insertion dans la colonne en retrait, sans modifier les options de format.


0

Cette réponse s'applique à Debian et à certains de ses dérivés.

Sur une distribution Debian, les valeurs par défaut de Vim ne sont pas raisonnables. Ils sont situés dans /usr/share/vim/vim80/defaults.vimet appliqués après (!) /etc/vim/vimrcEst exécuté. La seule façon de dire à Vim de ne pas utiliser ses valeurs par défaut est de s'assurer qu'il ~/.vimrcexiste même s'il est vide. Vim au démarrage essaie de lire depuis .vimrc, mais si le fichier n’est pas trouvé, il applique les valeurs par défaut, ce qui entraîne de nombreux comportements indésirables, tels que l’intégration de la souris, les décalages de copier-coller, le retour automatique aux commentaires, etc.

Sur Debian, vous pouvez corriger TOUT cela en lançant simplement touch ~/.vimrc

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.