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.
Étape 1: Allez à la première colonne de la première ligne que vous voulez commenter.
Étape 2: Appuyez sur: Ctrl+v et sélectionnez les lignes que vous souhaitez commenter:
é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.)
étape 4: Esc
un sens manuellement
:set number
:10,12s/^/#
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.
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 #
.
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/^#//
Il existe de bons plugins pour aider les lignes de commentaires/commentaires. Par exemple le commentateur NERD .
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
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 \
)
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.
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?
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 .
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>
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.