84 votes

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

Dans Vim, si je suis en train de taper un commentaire dans un fichier de code, et que j'appuie sur la touche Enter il fait automatiquement de la nouvelle ligne 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.

En général, c'est ce que je veux, mais pas toujours. Comment puis-je désactiver temporairement ce comportement d'autocommentaire ?

109voto

Tobe Points 123

Je pense que vous cherchez

:set formatoptions-=cro

Von :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.
...

13voto

Patrick Klug Points 5320

En activant temporairement l'option "coller", vous pouvez obtenir ce que vous voulez, mais cela désactive également de nombreuses autres fonctionnalités de Vim :

Utilisez :set paste pour l'allumer et :set nopaste Vous pouvez également utiliser :set paste! pour le faire basculer.

Voir aussi :

:help 'paste'
:help 'pastetoggle'

(Ces commandes sont tapées avec les guillemets simples).

6voto

willmcpherson2 Points 61

Une alternative est d'appuyer simplement sur ctrl-w après avoir appuyé sur enter . Cela permet d'effacer le mot précédent (par ex. # ou // ) en mode d'insertion. En effet, ctrl-w est un raccourci assez universel dans la plupart des applications.

4voto

user4157482 Points 161

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

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

Essayez ça :

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

1voto

Ruben Points 111

Je me suis retrouvé avec ceci :

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

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X