web-dev-qa-db-fra.com

Comment puis-je insérer un caractère de tabulation réel dans Vim?

Quand j'ai mon vimrc ici:

set tabstop=2
set shiftwidth=2
set softtabstop=2
set expandtab
set smarttab

Et j'ai le plugin Supertab installé. Chaque fois que je suis en mode insertion, j'appuie sur tab, cela indique l'auto-complétion, mais parfois, j'aimerais insérer un vrai caractère de tabulation dans un littéral de chaîne comme. Donc, ce que je veux dire chaque fois que j'appuie sur tabulation entre guillemets littéraux de guillemets, nous devrions entrer un caractère de tabulation réel.

50
Samnang

En mode insertion ou en mode commande (l’invite : au bas de l’éditeur), tapez CTRL + V puis TAB.

En utilisant CTRL + V signale à Vim qu'il doit prendre le caractère suivant à la lettre. Même en mode insertion.

METTRE À JOUR:

Comme l'a noté Herbert Sitz, si gVim est en mode Windows (par défaut), vous devez utiliser CRTL + Q au lieu de CTRL + V.

96
Jason Down

@ Samnang: j'ai une configuration similaire à celle que vous avez; Malheureusement, la réponse de Jason n'a pas fonctionné, pour moi.

Ceci est une solution de contournement:

  • Remplacez un ou plusieurs caractères (par exemple, une astuce de retour: `) ou des caractères (par exemple une chaîne alphanumérique unique: zzz) à l'endroit où vous souhaitez que vos onglets
  • Sélectionnez le texte (mode visuel) et effectuez une recherche/remplacement,

    : '/// t/g

Réponse mise à jour, inspirée par le commentaire de @ Cyryl1972.

Insérer un onglet au début de toutes les lignes (remarque: il n'est pas nécessaire de sélectionner des lignes, quel que soit le code ci-dessous, car celui-ci est inclus dans la ligne correspondant à une partie de l'expression):

:1,$s/^/\t\1/

Onglet inerte après les 10 premiers caractères de toutes les lignes:

:1,$s/^\(.\{10}\)/\1\t/

Explication - première partie:

:1,$      Match from line 1 to end of file
^(.{10}   Collect (preserve) all text from beginning of line to position 10
          (you need to escape the parentheses, \( and \), as well the FIRST
          (left) curly brace, only: \{ -- as it, { , appears to have special
          meaning in regex when used for this purpose

Explication - deuxième partie:

/1        Add back the preserved text
\t        Insert a tab

... et le reste de la ligne est automatiquement restauré.

Ligne actuelle, seulement:

:s/^/\t\1/

Exemple: insérez une tabulation à la position 10 (indexé 0) aux lignes 2 à 4:

1234567890abcdefghij 
1234567890abcdefghij 
1234567890abcdefghij 
1234567890abcdefghij 
1234567890abcdefghij 

:2,4s/^\(.\{10}\)/\1\t/

1234567890abcdefghij 
1234567890  abcdefghij 
1234567890  abcdefghij 
1234567890  abcdefghij 
1234567890abcdefghij 

Références (StackOverflow):

Références (autres):

0
Victoria Stuart