vim
Trucs et astuces pour augmenter la productivité
Recherche…
Syntaxe
- : set relativenumber
- : définir le numéro
- : set nonumber /: set nonu
- : pwd
Remarques
Ce rechargement automatique ne se produira que si vous éditez votre vimrc
dans une version complète de vim qui supporte autocmd
.
Macros rapides "jetables"
Ajoutez ceci à votre vimrc:
nnoremap Q @q
Pour commencer à enregistrer la macro "throwaway", utilisez qq
. Pour terminer l'enregistrement, appuyez sur q
(en mode normal pour les deux).
Pour exécuter la macro enregistrée, utilisez Q
Ceci est utile pour les macros que vous devez répéter plusieurs fois de suite mais qui ne seront probablement pas réutilisées par la suite.
Utiliser la fonction d'achèvement de chemin à l'intérieur de Vim
C'est très commun, vous mémorisez un chemin vers un fichier ou un dossier, vous ouvrez Vim et essayez d'écrire ce que vous venez de mémoriser, mais vous n'êtes pas sûr à 100% que vous avez raison, fermez l'éditeur et recommencez.
Lorsque vous souhaitez utiliser la fonctionnalité de complétion de chemin et que vous avez un fichier /home/ubuntu/my_folder/my_file
et que vous modifiez un autre fichier faisant référence au chemin de la précédente:
Entrez le mode d'insertion: insérez ou faites comme vous le souhaitez. Ensuite, écrivez /h
. Lorsque le curseur est sous h
, appuyez sur Ctrl x , puis sur Ctrl f pour que l'éditeur l'achève vers /home/
car le motif /h
est unique
Maintenant, supposons que vous avez deux dossiers dans /home/ubuntu/
appelé my_folder_1
my_folder_2
et vous voulez le chemin /home/ubuntu/my_folder_2
comme d'habitude:
Entrer en mode insertion
écrivez /h
et appuyez sur Ctrl x , puis sur Ctrl f . Maintenant, vous avez /home/
Next ajoutez u après / home / et appuyez sur Ctrl x , puis sur Ctrl f . Maintenant, vous avez /home/ubuntu/
parce que ce chemin est unique. Maintenant, écrivez my
/home/ubuntu/
et appuyez sur Ctrl x , puis sur Ctrl f . L'éditeur complétera votre mot jusqu'à my_folder_
et vous verrez l'arborescence du répertoire. Utilisez les touches fléchées pour choisir celle que vous voulez.
Activer les numéros de ligne relatifs
Pour supprimer des lignes de texte lorsque vous ne connaissez pas le nombre exact de lignes à supprimer, essayez 10dd
, 5dd
, 3dd
jusqu'à ce que toutes les lignes soient supprimées.
Les numéros de ligne relatifs résolvent ce problème, supposons que nous ayons un fichier contenant:
sometimes, you see a block of
text. You want to remove
it but you
cannot directly get the
exact number of
lines to delete
so you try
10d , 5d
3d until
you
remove all the block.
Entrer en mode NORMAL: Esc
Maintenant, exécutez :set relativenumber
. Une fois terminé, le fichier sera affiché comme suit:
3 sometimes, you see a block of 2 text. You want to remove 1 it but you 0 cannot directly get the 1 exact number of 2 lines to delete 3 so you try 4 10d , 5d 5 3d until 6 you 7 remove all the block.
où 0
est le numéro de ligne de la ligne en cours et indique également le numéro de ligne réel devant le numéro relatif, vous n'avez donc plus besoin d'estimer le nombre de lignes de la ligne en cours pour les couper ou les supprimer par un.
Vous pouvez maintenant exécuter votre commande habituelle comme 6dd
et vous êtes sûr du nombre de lignes.
Vous pouvez également utiliser la forme abrégée de la même commande :set rnu
pour activer les nombres relatifs et :set nornu
pour désactiver les mêmes.
Si vous aussi :set number
ou avez :set number
déjà le :set number
, vous obtiendrez le numéro de ligne de la ligne dans laquelle se trouve le curseur.
3 sometimes, you see a block of 2 text. You want to remove 1 it but you 4 cannot directly get the 1 exact number of 2 lines to delete 3 so you try 4 10d , 5d 5 3d until 6 you 7 remove all the block.
Affichage des numéros de ligne
Pour afficher les numéros de ligne de la vue par défaut, entrez
:set number
Pour masquer les numéros de ligne
:set nonumber
Il y a aussi un raccourci pour ci-dessus. nu
est identique au number
.
:set nonu
Pour masquer les numéros de ligne, nous pouvons également utiliser
:set nu!
Mappages pour quitter le mode Insertion
De nombreux utilisateurs de Vim trouvent la commande Esc trop difficile à atteindre et finissent par trouver une autre carte facile à atteindre depuis la ligne d’accueil. Notez que Ctrl - [ peut être équivalent à Esc sur un clavier anglais et est beaucoup plus facile à atteindre.
j k
inoremap jk <ESC>
Celui-ci est vraiment facile à déclencher; Il suffit de fracasser vos deux premiers doigts sur la rangée d’accueil en même temps. Il est également difficile de se déclencher accidentellement car "jk" n'apparaît jamais dans aucun mot anglais, et si vous êtes en mode normal, il ne fait rien. Si vous ne tapez pas trop "blackjack", pensez à ajouter également inoremap kj <ESC>
pour ne pas avoir à vous soucier de la synchronisation des deux clés.
verrouillage des majuscules
Linux
Sous Linux, vous pouvez utiliser xmodmap
pour que Caps Lock fasse la même chose que Esc . Mettez ceci dans un fichier:
!! No clear Lock
clear lock
!! make caps lock an escape key
keycode 0x42 = Escape
Ensuite, exécutez le xmodmap file
. Cela remappe Caps Lock à Esc .
les fenêtres
Sous Windows, vous pouvez utiliser SharpKey ou AutoHotkey .
macOS
Si vous avez macOS 10.12.1 ou ultérieur, vous pouvez remapper Caps Lock sur Escape en utilisant les Préférences Système. Sélectionnez Clavier, accédez à l'onglet Clavier et cliquez sur Modifier les touches.
Comment connaître le répertoire et / ou le chemin du fichier que vous éditez
Pour connaître le chemin du répertoire dans lequel se trouve votre fichier, vous pouvez utiliser:
Esc pour entrer en mode de commande
:pwd
Cela imprimera le chemin du répertoire en bas de l'éditeur, comme ceci
I'm a ninja
~
~
~
~
~
/home/ubuntu/myfolder 1,5 All
Maintenant, si vous voulez connaître le nom du fichier que vous éditez par rapport au répertoire de travail de vim, vous pouvez utiliser:
Echap pour entrer en mode de commande CTRL G
I'm a ninja
~
~
~
~
~
"myfile"[Modified][New file] 1 line --100%-- 1,5 All
Enfin, pour obtenir le chemin absolu vers le fichier que vous éditez, utilisez
Esc pour entrer en mode de commande,
1 puis CTRL G
I'm a ninja
~
~
~
~
~
"~/myfolder/myfile"[Modified][New file] 1 line --100%-- 1,5 All
Rechercher dans un bloc fonction
Pour rechercher du texte foo
dans un bloc {}
entourant le curseur, utilisez la commande suivante ( <ESC>
- touche d'échappement, <CR>
- touche d'accès):
vi{<ESC>/\%Vfoo<CR>
maintenant vous pouvez sauter entre les matchs dans le bloc en appuyant sur n
et p
. Si l'option hlsearch
activée, cela mettra en évidence toutes les correspondances. \%V
est une partie de modèle de recherche spéciale, qui indique à vim de rechercher uniquement dans la zone sélectionnée visuellement. Vous pouvez également faire un mappage comme celui-ci:
:vnoremap g/ <ESC>/\%V
Après cela, la commande ci-dessus est raccourcie comme suit:
vi{g/foo<CR>
Une autre astuce utile consiste à imprimer toutes les lignes contenant le motif:
vi{
:'<,'>g/foo/#
La plage '<,'>
est insérée automatiquement.
Voir :help range
et :help :g
.
Copier, déplacer ou supprimer une ligne trouvée
De nombreux utilisateurs se trouvent dans une situation où ils souhaitent simplement copier, déplacer ou supprimer une ligne rapidement et revenir à leur emplacement d'origine.
En général, si vous souhaitez déplacer une ligne contenant le lot
mots sous la ligne en cours, vous devez taper quelque chose comme:
/lot<Esc>dd<C-o>p
Mais pour augmenter la productivité, vous pouvez utiliser ce raccourci dans les cas suivants:
" It's recommended to turn on incremental search when doing so
set incsearch
" copy the found line
cnoremap $t <CR>:t''<CR>
" move the found line
cnoremap $m <CR>:m''<CR>
" delete the found line
cnoremap $d <CR>:d<CR>``
Donc, une recherche comme celle-ci:
/lot$m
déplacerait la ligne contenant le lot
sous la ligne sur laquelle se trouvait le curseur lorsque vous avez lancé la recherche.
Ecrivez un fichier si vous oubliez `sudo` avant de lancer vim
Cette commande enregistre le fichier ouvert avec les droits sudo
:w !sudo tee % >/dev/null
Vous pouvez également cartographier w!!
pour écrire un fichier en tant que root
:cnoremap w!! w !sudo tee % >/dev/null
Recharger automatiquement vimrc lors de la sauvegarde
Pour recharger automatiquement vimrc
lors de la sauvegarde, ajoutez ce qui suit à votre vimrc
:
if has('autocmd') " ignore this section if your vim does not support autocommands
augroup reload_vimrc
autocmd!
autocmd! BufWritePost $MYVIMRC,$MYGVIMRC nested source %
augroup END
endif
et puis pour la dernière fois, tapez:
:so $MYVIMRC
La prochaine fois que vous sauvegarderez votre vimrc
, il sera automatiquement rechargé.
nested
est utile si vous utilisez vim-airline. Le processus de chargement de la compagnie aérienne déclenche des autocommandes, mais comme vous êtes en train d'exécuter une autocommande, elles sont ignorées. nested
permet de déclencher des autocommandes imbriquées et permet aux compagnies aériennes de se charger correctement.
Achèvement de la ligne de commande
définir le wildmenu
pour activer les suggestions d'achèvement pour la ligne de commande.
Exécuter le suivant
set wildmenu
set wildmode=list:longest,full
Maintenant, si vous dites, onglet de :color
,
Tu auras
256-jungle Benokai BlackSea C64 CandyPaper Chasing_Logic ChocolateLiquor :color 0x7A69_dark