File: usr_43.dex

package info (click to toggle)
vimhelp-de 7.4.130818-2
  • links: PTS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 708 kB
  • sloc: makefile: 37
file content (187 lines) | stat: -rw-r--r-- 8,103 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
*usr_43.txt*	Für Vim Version 7.4.  Letzte Änderung: 2008-Dez-28

		     VIM-BENUTZERHANDBUCH - von Bram Moolenaar

			       Dateitypen (filetypes) benutzen


Wenn Sie eine Datei von einem bestimmten Typ editieren, zum Beispiel ein
C-Programm oder ein Shell-Skript, benutzen Sie oft dieselben Einstellungen
und Tastaturbelegungen.  Sie werden schnell müde, diese jedes Mal von Hand
zu setzen.  Dieses Kapitel erklärt, wie man es automatisiert.

|43.1|	Plugins für einen Dateityp
|43.2|	Einen Dateityp hinzufügen

Nächstes Kapitel: |usr_44.txt|  Eigene Syntax-Hervorhebungen
 Voriges Kapitel: |usr_42.txt|  Neue Menüs hinzufügen
Inhaltsübersicht: |usr_toc.txt|

==============================================================================
*43.1*	Plugins für einen Dateityp				*filetype-plugin*

Wie mit der Benutzung von Dateitypen-Plugins begonnen wird, wurde bereits
unter |add-filetype-plugin| besprochen.  Aber möglicherweise sind Sie mit
den Standard-Vorgaben nicht zufrieden, weil diese minimal gehalten wurden.
Angenommen, Sie wollen für C-Dateien die Option 'softtabstop' auf 4 setzen
und eine Tastenbelegung definieren, welche einen dreizeiligen Kommentar
einfügt.  Dies geht mit nur zwei Schritten:

							*your-runtime-dir*
1. Erzeugen Sie Ihr eigene Laufzeit-Verzeichnis.  Unter Unix ist dies für
gewöhnlich »~/.vim«.  Erzeugen Sie in diesem Verzeichnis das Verzeichnis
»ftplugin«: >

	mkdir ~/.vim
	mkdir ~/.vim/ftplugin
<
   Falls Sie nicht unter Unix arbeiten, prüfen Sie den Wert der Option
'runtimepath', um zu sehen, wo Vim nach dem Verzeichnis »ftplugin« sucht: >

	set runtimepath

<  Sie werden normalerweise den ersten Verzeichnisnamen (vor dem ersten Komma)
benutzen.  Möglicherweise wollen Sie der Option 'runtimepath' ein Verzeichnis
in Ihrer Datei |vimrc| voranstellen, falls Ihnen die Vorgabe nicht gefällt.

2. Erzeugen Sie die Datei »~/.vim/ftplugin/c.vim« mit folgendem Inhalt: >

	setlocal softtabstop=4
	noremap <buffer> <LocalLeader>c o/**************<CR><CR>/<Esc>

Versuchen Sie nun eine C-Datei zu editieren.  Sie sollten bemerken, dass die
Option 'softtabstop' auf 4 gesetzt wurde.  Wenn Sie aber eine andere Datei
editieren, wird sie auf das vorgabemäßige 0 zurückgesetzt.  Das ist so,
weil der Befehl »:setlocal« benutzt wurde.  Dieser setzt die Option
'settabstop' nur für den lokalen Puffer.  Sobald Sie einen anderen Puffer
editieren, wird sie auf den Vorgabewert für diesen Puffer gesetzt.  Für
einen neuen Puffer ist dies der Standardwert oder der Wert des letzten
»:set«-Befehls.

Desweiteren verschwindet die Tastaturbelegung für »\c«, wenn ein anderer
Puffer editiert wird.  Der Befehl »:map <buffer>« erzeugt eine
Tastenbelegung, die lokal zu dem aktuellen Puffer ist.  Dies funktioniert
mit jedem Belegungsbefehl: »:map!«, »:vmap« usw.  Das |<LocalLeader> in
der Belegung wird durch den Wert der Variablen »maplocalleader« ersetzt.

In diesem Verzeichnis können Sie Beispiele für Dateitypen-Plugins finden:
>

	$VIMRUNTIME/ftplugin/

Weitere Details über das Schreiben von Dateitypen-Plugins können unter
|write-plugin| gefunden werden.

==============================================================================
*43.2*	Einen Dateityp hinzufügen

Falls Sie einen Dateityp benutzen, der von Vim nicht erkannt wird, bekommen
Sie ihn folgendermaßen erkannt.  Sie brauchen ein eigenes
Laufzeitverzeichnis.  Siehe oben |your-runtime-dir|.

Erzeugen Sie eine Datei »filetype.vim«, die einen automatischen Befehl
für Ihren Dateityp enthält.  (Automatische Befehle werden in Abschnitt
|40.3| erläutert.)  Zum Beispiel: >

	augroup filetypedetect
	au BufNewFile,BufRead *.xyz	setf xyz
	augroup END

Dies lässt alle Dateien, die auf ».xyz« enden, als den Dateityp xyz
erkennen.  Die Befehle »:augroup« setzen diesen automatischen Befehl in
die Gruppe »filetypedetect«.  Dies erlaubt es, alle automatischen Befehle
für die Dateityperkennung zu entfernen, wenn der Befehl »:filetype off«
gegeben wird.  Der Befehl »setf« setzt die Option 'filetype' auf sein
Argument, wenn er es nicht schon ohnehin war.  Dies stellt sicher, dass
'filetype' nicht zweimal gesetzt wird.

Sie können viele verschiedene übereinstimmungsmuster für den Namen Ihrer
Datei benutzen.  Verzeichnisnamen können ebenfalls einbezogen werden.
Siehe |autocmd-patterns|.  Zum Beispiel sind die Dateien unter
»/usr/share/scripts/« alle Ruby-Dateien, aber haben nicht die erwartete
Datei-Endung.  Fügen wir dies obigem Beispiel hinzu: >

	augroup filetypedetect
	au BufNewFile,BufRead *.xyz			setf xyz
	au BufNewFile,BufRead /usr/share/scripts/*	setf ruby
	augroup END

Falls Sie aber nun eine Datei /usr/share/scripts/READE.txt editieren, ist
diese keine Ruby-Datei.  Die Gefahr von Mustern, die auf »*« enden ist, dass
schnell zu viele Dateien erfasst werden.  Um dieses Problem zu vermeiden,
legen Sie die Datei in ein anderes Verzeichnis, eines, dass am Ende von
'runtimepath' ist.  Für Unix könnten Sie zum Beispiel
»~/.vim/after/filetype.vim« benutzen.
  Jetzt packen Sie die Erkennung von Textdateien in ~/.vim/filetype.vim: >

	augroup filetypedetect
	au BufNewFile,BufRead *.txt			setf text
	augroup END

Diese Datei wird zuerst in 'runtimepath' gefunden.  Dann packen Sie dies in
die ~/.vim/after/filetype.vim, welche zuletzt gefunden wird: >

	augroup filetypedetect
	au BufNewFile,BufRead /usr/share/scripts/*	setf ruby
	augroup END

Was nun passiert ist, dass Vim in jedem Verzeichnis in 'runtimepath' nach
einer Datei »filetype.vim« sucht.  Zuerst wird ~/.vim/filetype.vim gefunden.
Der automatische Befehl um *.txt Dateien zu erkennen wird dort definiert.
Dann findet Vim die Datei filetype.vim in $VIMRUNTIME, was in der Mitte von
'runtimepath' ist.  Schließlich wird ~/.vim/after/filetype.vim gefunden, und
der automatische Befehl für die Erkennung von Ruby-Dateien in
/usr/share/scripts wird hinzugefügt.
   Wenn Sie nun /usr/share/scripts/README.txt editieren, werden die
automatischen Befehle in der Reihenfolge überprüft, in der sie definiert
wurden.  Das Muster *.txt trifft, also wird »setf text« ausgeführt, um den
Dateityp auf »text« zu setzen.  Das Muster für Ruby trifft ebenfalls, und
»setf ruby« wird ausgeführt.  Aber weil 'filetype' bereits auf »text« gesetzt
war, passiert hier nichts.
   Wenn Sie die Datei /usr/share/scripts/foobar editieren, werden dieselben
automatischen Befehle überprüft.  Nur der für Ruby passt, und »setf ruby«
setzt 'filetype' auf Ruby.


ERKENNUNG NACH INHALT

Falls Ihre Datei nicht am Dateinamen erkannt werden kann, mag es sein, dass
sie sich an ihrem Inhalt erkennen lässt.  Zum Beispiel beginnen viele
Skript-Dateien mit einer Zeile wie dieser:

	#!/bin/xyz ~

Um dieses Skript zu erkennen, erzeugen Sie eine Datei »scripts.vim« in
Ihrem Laufzeit-Verzeichnis (an derselben Stelle wie filetype.vim.  Sie
könnte so aussehen: >

	if did_filetype()
	  finish
	endif
	if getline(1) =~ '^#!.*[/\\]xyz\>'
	  setf xyz
	endif

Die erste Abfrage auf did_filetype() geschieht, um zu vermeiden, dass
Dateien, die bereits nach ihrem Dateinamen erkannt wurden, auf ihren Inhalt
untersucht werden.  Dies spart Zeit, die auf das Prüfen der Datei verwandt
würde, wenn der Befehl »setf« ohnehin ohne Wirkung bliebe.
   Die Datei scripts.vim wird von einem automatischen Befehl in der
standardmäßigen filetype.vim eingelesen.  Demnach ist die
Überprüfungsreihenfolge:

	1. Dateien filetype.vim vor $VIMRUNTIME in 'runtimepath'
	2. Der erste Teil von $VIMRUNTIME/filetype.vim
	3. Alle Dateien scripts.vim in 'runtimepath'
	4. Der Rest von $VIMRUNTIME/filetype.vim
	5. Dateien filetype.vim nach $VIMRUNTIME in 'runtimepath'

Falls Ihnen dies nicht ausreicht, fügen Sie einen automatischen Befehl, der
auf alle Dateien passt und ein Skript einliest, oder eine Funktion
ausführt, die auf den Inhalt der Datei prüft, hinzu.

==============================================================================

Nächstes Kapitel: |usr_44.txt| Eigene Syntax-Hervorhebungen

Copyright: siehe |manual-copyright| vim:tw=78:ts=8:ft=help:norl: