web-dev-qa-db-fra.com

Comment commenter un bloc de Python code dans Vim

Je me demandais s'il y avait une correspondance de clé dans Vim qui me permettrait d'indenter certaines lignes de code (si ces lignes ont été sélectionnées en mode visuel, ou n lignes au-dessus/en dessous de la position actuelle du curseur).

Donc, fondamentalement, quelque chose qui convertit ce qui suit

def my_fun(x, y):
    return x + y

à

#def my_fun(x, y):
#    return x + y

Je peux utiliser soit # ou """ pour commenter les lignes pertinentes. Idéalement, j'aimerais également que le même keymapping mette en commentaire les lignes si celles-ci ont été commentées.

181
Rishabh Manocha

Étape 1: Allez à la première colonne de la première ligne que vous voulez commenter.

Initial State

Étape 2: Appuyez sur: Ctrl+v et sélectionnez les lignes que vous souhaitez commenter:

Select lines

étape 3: Shift-I#space (En mode Insertion à gauche, tapez les caractères à insérer. La sélection disparaîtra, mais toutes les lignes qu’il contient seront modifiées après l’étape 4.)

Comment

étape 4: Esc

<Esc>

397
theosp

un sens manuellement

:set number
:10,12s/^/#
66
ghostdog74

Vous pouvez ajouter le mappage suivant à votre fichier .vimrc

vnoremap <silent> # :s/^/#/<cr>:noh<cr>
vnoremap <silent> -# :s/^#//<cr>:noh<cr>

Mettez en surbrillance votre bloc avec:

Shift+v

# pour commenter vos lignes de la première colonne.

-# décommenter de la même manière.

46
cdated

Mettez en surbrillance votre bloc avec: ShiftV

Commentez le bloc sélectionné avec: :norm i# (Minuscule i)

Pour supprimer le commentaire, mettez à nouveau votre bloc en surbrillance, et supprimez le commentaire avec: :norm ^x

La commande :norm Effectue une action pour chaque ligne sélectionnée. Les commentaires insèrent un # Au début de chaque ligne et le commentaire ne supprime pas ce #.

24
user2437225

Je balaie habituellement un bloc visuel (<C-V>), puis recherchez et remplacez le premier caractère par:

:'<,'>s/^/#

(Entrer en mode commande avec un bloc visuel sélectionné place automatiquement '<,'> sur la ligne de commande). Je peux alors supprimer le commentaire du bloc en balayant le même bloc visuel et:

:'<,'>s/^#//
21
comand

Il existe de bons plugins pour aider les lignes de commentaires/commentaires. Par exemple le commentateur NERD .

19
Geoff Reedy

J'ai les lignes suivantes dans mon .vimrc:

" comment line, selection with Ctrl-N,Ctrl-N
au BufEnter *.py nnoremap  <C-N><C-N>    mn:s/^\(\s*\)#*\(.*\)/\1#\2/ge<CR>:noh<CR>`n
au BufEnter *.py inoremap  <C-N><C-N>    <C-O>mn<C-O>:s/^\(\s*\)#*\(.*\)/\1#\2/ge<CR><C-O>:noh<CR><C-O>`n
au BufEnter *.py vnoremap  <C-N><C-N>    mn:s/^\(\s*\)#*\(.*\)/\1#\2/ge<CR>:noh<CR>gv`n

" uncomment line, selection with Ctrl-N,N
au BufEnter *.py nnoremap  <C-N>n     mn:s/^\(\s*\)#\([^ ]\)/\1\2/ge<CR>:s/^#$//ge<CR>:noh<CR>`n
au BufEnter *.py inoremap  <C-N>n     <C-O>mn<C-O>:s/^\(\s*\)#\([^ ]\)/\1\2/ge<CR><C-O>:s/^#$//ge<CR><C-O>:noh<CR><C-O>`n
au BufEnter *.py vnoremap  <C-N>n     mn:s/^\(\s*\)#\([^ ]\)/\1\2/ge<CR>gv:s/#\n/\r/ge<CR>:noh<CR>gv`n

Les raccourcis conservent la position de votre curseur et vos commentaires tant qu'ils commencent par # _ (il y a un espace après #). Par exemple:

# variable x
x = 0

Après avoir commenté:

# variable x
#x = 0

Après déconfort

# variable x
x = 0
8
Lukas Cenovsky

NERDcommenter est un excellent plugin pour commenter qui détecte automatiquement un certain nombre de types de fichiers et leurs caractères de commentaire associés. Ridiculement facile à installer avec Pathogen .

Commentez avec <leader>cc. Ne commentez pas avec <leader>cu. Et basculer les commentaires avec <leader>c<space>.

(Le défaut <leader> La clé dans vim est \)

5
Abid H. Mujtaba

Franchement, j'utilise un plugin tcomment pour cela link . Il peut gérer presque toutes les syntaxes. Il définit les mouvements de Nice, en l’utilisant avec des adaptateurs de blocs de texte spécifiques à python en fait un outil puissant.

5
Darek

Aucun plugin ou mappage requis. Essayez la commande "norm" intégrée, qui exécute littéralement tout ce que vous voulez sur chaque ligne sélectionnée.

Ajouter un commentaire

1. shift V to visually select lines
2. :norm i#

Supprimer le nombre de commentaires

1. visually select region as before
2. :norm x

Ou si vos commentaires sont en retrait, vous pouvez faire :norm ^x

Notez que ce ne sont que des commandes vim ordinaires précédées de ": norm" pour les exécuter sur chaque ligne.

Réponse plus détaillée pour l'utilisation de la commande "norm" dans l'une des réponses ici

Quel est un moyen rapide de commenter/décommenter des lignes dans Vim?

2
Magnus

Il y a beaucoup de plugins de commentaire pour vim, dont plusieurs sont multilingues, pas seulement python. Si vous utilisez un gestionnaire de plugins tel que Vundle , vous pouvez les rechercher (une fois que vous avez installé Vundle) en utilisant, par exemple:

:PluginSearch comment

Et vous obtiendrez une fenêtre de résultats. Sinon, vous pouvez simplement recherche dans vim-scripts pour les plugins de commentaire .

1
Pierz

CtrlK pour commentaire (mode visuel):

vnoremap <silent> <C-k> :s#^#\##<cr>:noh<cr>

CtrlU pour commenter (mode visuel):

vnoremap <silent> <C-u> :s#^\###<cr>:noh<cr>
1
Pradip Das

Un poids léger très minime plugin : vim-commentary.

gcc commenter une ligne
gcgc décommenter. consultez la page du plugin pour plus d'informations.

v+k/j mettre en évidence le bloc puis gcc commenter ce bloc.

1
yantaq