Commandes Vim simples que vous aimeriez connaître plus tôt [fermé]

378

J'apprends constamment de nouvelles commandes dans Vim, mais je suis sûr que tout le monde apprend quelque chose de nouveau de temps en temps. Je viens d'apprendre récemment à ce sujet:

zz, zt, zb - positionne le curseur au milieu, en haut ou en bas de l'écran

Quelles sont les autres commandes utiles ou élégantes que vous aimeriez avoir apprises il y a longtemps?

Lin
la source
46
techniquement, zz, zt, zb positionnent l' écran avec le curseur au milieu / haut / bas. pour positionner le curseur au milieu / en haut / en bas, utilisez M, H ou L. Les deux ensembles de commandes sont utiles!
Peter
1
La lecture de cet article il y a des mois ou un an m'a depuis aidé tous les jours. dap est quelque chose que j'utilise pour déplacer des paragraphes plusieurs fois par heure, grâce à ce post.
Funkodebat
33
Je n'ai jamais ramassé autant d'astuces sur une page qui a été marquée comme non constructive :) Merci à tous.
Tasos Bitsios

Réponses:

315

J'aurais vraiment aimé savoir que vous pouvez utiliser CtrlCau lieu de Escpasser du mode d'insertion. Cela a été un véritable coup de pouce pour ma productivité.

yalestar
la source
93
J'ai remappé mon Caps-Lock à un Esc. C'est à la fois plus facile que l'Esc normal et Ctrl-C
Kasper
114
Merde. 15 ans de vi et je n'ai jamais su ça ...
Chris K
31
un autre populaire était d'utiliser «jj» pour ESC. J'aime cette approche jusqu'à présent. :carte! jj <ESC>
claytron
27
Vous pouvez également utiliser CTRL- [(que j'aime parce que ce sont les deux petits doigts ... juste une petite rotation des deux mains).
Jason Down
42
utilisez 'jk' comme variante sur @ claytron's. si vous êtes déjà inconsciemment en mode INSERT, jk vous laisse où vous étiez, vous pouvez donc le frapper à tout moment (crédit: quelqu'un d'autre ... pas mon idée).
Kyle
197

L'astuce "wow" la plus récente que j'ai apprise est une méthode de recherche et de remplacement compliquée. Très souvent dans le passé, j'ai eu une expression rationnelle très compliquée pour faire des substitutions et cela n'a pas fonctionné. Il y a un meilleur moyen:

:set incsearch             " I have this in .vimrc
/my complicated regexp     " Highlighted as you enter characters
:%s//replace with this/    " You don't have to type it again

L'astuce ici (à défaut d'un meilleur mot) est la façon dont vous pouvez utiliser la recherche pour créer l'expression rationnelle (et 'incsearch' la met en surbrillance lorsque vous entrez des caractères), puis utilisez un modèle vide dans la substitution: le vide le motif par défaut est le dernier motif de recherche.

Exemple:

/blue\(\d\+\)
:%s//red\1/

Équivalent à:

:%s/blue\(\d\+\)/red\1/

Voir:

:help 'incsearch'
:help :substitute
DrAl
la source
1
wow ... Je cherchais quelque chose comme ça
figurassa
1
ouais, j'aurais aimé savoir cela plus tôt. Mais là encore, c'est ce que je dis à propos de tout ce que j'apprends qui est nouveau dans vim.
Robert Massaioli
26
Pour ceux qui aiment vraiment cela, essayez d'appuyer sur <Ctrl-R>/pour insérer la dernière requête de recherche. (Voir :help i_CTRL-R) Vraiment utile pour les mêmes que ci-dessus, mais vous voulez capturer une partie des résultats de la recherche. (comme ceci: %s:/\\([fF]rank\\) and mary/marie and \1/g)
idbrii
4
:%s//...fonctionne également avec *(mot de recherche sous le curseur). Un plugin appelé visual-star-search étend la fonctionnalité de *pour faire correspondre le texte entier d'une sélection visuelle, ce qui facilite la recherche et le remplacement du texte sélectionné, par exemple v3e(sélectionner visuellement 3 mots) *(rechercher) et :%s//replacement/g(remplacer toutes les occurrences par " remplacement"). J'utiliser si souvent que j'ai un mappage pour la commande de substitution globale: :nmap <Leader>s :%s///g<left><left>.
Patrick Oscity
1
@idbrii puisque les personnes qui lisent peuvent être des noeuds de Vim (moi), ce %s:devrait être le cas :%s, et pour mon système, j'avais besoin \(\)de\\(\\)
Charlie Gorichanaz
155

J'ai créé cette référence de ma commande la plus utilisée pour un de mes amis:

select                                   v
select row(s)                            SHIFT + v
select blocks (columns)                  CTRL  + v
indent selected text                     >
unindent selected text                   <
list buffers                             :ls
open buffer                              :bN (N = buffer number)
print                                    :hardcopy
open a file                              :e /path/to/file.txt
                                         :e C:\Path\To\File.txt
sort selected rows                       :sort
search for word under cursor             *
open file under cursor                   gf
  (absolute path or relative)
format selected code                     =
select contents of entire file           ggVG
convert selected text to uppercase       U
convert selected text to lowercase       u
invert case of selected text             ~
convert tabs to spaces                   :retab
start recording a macro                  qX (X = key to assign macro to)
stop recording a macro                   q
playback macro                           @X (X = key macro was assigned to)
replay previously played macro *         @@
auto-complete a word you are typing **   CTRL + n
bookmark current place in file           mX (X = key to assign bookmark to)
jump to bookmark                         `X (X = key bookmark was assigned to
                                             ` = back tick/tilde key)
show all bookmarks                       :marks
delete a bookmark                        :delm X (X = key bookmark to delete)
delete all bookmarks                     :delm!
split screen horizontally                :split
split screen vertically                  :vsplit
navigating split screens                 CTRL + w + j = move down a screen
                                         CTRL + w + k = move up a screen
                                         CTRL + w + h = move left a screen
                                         CTRL + w + l = move right a screen
close all other split screens            :only

*  - As with other commands in vi, you can playback a macro any number of times.
     The following command would playback the macro assigned to the key `w' 100
     times: 100@w

** - Vim uses words that exist in your current buffer and any other buffer you may have open for auto-complete suggestions.
brian newman
la source
Vous listez "~ X" pour aller à la marque avec le nom X. Cela ne fonctionne pas pour moi - à la place j'utilise "'X" (guillemet simple).
Sensationnel. Vous avez absolument raison. Quand je tapais le guide, je suppose que mon œil n'a vu que le tilde et a glissé sur la tique arrière. Je mettrai à jour en conséquence. Merci pour l'information.
brian newman
5
cette liste est sympa, mais je veux vraiment savoir comment avez-vous dessiné ce tableau? avec VIM? quel plugin? J'en cherche un actuellement.
Kent
6
J'ai utilisé VIM, mais pas de plugin. Toutefois; l'utilisation de la fonction de sélection de bloc l'a rendu relativement facile. Heureux que vous ayez trouvé la liste utile! ~ brian
brian newman
11
Ctrl-Q pour la sélection de bloc est une spécificité de mswin.vim qui permet à CTRL-V de coller. La plupart des utilisateurs de vim considéreraient ce mal et désactiveraient mswin.vim. "+ P ou Ctrl-R + n'est pas si difficile à taper pour insérer le contenu du presse-papiers.
Benoit
144

gi passe en mode d'insertion, en plaçant le curseur au même endroit qu'il était auparavant.

Cyber ​​Oliveira
la source
29
J'étais tellement heureux quand j'ai découvert que g;cela me
faisait
@longdeqidao pas du tout. Il revient au dernier point d'insertion. Vous pouvez donc faire défiler le contenu de votre cœur et cela vous ramènera à votre dernière insertion.
Cyber ​​Oliveira
9
FYI, g; (auquel @PatrickOscity a fait référence ci-dessus) place le curseur à l'endroit où une modification a été effectuée. Vous pouvez l'utiliser plusieurs fois pour revenir dans l'histoire. Notant ceci ici parce que mon aide vim ne le mentionne pas pour une raison étrange.
PonyEars
13
L'intuitivité de Vim ne cesse de m'impressionner. Puisque @PonyEars a mentionné que g;j'ai essayé si "l'opposé" était g,et voilà, nous pouvons avancer et reculer!
Cyber ​​Oliveira
aest plus court. :) Mais giest en effet très intuitif, avec ggénéralement une opération opposée.
Erwin Rooijakkers
105
: q!

J'aurais aimé le savoir avant de commencer vi pour la première fois.

Peter Mortensen
la source
23
en tant que gars emacs, c'est le commentaire le plus drôle que j'ai lu. pas sûr que vous vouliez que ce soit. Tu m'as fait plaisir aujourd'hui.
pjammer
29
Je me souviens d'avoir essayé vim et emacs pour la première fois le même jour, sans savoir comment sortir non plus. Je me suis dit ce qui ne va pas avec ces gens!?
physicsmichael
13
+1. La première fois que vous démarrez vim, le message par défaut doit être "écrire: q pour quitter". J'aurais gagné tellement de temps lol
José Ramón
2
@ JoséRamón Mais il ne le montrer à l'écran par défaut si vous entrez dans vim sans ouvrir un fichier. Cela a-t-il été ajouté récemment? Je me souviens clairement d'avoir essayé vim il y a des années et c'était déjà là. Il vous indique également d'utiliser :q!si vous essayez de quitter sans enregistrer le tampon.
Mechalynx
5
@ivy_lynx oui, vous avez peut-être raison, mais seulement si vous ouvrez vim sans fichiers. Habituellement, la première fois que vous ouvrez vim, c'est parce que vous devez modifier un fichier de configuration sous Unix, donc vous écrivez "$ vim file" et vous ne pouvez pas trouver votre chemin. Ou suis-je le seul?
José Ramón
56

^ XF termine l'utilisation des noms de fichiers du répertoire courant. Plus de copier / coller depuis le terminal ou de double vérification douloureuse.

^ XP se termine en utilisant des mots dans le fichier actuel

: set scrollbind force un tampon à défiler à côté d'un autre. par exemple, divisez votre fenêtre en deux volets verticaux. Chargez un fichier dans chacun (peut-être différentes versions du même fichier). Faites :set scrollbinddans chacun. Maintenant, lorsque vous faites défiler dans un, les deux volets défileront ensemble. Idéal pour comparer des fichiers.

Brian Agnew
la source
Comment désactiver le scrollbind une fois que je l'ai activé?
Amjith
2
jinxed_coder : :set noscbpour l'éteindre et utiliser :set scbpour l'activer (pas :scrollbind). :h scrollbind
jmdeldin
Oups. Corrigé pour ': set scrollbind'.
Brian Agnew
7
^ XP se termine avec préférence aux mots précédents du fichier, ^ XN avec préférence aux mots suivants du fichier.
u0b34a0f6ae
Vous pouvez également différencier des fichiers en ouvrant file1 et en exécutant :diffsplit file2ou en démarrant simplement vim avec vim -d file1 file2. Vim fait automatiquement défiler les deux fichiers.
Brian McCutchon
51

Vous pouvez utiliser un ensemble complet de commandes pour modifier le texte entre crochets / parenthèses / guillemets / balises. C'est super utile pour éviter d'avoir à trouver le début et la fin du groupe. Essayez en ci(, ci{, ci<, ci", ci', ctfonction du type d'objet que vous souhaitez modifier. Et les ca(, ca{, ...variantes suppriment également les crochets / guillemets.

Facile à retenir: changez à l'intérieur d'une instruction entre crochets / changez une instruction entre crochets.

Peter
la source
16
ce n'est pas seulement pour c. Vous pouvez le faire avec dpour supprimer (par exemple di (ou da (), ypour tirer, vpour sélectionner etc.
Nathan Fellman
salut! Je voudrais savoir là la documentation pour cela utilise :help? Je ne peux le trouver nul part. > _ <
Matej
1
@Peter J'ai déjà vérifié ces informations, mais je n'ai pas trouvé de mention du comportement particulier "intérieur + délimiteur". Il s'avère que c'est dedans :help motion.txt! Merci!
Matej
2
cette astuce est la seule raison pour laquelle je suis passé à vi en premier lieu :)
Justin L.
1
Si vous modifiez HTML ou XML, vous pouvez utiliser citpour modifier le contenu de la balise actuelle. Par exemple dans <span>Some text</span>, si votre curseur est sur le "m", vous pouvez faire ditpour l'obtenir <span></span>.
Jonathan Potter
47
  1. N'appuyez Escjamais. Voir cette réponse pour savoir pourquoi . Comme mentionné ci-dessus, Ctrl+ Cest une meilleure alternative. Je suggère fortement de mapper votre Caps Lockclé pour vous échapper.

  2. Si vous modifiez une langue compatible Ctags , l'utilisation d'un fichier de balises et :ta, Ctrl+ ], etc. est un excellent moyen de parcourir le code, même sur plusieurs fichiers. De plus, l' achèvement de Ctrl+ Net Ctrl+ Pà l'aide du fichier de balises est un excellent moyen de réduire les frappes.

  3. Si vous modifiez une ligne enveloppée parce qu'elle est plus large que votre tampon, vous pouvez vous déplacer vers le haut / vers le bas à l'aide de gk et gj.

  4. Essayez de vous concentrer sur l'utilisation efficace des commandes de mouvement avant d'apprendre de mauvaises habitudes. Des choses comme utiliser 'dt' ou 'd3w' au lieu d'appuyer x fois sur plusieurs fois. Fondamentalement, chaque fois que vous vous trouvez en appuyant sur la même touche à plusieurs reprises, il existe probablement un moyen meilleur / plus rapide / plus concis d'accomplir la même chose.

anthony
la source
11
N'utilisez pas Escape? C'est de l'hérésie. L'évasion est votre meilleur ami, au travail comme en dehors.
xcramps
28
si c'est un si bon ami, pourquoi est-il si loin sur le clavier?
anthony
parce que 99% des gens ne l'utilisent jamais.
Stefano Borini
5
Escape est séparé des autres touches de quelques centimètres sur mon clavier. Vous ne pouvez pas le manquer.
Brian Carper
15
# 3 est génial! Toujours en train d'apprendre de nouvelles choses ...
Brian Newman
45

La touche astérisque,, *recherchera le mot sous le curseur.

[+ vous Tabamènera à la définition d'une fonction C qui se trouve sous votre curseur. (Cela ne fonctionne pas toujours, cependant.)

smcameron
la source
1
Essayez 'man ctags' si vous utilisez * nix pour apprendre à générer un fichier "tags" qui indique à vim comment trouver la définition de n'importe quelle fonction ou variable dans de nombreuses langues en plus de C. Utilisez ctrl +] pour trouver la définition du jeton sous votre curseur, ou utilisez: tag tokenToFind pour trouver tout jeton qu'il connaît. Vous pouvez même démarrer vim avec "vim -t tokenToFind" pour ouvrir le fichier approprié et positionner le curseur sur la fonction à modifier.
Adam Liss
23
la touche # recherchera le mot sous le curseur dans le sens inverse
Funkodebat
github.com/bronson/vim-visual-star-search permet la recherche d'étoiles pour les sélections visuelles. Je ne veux plus le manquer.
Patrick Oscity
[ + Tab fonctionnera toujours lorsque vous pathset path+=path/to/files
étendez
43

ZZ(fonctionne comme :wq)

Et à propos de la position du curseur: j'ai trouvé qu'un curseur qui reste toujours au milieu de l'écran est cool -

set scrolloff=9999
maykeye
la source
2
Je ne le savais pas. :xfait aussi
sa125
18
Pas tout à fait exact. Fonctionne comme :x, qui enregistre le fichier uniquement s'il y a des modifications, alors qu'il :wqenregistre toujours le fichier.
Erik B
ZQ (fonctionne comme: q!)
xialu
42

Certains de mes derniers ajouts à mon brainstore Vim:

  • ^wi: Accédez au tag sous le curseur en divisant la fenêtre.
  • cib/ciB: Modifiez le texte à l'intérieur de l'ensemble actuel de parenthèses () ou d'accolades {}, respectivement.
  • :set listchars=tab:>-,trail:_ list: Afficher les tabulations / espaces de fin visuellement différents des autres espaces. Cela aide beaucoup avec le codage Python.
Walter
la source
4
Cela nécessite plus de votes! cibc'est super.
Matt Parker
aussi: ciw pour changer le mot courant (ou caw, le même mais main gauche seulement) ciW pour changer le W = o. (rd) Sames avec v au lieu de c sélectionnera en visuel au lieu de remplacer
lajarre
5
cib équivaut à taper "ci (". Vous pouvez également faire "ci [", "ci {", ou (si votre vimrc est configuré correctement) "ci <", pour d'autres types de supports.
Tom Lord
2
Aussi, "cit" pour changer le texte à l'intérieur d'une balise. Très utile lorsque vous travaillez avec XML / HTML.
Walter
il convient également de mentionner que vous pouvez plutôt suffixer avec l'accolade de fermeture, si vous préférez cela. aussi, je viens d'apprendre sur ci}& cit- wow, ça va être très utile. vi[m]prouve un programme [s] très excitant!
underscore_d
37

gv démarre le mode visuel et sélectionne automatiquement ce que vous aviez précédemment sélectionné.

trop de php
la source
34

: shell pour lancer une console shell depuis Vim. Utile lorsque par exemple vous voulez tester un script sans quitter Vim. Appuyez simplement sur ^ d lorsque vous avez terminé avec la console shell, puis vous revenez à Vim et à votre fichier modifié.

peroumal1
la source
Je suppose que :!shc'était trop dur. Je préfère cela parce qu'il est plus facile de composer des lignes de commande en utilisant des registres / complétions à partir du tampon actuel ou par exemple utiliser %/ %:hpour le nom de fichier / dirname actuel, etc.
sehe
1
Celui-ci est très cool. Je l'utilise tous les jours .. Avant c'était: wq, faire des trucs cli, rouvrir vim avec le même fichier .. Super optimisation
Flashin
7
Ctrl-Z pour passer au shell et fg <ENTER> pour revenir à vim.
Mario G.
Mettez map <Esc>! :shell<CR>votre .vimrc, et vous pouvez lancer le shell simplement avec Alt + !, ou Alt + Shift + 1. (Mnémonique: :!{cmd}s'exécute {cmd}avec la coquille.)
musiphil
:shelldémarrera cependant un nouveau niveau de shell imbriqué. Alors ctrl-zque non.
wisbucky
32

Cela me réconforte toujours:

:help 42
dogbane
la source
31

vimcryption

vim -x filename.txt

On vous demandera une phrase secrète, éditez et sauvegardez. Maintenant, chaque fois que vous ouvrez à nouveau le fichier dans vi, vous devrez entrer le mot de passe pour le visualiser.

anteatersa
la source
Synchronisez ceci avec votre dropbox et vous obtenez un très bon gestionnaire de mots de passe ;-)
Luis Nell
15
Mais notez qu'à moins que vous set cryptmethod=blowfish(uniquement disponible en 7.3+), il utilise un algorithme avec une force risible. Voir help encryptionpour plus de détails.
AB
3
Veuillez ne pas utiliser le cryptage vim, ce n'est pas un bon cryptage et une mauvaise sécurité est pire qu'aucune. Plus d'infos: github.com/neovim/neovim/issues/694
rodrigoq
2
dgl.cx/2014/10/vim-blowfish meta-tldr: "corrigé dans Vim 7.4.399 [ groups.google.com/forum/#!msg/vim_dev/D8FyRd0EwlE/bkBOo-hzTzoJ] , pour des raisons de compatibilité ascendante dont il a besoin être une nouvelle méthode de cryptage, alors utilisez :set cm=blowfish2"
underscore_d
28

Créez et déboguez votre code depuis Vim!

Configuration

Pas grand-chose, vraiment. Tu as besoin d'unMakefile dans le répertoire courant.

Compiler

Pendant que vous êtes dans Vim, tapez :makepour appeler un shell et construire votre programme. Ne vous inquiétez pas lorsque la sortie défile; appuyez simplement Enterlorsque vous avez terminé pour revenir à Vim.

La magie

De retour dans Vim, vous disposez des commandes suivantes:

  1. :cl répertorie les erreurs, avertissements et autres messages.
  2. :ccaffiche le message d'erreur / d'avertissement actuel au bas de l'écran et passe à la ligne incriminée dans votre code.
  3. :cc nsaute au ne message.
  4. :cn passe au message suivant.
  5. :cp saute au message précédent.

Il y en a plus; si vous êtes intéressé, tapez à :help :ccpartir de Vim.

Adam Liss
la source
1
fonctionne avec plus que de la simple compilation de code. À savoir, n'importe quelle tâche écrite dans un makefile est très utile pour cela.
Dwight Spencer du
25

^ P et ^ N

Complétez le texte précédent (^ P) ou suivant (^ N).

^ O et ^ I

Allez à l'emplacement précédent (^ O - "O" pour l'ancien) ou à l'emplacement suivant (^ I - "I" juste à côté de "O").

Lorsque vous effectuez des recherches, modifiez des fichiers, etc., vous pouvez parcourir ces «sauts» vers l'avant et l'arrière.

Des marques

Appuyez sur ma (marque m, a - nom de la marque). Plus tard, pour revenir à la position, tapez `a .

dimba
la source
1
Wow, je ne connaissais pas ^ O et ^ I: c'est génial. Cela pourrait valoir la peine:help jump-motions etc dans votre réponse au cas où quelqu'un voudrait plus d'informations.
DrAl
consultez ShowMarks vim.org/scripts/script.php?script_id=152 . Cela vous aidera à vous rappeler où et quelles sont toutes vos marques dans un tampon. vous pouvez activer / désactiver la visualisation avec \ mt
tester
Je ne comprends pas la différence entre ^ P et ^ N ...
lajarre
@lajarre ils parcourent la liste des achèvements disponibles dans la direction opposée
Patrick Oscity
2
J'utilise souvent ^ O ^ O lors de l'ouverture de Vim après avoir remarqué que je souhaitais modifier à nouveau le dernier fichier modifié. Énorme gain de temps!
Patrick Oscity
24

Appuyez %lorsque le curseur se trouve sur une citation, une parenthèse, un crochet ou une accolade pour trouver sa correspondance.

Adam Liss
la source
20
Si le curseur n'est sur aucun de ceux-ci, il se déplace vers la droite jusqu'à ce qu'il touche l'un d'eux.
Cyber ​​Oliveira
@ Léo: Merci pour le boni bonus!
Adam Liss
22

Jusqu'à [caractère] ( t). Il est utile pour toute commande qui accepte une plage. Mon préféré est ct;ou ct)qui supprime tout jusqu'au point-virgule / parenthèses fermantes et vous place ensuite en mode insertion.

Aussi, Get ggsont utiles (aller en bas et en haut respectivement).

MighMoS
la source
le meilleur ici, bien que certains autres soient utiles aussi, je les connaissais déjà tous
Funkodebat
1
Aussi fau lieu de t, qui [action] montera à travers ce personnage; par exemple, avoir le curseur sur le début d'un argument de fonction, df,le supprimera (dans les langages appropriés, bien sûr).
Actorclavilis
t et f sont parfaits pour éditer une partie d'une variable camelCase. Par exemple, si vous venez de dupliquer une ligne et devez changer firstVariable en secondVariable, positionnez votre curseur au début de firstVariable, puis ctV
Greg
1
T et F fonctionnent également, mais dans la direction opposée.
Fede
20

^r^w pour coller le mot sous le curseur en mode commande.

Il est vraiment utile lors de l'utilisation de commandes grep ou replace.

Peter Mortensen
la source
Si c'est le seul mot que vous voulez, alors * en mode normal recherchera le mot sous le curseur.
idbrii
17

Taper un numéro de ligne suivi de vous ggamènera à cette ligne.

xastor
la source
31
: suivi du numéro de ligne fait de même: 42 passe à la ligne numéro 42
Anti Veeranna
12
Taper un numéro de ligne suivi de G a le même effet.
Cyber ​​Oliveira
3
<number>gova au <number>e caractère du fichier.
Actorclavilis
17

Je souhaite que je connaissais les choses de base sur le mode de blocage visuel plus tôt. Même si vous n'utilisez Vim pour rien d'autre, cela peut être un gros gain de temps pour ouvrir un fichier dans Vim juste pour certaines opérations de bloc. Je suis sûr d'avoir perdu une tonne de temps à faire ce genre de chose manuellement.

Des exemples que j'ai trouvés particulièrement utiles lorsque, par exemple, la refactorisation de listes de noms de constantes symboliques de manière cohérente:

Entrer en mode Visual Block ( Ctrl+ Qpour moi sur Windows au lieu de Ctrl+V )

Déplacez le curseur pour mettre en surbrillance le bloc souhaité.

Alors, I whatever text et appuyez surEsc pour insérer le texte devant le bloc sur chaque ligne.

Utilisation A au lieu deI pour insérer le texte après le bloc sur chaque ligne.

Aussi - basculer simplement le cas d'une sélection visuelle avec ~ peut être un gros gain de temps.

Et supprimez simplement les colonnes, aussi, dbien sûr.

Anon
la source
15

^ y copiera le caractère au-dessus du curseur.

innaM
la source
6
... et ^ E insérera le caractère sous le curseur
trop de php
ne fonctionne pas pour moi, il déplace simplement un curseur au début du texte
Alex
14

q <letter> - enregistre une macro.

et

@ <same-letter> - le rejoue.

Ce sont de loin les commandes les plus utiles dans Vim car vous pouvez demander à l'ordinateur de faire beaucoup de travail pour vous, et vous n'avez même pas besoin d'écrire un programme ou quoi que ce soit.

leeand00
la source
L'utilisation de qsimplifie les choses, mais vous n'êtes pas obligé de l'utiliser: enregistrez simplement dans un tampon nommé la commande buffer "- par exemple, en utilisant buffer a- "ad$...
Mei
@Mei qenregistre une macro; les macros peuvent contenir des commandes, pas seulement du texte, elles sont donc "ad$différentes de qa.
Brian McCutchon
@Sortofabeginner Ce n'est pas pertinent ici. La commande "ad $ place le texte dans le tampon a et qa l'exécute.
Mei
2
@Mei qane l' exécute pas; qal'enregistre et l' @aexécute. Il est vrai que vous pouvez écrire une macro en texte brut, la stocker dans un registre aavec quelque chose comme "ad$, puis l'exécuter avec @a, mais c'est un peu plus de travail. Il existe une différence fondamentale entre le copier-coller et l'enregistrement-exécution.
Brian McCutchon
Ah! Je le savais. Merci pour la correction
Mei
13

Ouverture de plusieurs fichiers à l'aide d'onglets

:tabe filepath

Navigation entre les fichiers ouverts

gt and gT or :tabn and :tabp

Enregistrez la session ouverte afin de pouvoir revenir à votre liste de fichiers ouverts ultérieurement

:mksession session_file_name.vim

Ouvrir une session créée

vim -S session_file_name.vim

Fermez tous les fichiers à la fois

:qa

Une autre commande que j'ai apprise récemment

autocmd

Il vous permet d'exécuter une commande sur un événement, vous pouvez donc par exemple exécuter la commande make lorsque vous enregistrez un fichier en utilisant quelque chose comme:

:autocmd BufWritePost *.cpp :make
Mansuro
la source
12

qx commencera à enregistrer les frappes. Vous pouvez effectuer à peu près n'importe quelle tâche d'édition et Vim s'en souvient. Appuyez à nouveau sur q lorsque vous avez terminé, puis appuyez sur @x pour relire vos frappes. C'est idéal pour les modifications répétitives qui sont trop complexes pour écrire un mappage. Vous pouvez avoir de nombreux enregistrements en utilisant un caractère autre que x .

trop de php
la source
5
Le même caractère 'x' est également partagé entre la commande de macro d'enregistrement 'q' et les presse-papiers nommés ("x ...). Vous pouvez laisser des extraits de macros autour de votre fichier et les copier dans un presse-papiers nommé (par exemple" xyy ), puis lisez-les (@x).
Cyber ​​Oliveira
Et si jamais vous créez la macro awesomist, vous pouvez coller ce presse-papiers dans votre _vimrc avec un 'let @x = ""' (mettre la macro dans le "") et l'enregistrer pour toujours!
Kearns
11

Je dois dire que l'un de mes favoris met la fenêtre d'aide dans un nouvel onglet:

:tab help <help_topic>

Cela ouvre l'aide dans un nouvel onglet et, en tant que personne qui aime les onglets Vim, cela est ridiculement utile.

Robert Massaioli
la source
2
Les tampons sont les onglets de vim. Ils sont mieux pris en charge par le workflow vim. Je soupçonne que des onglets n'ont été ajoutés à vim que parce que trop de gens ne comprenaient pas les tampons.
still_dreaming_1
Ok donc très peu de temps après avoir dit ça, j'ai trouvé une utilisation pour les onglets dans vim. Il est vrai que si vous utilisez un tampon par onglet, vous devez vous renseigner sur les tampons. Ce n'est pas ainsi que les onglets étaient destinés à être utilisés dans vim. La plupart des utilisateurs avancés de vim utilisent des tampons comme les onglets sont utilisés dans la plupart des programmes. Beaucoup de gens pensent que les onglets auraient dû être nommés mises en page dans vim. Ils sont principalement destinés à ouvrir différentes collections de fenêtres dans différents onglets. Vous pouvez également avoir un tampon spécifique que vous revenez à beaucoup ouvert dans un onglet, et utiliser l'autre onglet pour afficher tous les autres tampons.
still_dreaming_1
9

cw

Changer le mot - supprime le mot sous le curseur et vous met en mode insertion pour en saisir un nouveau. Bien sûr, cela fonctionne avec d'autres touches de mouvement, vous pouvez donc faire des choses comme c $ pour passer à la fin de la ligne.

caractère f +

Recherche l'occurrence suivante du caractère sur la ligne actuelle. Vous pouvez donc faire vft pour sélectionner tout le texte jusqu'au "t" suivant sur la ligne courante. C'est une autre clé de mouvement, donc elle fonctionne aussi avec d'autres commandes.

Adam Neal
la source
9

:b [any portion of a buffer name]pour changer de tampon. Donc, si vous avez deux tampons, "somefile1.txt" et "someotherfile2.txt", vous pouvez passer au second avec simplement":b 2.t<enter>" . Il prend également en charge la complétion des onglets, bien qu'il ne soit pas requis.

En parlant de complétion des onglets, le paramètre :set wildmode=full wildmenuest également très utile. Il permet la complétion complète des onglets en mode commande, ainsi qu'un menu très utile de style ncurses de toutes les correspondances possibles lors de son utilisation.

Michael
la source
9

:% s, / rechercher, / remplacer,

Vous pouvez utiliser d'autres caractères que /(barre oblique) pour séparer les modèles de substitution. De cette façon, vous n'avez pas à échapper aux barres obliques des chemins de fichiers.

hfs
la source
2
oh l'enfer oui. Je savais que sedj'avais ça, mais pas vim. Plus vous en savez ♒ ☆
beerbajay