2011-08-05 13 views
46

Kiedy mam vimrc tutaj:Jak mogę wstawić znak prawdziwej zakładki w Vimie?

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

I mam zainstalowany plugin supertab. Ilekroć jestem w trybie wstawiania, wciskam zakładkę, pokazuje ona autouzupełnianie, ale czasami chciałbym wstawić znak prawdziwej tabulatury w literał łańcuchowy. Mam na myśli to, że za każdym razem, gdy wciskam klawisz tabulatora w cudzysłowy ciągów podwójnych, powinien on wprowadzić prawdziwą postać tabulatora.

Odpowiedz

78

W trybie wstawiania i trybu zachęty (na dole edytora :) Typ ctrl + V następnie TAB.

Korzystanie CTRL + V sygnały vim, że powinien wziąć następny znak dosłownie. Nawet w trybie wstawiania.

UPDATE:

Jak zauważył Herbert Sitz, jeśli gVim jest w trybie Windows (domyślny), należy użyć Ctrl + Q w miejsce CTRL + V.

+0

To wszystko, ale w systemie Windows, jeśli Win kompatybilność jest ustawiony na w vimrc (co jest domyślne) trzeba zrobić 'CTRL' + 'Q', a następnie' TAB'. –

+0

@Herbert Sitz: Dobra uwaga. Zapomniałem o trybie Windows dla gVim. Też to zauważę. –

+0

CTRL + Q po prostu ustawia mnie w wizualnym trybie blokowym, więc kolejna TAB nic nie robi. Czy coś mi umyka? Coś nie tak z moją konfiguracją? –

0

@Samnang: Mam podobną konfigurację jak ty; niestety, odpowiedź Jasona nie zadziałała, dla mnie.

Jest to obejście:

  • Zastępca jakiś znak (np lewy apostrof: `) lub znaków (np unikalny ciąg znaków alfanumerycznych: zzz), w którym chcesz swoją kartę (y)
  • wybrać tekst (tryb wizualny) i nie szukaj/wymienić,

    :'s/`/\t/g

Zaktualizowana odpowiedź, inspirowana komentarzem @ Cyryl1972.

karcie Wstawianie na początku wszystkich linii (uwaga również: nie ma potrzeby, aby wybrać linie, na dowolny z poniższych kodów, jak to zawarte w części pasującej linii wyrażenia):

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

zakładce obojętny po pierwszych 10 znaków we wszystkich liniach:

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

Objaśnienie - pierwsza część:

: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 

Wyjaśnienie - druga część:

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

... a reszta linii jest również automatycznie przywracana.

linii bieżącej wyłącznie:

:s/^/\t\1/ 

Przykład Zakładka wkładki w pozycji 10 (0 indeksowane) wzdłuż linii 2-4

1234567890abcdefghij 
1234567890abcdefghij 
1234567890abcdefghij 
1234567890abcdefghij 
1234567890abcdefghij 

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

1234567890abcdefghij 
1234567890 abcdefghij 
1234567890 abcdefghij 
1234567890 abcdefghij 
1234567890abcdefghij 

zewnętrzne (Stackoverflow):

Odniesienia (inne):

+0

rozwiązanie też działa:: 1, $ s/^ \ (. \)/\ T \ 1/(wstaw tabulację przed pierwszym znakiem wszystkich linii) – Cyryl1972