Vim-Tastenkombinationen für bestimmte Dateien

2946
vonhogen

Ist es möglich, Hotkeys für bestimmte Dateitypen in vim festzulegen.

Wenn ich zum Beispiel eine .java-Datei bearbeite, möchte ich, dass vim javac .java ausführt, wenn ich 5 drücke.

Ist das möglich?

4

3 Antworten auf die Frage

7
Andrejs Cainikovs

~ / .vimrc

autocmd FileType java map <F5> :! javac %<cr> 

Weitere Informationen zum Tastenmapping und externen Befehlen .

Ist es möglich, die Dateierweiterung zu entfernen? damit ich java wie machen kann (.java entfernen)? vonhogen vor 14 Jahren 0
Ich bezweifle es, aber Sie können eine Verknüpfung zu einem Skript erstellen, das die Erweiterung entfernt und javac für das Ergebnis ausführt. Andrejs Cainikovs vor 14 Jahren 0
@karmic: Use something like `autocmd FileType java map :exe '! javac ' . expand('%:r')` See `:help expand()` for more information. Al. vor 14 Jahren 2
4
Luc Hermitte

(Ich kann den Punkt der Dichotomie zwischen SO und SU für solche Fragen nicht verstehen ... Wie auch immer :) Ihre Frage wurde bereits einige Tage später auf SO beantwortet: Ftplugins + lokale Mappings / Abkürzungen / Befehle sind der Weg zu gehen.

Verwenden Sie zum Aufruf von javac einfach% <, um den Dateinamen ohne die Erweiterung zu erhalten. Eine erste korrekte Abbildung wird somit:

:nnoremap <buffer> <f5> :!javac %<<cr> 

Stattdessen verlassen Sie sich lieber auf den Quickfix-Modus mit:

:setlocal makeprg=javac\ $* :nnoremap <buffer> <f5> :make %<<cr> 
3
jtimberman

Ich habe keine direkte Erfahrung mit Vim von Grund auf so etwas zu schreiben, aber hier möchten wir nach Beispielen suchen, die folgen sollen.

Sie möchten wahrscheinlich ein Dateityp-Plugin (ftplugin) für .java-Dateien:

Ein Dateityp-Plugin ist wie ein globales Plugin, legt jedoch Optionen fest und definiert Zuordnungen nur für den aktuellen Puffer. Siehe | add-filetype-plugin | wie dieser Plugin-Typ verwendet wird.

Und benutze es mit einem Mapleader + Hotkey:

Um ein Mapping zu definieren, das die Variable "mapleader" verwendet, kann die spezielle Zeichenfolge "" verwendet werden. Sie wird durch den Zeichenfolgewert "mapleader" ersetzt. Wenn "mapleader" nicht gesetzt oder leer ist, wird stattdessen ein Backslash verwendet. ... Um ein Mapping zu definieren, das die Variable "mapleader" verwendet, kann die spezielle Zeichenfolge "" verwendet werden. Sie wird durch den Zeichenfolgewert "mapleader" ersetzt. Wenn "mapleader" nicht gesetzt oder leer ist, wird stattdessen ein Backslash verwendet.

Sie können sich die Vim JDE-Skripts oder dieses Handbuch zum Konfigurieren von Vi (m) für Java-Entwicklung ansehen . Diese Seite enthält einige Informationen zur Verwendung von Javac in Vim.