2013-02-05 9 views
13

Ich möchte den aktuellen Dateityp als Variable in vimscript bekommen.Vimscript: Wie bekomme ich den aktuellen Dateityp als Variable?

Ich mache eine Funktion, die den aktuellen Dateityp ergreift und eine andere Datei mit dem entsprechenden Dateityp bearbeitet.

Zum Beispiel:

  • Bearbeitung "foo/bar.txt" wollen "tmp/other.txt"
  • Bearbeitung "foo/bar.cpp" zu öffnen, wollen „tmp öffnen/other.cpp“

usw. ich weiß, dass :set ft? zeigt den Dateityp in vim, aber ich bin nicht sicher, wie es zu erfassen und dann eine andere Datei öffnen, es als Teil der neuen Datei Zeichenfolge verwendet wird.

+5

'& filetype' entspricht nicht unbedingt der Dateinamenerweiterung! Möchten Sie wirklich den Dateityp dafür verwenden, oder würden Sie lieber den 'bufname ("% ")" wie 'fnamemodify (bufname ("% "),": t ")' extrahieren, um die Erweiterung der aktuellen Datei zu extrahieren? Zum Beispiel hat eine Datei mit dem Namen 'foo.hpp' einen '& Dateityp' von cpp. Möchten Sie in diesem Fall "tmp/other.cpp" oder "tmp/other.hpp" öffnen? – cptstubing06

Antwort

24

Sie können auf den Wert einer Einstellung zugreifen, indem Sie ihr ein kaufmännisches Und voranstellen. Um den Dateityp einer Variablen zuweisen, sind die folgenden äquivalent:

let my_filetype = &filetype 
let my_filetype = &ft 

So für Ihr Beispiel unter der Annahme, den Dateityp des aktuellen Puffers gesetzt worden ist, Sie so etwas wie

execute 'edit tmp/other.' . &filetype 

Hinweis tun könnte, dass Sie müssen execute den Ausdruck so, dass die Variable vor der Verkettung der Zeichenfolgen erweitert wird.

0

Dateityp und Dateisuffix sind nicht unbedingt identisch. Wenn Sie z. B. eine TXT-Datei bearbeiten, legen Sie zft = & ft zft auf "text" fest. let zfs = fnamemodify (bufname ("%"), ": e") setzt zfs auf "txt".

Verwandte Themen