2009-09-10 20 views
14

私の仕事はPerlでのコーディングです。私は家でPythonとErlangで遊んでいます。 Perlでは、2つのスペースでコードをインデントしたいと思います。 Pythonでは標準が4です。また、すべてのプログラミング言語で使用したい関数宣言を開くためのキーバインドもあります。これはgVimでどのように達成できますか?gVimと複数のプログラミング言語

同様に、プログラミング言語ごとに設定ファイルを保持する方法がありますか?

答えて

22

あなたはファイルタイプを活用して行うことができる必要があります...例えば、あなたのvimrcに以下を追加(そして異なる言語のために適切に変更):あなたの$ HOMEで

autocmd FileType python set tabstop=4|set shiftwidth=4|set expandtab 
+20

デフォルト設定を上書きしないでください。 'set'の代わりに 'setlocal'(または 'setl')を使用してください。最後のautocmd breakの設定を他のバッファに設定する必要はありません。 –

+0

@Maxim - 良いキャッチ... :-) –

+2

'set'コマンドは複数のオプションを受け入れます。したがって、書くのが簡単です: 'set tabstop = 4 shiftwidth = 4 expandtab' –

23

、て.vim /ディレクトリを作ります(またはvimfiles/Windows上で)ftplugin /ディレクトリを作成し、 "perl.vim"または "python.vim"または "html.vim"という名前のファイルを保存するか...

これらはロードする必要があります.vimrc(または_vimrcのウィンドウ下)に:filetype plugin onを追加することを忘れない限り、指定したファイルタイプの新しいファイルを開いたり作成したりすると自動的に開きます

次に、vimオプションは:setlocalで定義されていなければなりません。:setではなく、その定義がデフォルトのグローバル設定よりも優先されます。

マッピングは、:n/i/v(nore)map <buffer>、および省略形で定義されています。コマンドは-bオプションで定義されています。メニューはプラグインの助けなしにローカルにすることはできません。

local,<buffer>および-bは、副作用を防ぐために重要である。

+0

ウィンドウが開いている場合は、 ":help dos-locations"を参照してください。 –

+0

+1コマンドが単一のバッファに対して定義できるかどうかわかりませんでした! –

3

ここで私はそれをやっています。以下は私の.vimrcの抜粋です。私は言語ごとにさらにconfigsを維持し、新しいバッファがロードされたときにそれらをロードします。

" HTML 
autocmd BufNewFile,BufRead *.html,*.htm,*.xhtml source ~/.vimhtml 
" XML 
autocmd BufNewFile,BufRead *.xml,*.xmi source ~/.vimxml 
" Perl 
autocmd BufNewFile,BufRead *.pl,*.pm source ~/.vimperl 

ファイルをソースしていますが、VIMコマンドを実行したり、関数を呼び出すことができます。例えばGeneratePackage()はVIM機能である

autocmd BufNewFile *.java call GeneratePackage() 

:新しいJavaファイルをロードするために、私はこれを行います。

+0

autocmd FileType ...ファイルタイプの検出(BufNewFileを使用)をそのファイルタイプに対して実行されたアクションから分離するので、より優れています。 – joeforker

7

rangerchrisの回答に加えて、モデルラインの使用を検討することもできます。モードラインは、自身を構成する方法エディタを教えて:

#!/usr/bin/perl 
# vi: ts=4 sw=4 ht=4 et textwidth=76 : 

use strict; 
use warnings; 

print "hello world\n"; 

モードラインは、4つの文字のタブとautoindentsを使用するために、スペースの代わりにタブを使用すると、カーソルが76文字になったとき、それは改行を挿入する必要があることのviを告げること。

あなたはVimは(ほとんどの場合、あなたの.vimrcに設定された)二つの変数でモードラインを読み込む方法を制御することができます

set modeline 
set modelines=5 

modeline変数は、それが設定されている場合、モードラインを探すためにVimを伝えます。 modelines変数は、Vimに、モデルラインを検索するためのトップとボトムからの走査線の数を示します(この場合、ファイルの最初の行または最後の5行にあれば、モデルラインを見つけるでしょう)。

信頼できないソースからの指示を受け取るシステムと同様に、modelinesはsecurity threatになる可能性があるので、rootユーザはモードラインを使用しないでください.Vimの最新版を最新の状態に保つ必要があります。

モデルラインの本当のメリットはファイルごとであるということです。ほとんどのPerlの人々はインデントの人として4つのスペースですが、私は8文字のタブの人です。他の人のコードを操作するときは、その使用法を反映したモデルラインを使用します。残りの時間は私自身を使っています。

関連する問題