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

Quand j’ai mon vimrc ici:

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

Et j’ai plugin supertab installé. Chaque fois que je suis en mode d’insertion, j’appuie sur la touche tab, cela indique la fin automatique, mais parfois je voudrais insérer un vrai caractère de tabulation dans un littéral de type chaîne. Donc, ce que je veux dire chaque fois que j’appuie sur tabulation entre guillemets, la chaîne doit être un vrai caractère d’onglet.

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

L’utilisation de CTRL + V signale à Vim qu’il devrait prendre littéralement le caractère suivant. 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 à la place de CTRL + V.

@ Samnang: J’ai une configuration similaire à vous; Malheureusement, la réponse de Jason n’a pas fonctionné pour moi.

Ceci est une solution de contournement:

  • Remplacez un caractère (par exemple un backtick: `) ou des caractères (par exemple une chaîne alphanumérique unique: zzz) où vous voulez que vos tabs
  • Sélectionnez le texte (mode Visual) et effectuez une recherche / remplacement,

      : 's / `/ \ t / g 

Mise à jour de la réponse, inspirée du commentaire de @ Cyryl1972.

Onglet Insérer au début de toutes les lignes (notez également: pas besoin de sélectionner des lignes, pour l’un des codes suivants, comme cela est inclus dans la partie correspondant à l’expression de la ligne):

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

Onglet Inert après 10 premiers caractères dans 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 rest de la ligne est automatiquement restauré.

Ligne actuelle seulement:

 :s/^/\t\1/ 

Exemple: insérer l’onglet à la position 10 (indexé sur 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):

  • Remplace le caractère à une position spécifique par un autre caractère en utilisant une expression régulière, Vim
  • Comment append un personnage à une position spécifique dans une chaîne?

Références (autres):

  • Regex Cheat Sheet