NERDBUDE

[ code. keyboards. terminals. cyber. ]

[HOWTO] [WHOAMI] [PODCAST] [ENGLISH]

VIM VI

INTEGRATION

Die Artikelüberschrift könnte verwirren es geht nicht um "Vim vi" sondern um den 6. Part der NERDBUDE-Vim-Reihe. Dieser Part wird nicht unbedingt für alle spannend sein. Auf meinen Systemen versuche ich sämtliche Tasks im Terminal zu erledigen. Das spart Ressourcen, geht schneller und kann perfekt per Tastatur erledigt werden (das Faible sollte bekannt sein). Vim selber bietet zwar die Möglichkeit einer GUI aber die schließen wir hier aus. Wenn nun alles im Terminal erledigt werden soll schau ich mir mal an, wie weit sich Vim in den täglichen Workflow integrieren lässt. Nun nutze ich hier NixOS (hochperformant) mit XMonad (klein, schnell und komplett per Tastatur steuerbar) und als Interface diverse mechanische Tastaturen. Also alles darauf ausgelegt meine Hände möglichst wenig zu bewegen. Vim kann dabei ein wertvoller Schnittpunkt sein um Tools zu bedienen ohne den Editor verlassen zu müssen oder um Vim so zu biegen bzw. zu benutzen, um mir Zwischenschritte und Speicherplatz zu sparen.

SSH

Im Zuge eines kleinen Projekts (einene Cyber-Walkman-Podcastplayer - kommt bald.) oder auch nur beim Bearbeiten von Files auf nem Raspberry Pi gibt es zwei Möglichkeiten.
Per SSH auf dem Raspi die Files bearbeiten. Nachteil: Vim muss erst konfiguriert werden und das kostet Zeit. Option 2: File runterladen, bearbeiten und wieder auf den Raspi schieben. Schon deutlich besser aber immernoch zu viele Schritte.

Nun hat der liebe @cubadonis die letzten Tage, als Reaktion auf einen Tweet bzgl. der Vim Reihe hier, eine Möglichkeit geantwortet die, die Zwischenschritte deutlich eindampft.
Per "scp" (secure copy) können Files per SSH an oder von Servern zu denen Zugang vorhanden ist transferiert werden.
Wieso also nicht die Anweisung Vim soll eine Datei per SSH von einer Remote-Instanz direkt in einen Buffer laden und beim Speichern auch direkt wieder per SSH auf den Server schreiben.
Kling unfassbar kompliziert, ist aber echt einfach. Die Befehle dafür sehen so aus:

TERMINAL
vim scp://user@server:port//pfad/zur/Remotefile


Dadurch wird Vim geöffnet und in Vim direkt "scp" inkl. Passwortabfrage für den SSH Connect. Wenn ihr das Passwort eingegeben habt, seht ihr das File in Vim und könnt es bearbeiten. Beim Speichern des Files mit ":w" wird erneut das Passwort abgefragt und direkt remote auf den Server weggespeichert. Vim-Magic at its best. Danke Cuba - kannte ich noch nicht - werde ich jetzt täglich benutzen.

LINUX TERMINAL

Beim schreiben von Skripten oder Programmen, wollen die natürlich auch regelmäßig getestet werden. Nun ist es in meinem Fall unter XMonad recht einfach kurz ein neues Terminal zu initialisieren (Mod + Enter). Es gibt aber auch die Möglichkeit direkt in Vim ein neues Terminal zu starten und dort mit den bekannten Commands zu arbeiten. Das kann über zwei Wege erfolgen:

VIM / NORMAL MODE
:! <command>
:term <command> (ab Vim 8.0)


Die erste Option ":! <command>" sagt Vim mit dem Befehl ":!", dass ein Terminal Command folgt und ausgeführt werden soll. Wenn der Befehl ausgeführt wird, wird Vim selber aber in den Hintergrund geschoben und erst wenn der Befehl abgeschlossen ist, erscheint Vim wieder im Vordergrund.
Die mMn. bessere Variante ist ":term". Dieses Vim-Command ist ab ver8.0 von Vim verfügbar. Der Vorteil ist hier offensichtlich. Vim wird nicht in den Hintergrund geschoben, sondern das Terminal wird als Split-Window in Vim initialisiert. Mit "STRG + W" kann dann normal zwischen Editor und Terminal Fenster gewechselt werden. Das ermöglicht das parallele Arbeiten an dem File und das Testen im Terminal. Also quasi das Terminal in Vim im Terminal.

GIT

Auch oft im Einsatz: git. Die gute alte Versionskontrolle auf der auch GitHub und Gitlab aufbauen. Vim kann in einfachen Grundsätzen schon mit "git" umgehen. Wie im Abschnitt oben, können wir uns ein Terminal in Vim öffnen und dort per "git" Terminalcommands arbeiten. So bleibt Vim immer schön geöffnet und muss dafür nicht verlassen werden. Ein kleines bisschen mehr integration in Vim bringt aber ein Plugin namens "Vim-Fugitive". Vim-Fugitive ermöglicht die Benutzung von git-Commands in Vim selber. Das plugin kann bequem per Pathogen benutzt werden (PART IV). Wenn "Vim-Fugitive" installiert ist, kann git direkt in Vim benutzt werden.

VIM / NORMAL MODE
:Git
:G


Das aktiviert die Funktionalität des Plugins, gefolgt von dem speziefischen Git Command das ihr haben wollt:

VIM / NORMAL MODE
:G add
:G commit
:G diff
:G log 
:G blame
:G status


... und so weiter. Also den vollen Git-Funktionsumfang in Vim.

TWITTER

Jap richtig. Twitter ist wichtig und gehört zum täglichen Leben und ja Twitter gibts auch für Vim.
Hier leider nicht von vornherein in Vim integriert aber zum Glück per Plugin benutzbar. Das Plugin gibt es hier: twitvim. Um TwitVim benutzen zukönnen braucht es nach der Installation nur folgendes Commando (und ich schreib es hier dazu weil ich jedesmal ewig suchen muss :) ):

VIM / NORMAL MODE
:SetLoginTwitter


Hier wird euch dann eine ShortURL generiert auf die Ihr geht und ihr müsst nur noch die Auth-Nummer in Vim eingeben und schon könnt ihr Twitter bequem in Vim lesen aber auf tweeten, suchen usw. Bedient wird TwitVim per Commands im NORMAL Mode:

:PosttoTwitter
:FriendsTwitter
:RepliesTwitter
:UserTwitter
:RefreshTwitter


Eigentlich sind die Commands recht selbsterklärend, aber hier zur Vollständigkeit noch die Erklärung:
:PosttoTwitter - Nach der Bestätigung des Commands werdet Ihr mit "tweet:" aufgefordert euren Tweet-Text einzugeben.
:FriendsTwitter - Zeigt alle Tweets der Leute denen ihr folgt
:RepliesTwitter - Zeigt eure Replies.
:UserTwitter - Zeigt die Tweets eines bestimmten Users
:RefreshTwitter - Aktualisiert die Timeline die ihr grade anschaut.

So sieht das ganze dann aus:



Plugins wie NERDTree und VimWiki hatte ich ja hier schon näher beschrieben: PART 4
Auch hier sei noch mal VIM AWESOME erwähnt, ich denke egal was ihr sucht, hier findet ihr es.

FAZIT

Diese kleine 6-teilige Reihe sollte reichen, um Vim produktiv benutzen zu können. Die Grundlagen wie Navigation, Copy & Paste, Markierungen aber auch einen Schritt tiefer in Form von Plugins und Modes sollten nachvollziehbar sein. Vim ist ein Kaninchenbau mit vielen Abzweigungen. Egal was ihr überlegt mit Vim zu machen, es wird möglich sein und mit Hilfe von Plugins ist das meist auch relativ einfach in Vim integriert. Es wird bestimmt nicht der letzte NERDBUDE Post über Vim sein (ich bau gerade am Unit-2 Theme für Vim - wird natürlich alles hier auftauchen). Wenn mir noch andere Sachen zu Vim über den Weg laufen werden die hier natürlich auch mit reingepackt. Nun aber viel Spaß mit Vim und der "wunderbaren" Lernkurve von Vim.




//EOF