web-dev-qa-db-ja.com

VIMでスペースをタブに戻す最も簡単な方法

私は常にVIM= xのスペース(通常は4)でTABを置き換えるものでした。).vimrc構成ファイルでほとんど常に使用する4行は次のとおりです。

set tabstop=4 

set shiftwidth=4

set expandtab

syntax on

基本的に、1つのタブ(Makefileなど)を使用する必要がある瞬間があり、ファイルを離れて.vimrcを編集し、目的のファイルを再ロードする以外に、どうやってそれを回避するかわかりません。

つまり、(VIM内から)TABSを使用して元の設定に戻す最も簡単な方法は何ですか?最小の煩わしさ、最小のキーストロークの解決策を探しています。

38
skippr

VIMは、「Makefile」ではなく「Makefile」と名付けた場合、MakefileのTABを自動的に有効にします。 VIMが小文字の違いがあるタイプをまだ検出しないのはなぜかわかりませんが、それは人生です(@Sedrik)

それはさておき、他の代替ソリューションは次のとおりです。

Filetype Binding(@ThorstenS @tungd):

autocmd FileType make setlocal noexpandtab

リアルタイムスイッチ(@ThorstenS):

質問に記載されている.vimrc構成を想定して、次の操作を行います。

:set noet(スペースからタブに切り替えるため)

および:set et(元に戻す)

48
skippr

挿入モードで使用できる魔法のエスケープキーを使用してください。

* NIXでは、挿入モードのときのデフォルトは^ Vです。 Windowsでは、魔法のエスケープ文字が何であるかを見つける必要があります-^ Vは他のもののために使用されます。 ^ Qか^ Sかもしれません。

そう!あなたのメイクファイルで:

this: this.c
<C-V><Tab>cc this.c

通常の意味が当てはまる場合:

ctrl-Vを押すことを意味します(カーソルの下に^が隠れているはずです)-タブキーを押します。ビンゴ。

私のために働く。

注:ファイルを読み取るときにタブを破壊するvim設定またはスタートアップコードを使用する場合、これは明らかに短期的な修正です。 retabコマンドを使用してファイルがタブクリーンであることを確認する方法を学ぶことを好みます。意識的にそうすることを選択しない限り、ファイルに触れたくないからです。

21
user1646075

set noexpandtab。おそらく、これをファンクションキーにバインドします。

11
ThorstenS

Vimのデフォルトはtabstop=8およびnoexpandtabなので、デフォルトはMakefileでの作業に適しています。 .vimrcがtabstopexpandtabなどのカスタムオプションを使用する場合、1つの簡単な解決策は、Makefileでの作業中に.vimrcをバイパスすることです。

マンページから(私の強調):

-u {vimrc}初期化にはファイル{vimrc}のコマンドを使用します。他のすべての初期化はスキップされます。これを使用して、特別な種類のファイルを編集します。 "NONE"と指定することで、すべての初期化をスキップすることもできます。詳細については、vim内の「:help initialize」を参照してください。

必要なフラグ/値/フォーマットを思い出せないので、覚えているBashエイリアスを作成しました:alias vimnone='vim -u NONE'

0
pdoherty926

この構成のみがこの問題の解決に役立ちました。

filetype plugin indent on
filetype detect
autocmd FileType make set noexpandtab
0
Mike Pylypyshyn

ファイルタイプごとにカスタム構成を作成できます。

mkdir -p ~/.vim/after/indent
echo 'set noexpandtab' >> ~/.vim/after/indent/make.vim

基本的に、ここでは他のスクリプトの後に読み込まれるメイクファイルの新しいインデント設定を作成しました。


ソース

0
matusf