web-dev-qa-db-ja.com

Vimに実際のタブ文字を挿入するにはどうすればよいですか?

ここにvimrcがある場合:

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

そして、スーパータブプラグインがインストールされています。挿入モードになっているときはいつでもタブを押すと、自動補完が表示されますが、実際のタブ文字を文字列リテラルに挿入したい場合があります。つまり、ダブルクォート文字列リテラルでタブを押すたびに、実際のタブ文字が入力されるはずです。

56
Samnang

挿入モードまたはコマンドモード(:エディターの下部にプロンプ​​トを表示)、入力 CTRL + V それから TAB

を使用して CTRL + V Vimに、文字通り次の文字を使用するように指示します。挿入モードでも。

更新:

Herbert Sitzが述べたように、gVimがWindowsモード(デフォルト)の場合、使用する必要があります CRTL + Q 代わりに CTRL + V

98
Jason Down

@Samnang:私はあなたと同様の設定をしています。残念ながら、ジェイソンの答えはうまくいきませんでした。

これは回避策です。

  • タブが必要な場所で、一部の文字(例:バックティック: `)または文字(例:一意の英数字文字列:zzz)を置き換えます。
  • テキストを選択して(ビジュアルモード)、検索/置換を実行します。

    : 's/`/\t/g

@ Cyryl1972のコメントに触発された回答を更新しました。

すべての行の先頭にタブを挿入します(また、式の一部に一致する行に含まれているため、次のコードの場合、行を選択する必要はありません)。

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

すべての行の最初の10文字の後にタブを挿入する:

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

説明-最初の部分:

: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

説明-2番目の部分:

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

...そして、残りの行も自動的に復元されます。

現在の行のみ:

:s/^/\t\1/

例:2〜4行目の位置10(0から始まる)にタブを挿入します。

1234567890abcdefghij 
1234567890abcdefghij 
1234567890abcdefghij 
1234567890abcdefghij 
1234567890abcdefghij 

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

1234567890abcdefghij 
1234567890  abcdefghij 
1234567890  abcdefghij 
1234567890  abcdefghij 
1234567890abcdefghij 

参照(StackOverflow):

参照(その他):

0
Victoria Stuart