Wie kann ich vim von der Kommandozeile aus schließen?


46

Ich weiß, dass dies eher eine allgemeine Linux-Frage ist, aber w / e. Wenn ich also ein Programm wie vim in die Eingabeaufforderung eingebe, wird der gesamte Text in der Datei angezeigt, und ich kann ihn bearbeiten usw. Ich kann jedoch nicht herausfinden, wie die Datei geschlossen oder gespeichert wird, um zur Eingabeaufforderung zurückzukehren, ohne sie zu beenden der Prozess. Jede Hilfe wird geschätzt.




Antworten:


70

In vim gibt es 3 verschiedene Modi:

  • Einfügen - Ermöglicht das normale Eingeben und Bearbeiten
  • Visuell - wird zum Auswählen von Kopieren / Einfügen usw. verwendet.
  • Normal - Wird für Befehle verwendet

Um zum normalen Modus zurückzukehren, können Sie jederzeit drücken esc.

Sobald Sie sich im normalen Modus befinden Drücken Sie :, um den Befehl zu starten (Sie sehen ihn unten links). Die folgenden Befehle beziehen sich auf das Beenden von vim:

  • :q - Beenden, wenn keine Änderungen vorgenommen wurden
  • :q! - Beenden und zerstören Sie alle vorgenommenen Änderungen
  • :wq - Änderungen schreiben (speichern) und beenden
  • :x- :wqSchreiben Sie ähnlich wie beim Beenden die Datei nur, wenn Änderungen vorgenommen wurden

4
und :xist eine Abkürzung für:wq
Ward Muylaert

2
Sie haben gerade den "normalen" Modus vergessen. Beeindruckend. Tatsächlich kann die mode()Funktion in vim 18 verschiedene Werte zurückgeben.
Benoit

Wie von Benoit angedeutet, wird in dieser Antwort verwirrenderweise der Begriff "Befehlsmodus" verwendet, um sich auf das zu beziehen, was in der vim-Dokumentation als "normaler Modus" bezeichnet wird. In den vim-Dokumenten wird der Befehlsmodus als das betrachtet, was Sie durch Drücken von :im normalen Modus eingeben . Wenn Sie drücken esc, kehren Sie zum normalen Modus zurück. -1 für die Irreführung von Personen, die versuchen, die Standardterminologie zu erlernen (und folglich in der Lage sind, das Hilfesystem zu verstehen).
Intuited

6
@intuited Jeder kann Änderungen vorschlagen, was auf lange Sicht wahrscheinlich hilfreicher sein wird als eine Ablehnung und gute Ratschläge, die in den Kommentaren vergraben werden.
Michael Martin-Smucker

Vielen Dank für die Informationen, die auch irgendwo in VIM angezeigt werden sollten, damit man weiß, dass es so lächerlich ist, sie im Internet zu suchen.
Shridutt Kothari

14

Drücken Sie zuerst die escapeTaste. 1

Dann tippe einfach ZZ(das sind zwei große Zs in einer Reihe).
Oder geben Sie ein :x. Entweder werden alle Änderungen gespeichert und verlassen.
Sie können auch verwenden:wq

Alternativ können Sie Folgendes eingeben :q (auch bekannt als " Beenden, bitte "). Dies wird nur beendet, wenn Sie keine Änderungen vorgenommen haben.

Wenn Sie Änderungen vorgenommen haben und diese verwerfen und verlassen möchten, geben Sie Folgendes ein :q!(auch bekannt als " Quit, damn it !")

1 : Dies stellt sicher, dass Sie sich im "Befehls" -Modus befinden. Welche Sie für die Eingabe von Befehlen möchten, wie die, die zum Beenden benötigt werden.


4

Zu unseren Unannehmlichkeiten gibt es keine allgemeine Methode zum Beenden von Befehlszeilenprogrammen wie die Schaltfläche "X" für Grafikprogramme.

Viele Befehlszeilenprogramme verwenden zum Beenden entweder Q(z. B. manund top) oder Ctrl+ C(z. B. pingund watch). Dies variiert jedoch erheblich, insbesondere bei Texteditoren:

  • Insbesondere Vim verwendet die obskure Kombination von :q!damals Enter, in der Regel von mehreren Pressen vorangestellt, Escfür ein gutes Maß.
  • Emacs , ein weiteres Juwel, bevorzugt Ctrl+ Xgefolgt von Ctrl+ C.

Solche Redakteure sind Fallen für Unerfahrene. Meine persönliche Präferenz und Empfehlung ist, wenn ich gezwungen bin, Text in der Befehlszeile zu bearbeiten, stattdessen den selbsterklärenderen Joe's Own Editor (JOE) zu verwenden .


4
Eigentlich würde ich behaupten, dass dies nanoein viel universellerer selbsterklärender Konsolentexteditor ist.
Jondavidjohn

@jondavidjohn Ihre Behauptung ist strittig. Ich stimme zu, dass Nano zweifellos universeller ist, und ich behaupte nicht, dass es weniger selbsterklärend ist als JOE. Meine Vorliebe für JOE beruht auf dem erweiterten Funktionsumfang , und meine Empfehlung an unerfahrene Benutzer wird durch Feinheiten wie die Verwendung des Begriffs " Speichern" anstelle des archaischen " WriteOut" beeinflusst .
ændrük

Im Allgemeinen können Sie ^ Z verwenden, um den Vorgang anzuhalten. Dann können Sie es töten, ignorieren, in den Hintergrund stellen oder zurückbringen. (kill% 1 oder kill% x, bg, fg). Es gibt sowieso eine gewisse Einheit der Jobkontrolle.
Belacqua

3

Neben der Antwort von jondavidjohn finden Sie hier zwei Links, die wichtige Informationen zur Verwendung von vim enthalten.

  1. Dies ist eine Tastaturgrafik, die Ihnen zeigt, was die einzelnen Tasten tun, je nachdem, ob Sie sich im Bearbeitungsmodus, Befehlsmodus oder im visuellen Modus befinden:

    http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html

  2. Dies ist das beste vim Tutorial, das ich je durchgearbeitet habe. Es ist gesprächig und leicht zu verstehen, was an seinem IRC / Instant-Messaging-Format liegt.

    http://www.vi-improved.org/tutorial.php

Schließlich gibt es einige wie Aendruk, die einfach keine erweiterten Texteditoren für die Befehlszeile verwenden möchten. Vor allem Vim hat eine steile Lernkurve und muss sich erst einmal daran gewöhnen. Aber es ist sehr schnell und sehr mächtig. Wenn Sie Interesse an Linux haben, das über die grundlegende Desktop-Nutzung hinausgeht, lohnt es sich, Zeit in einen anständigen Texteditor für die Befehlszeile wie Vim oder Emacs zu investieren. Wenn Sie nur Text bearbeiten müssen und sich darüber hinaus nicht sonderlich darum kümmern, geben Sie gedit filename.txtstattdessen etwas ein. Es wird ein bekanntes grafisches Programm gestartet, ähnlich wie Notepad unter Windows.


@djeikyb: Ich weiß zu schätzen, dass Sie zwischen der grundlegenden Verwendung des Desktops und der erweiterten Textbearbeitung über die Befehlszeile unterscheiden. Ubuntus Stärke gegenüber anderen Linux-Distributionen liegt in der Fähigkeit, den Linux-Desktop für alltägliche Computerbenutzer zugänglich zu machen, denen der einzigartige Luxus, niemals wissen zu müssen, was Editoren wie Vim überhaupt sind, zunehmend vorenthalten wird.
ændrük

... Mit Blick auf diese besondere Freiheit entscheide ich mich, so weit über die traditionellen Linux-Befehlszeilenmethoden hinauszugehen, wie ich die Geduld für den alltäglichen Umgang mit Computern habe. Ich bemühe mich, nur einfache und zugängliche Werkzeuge zu verwenden, weil ich es mir leisten kann . Es wäre ungenau zu sagen, dass ich Befehlszeilen-Texteditoren einfach nicht mag. Im Gegenteil, ich mag Vim mit seinem VimOutliner-Plugin und bin ihm für seinen Einfluss auf das Vimperator / Pentadactyl-Projekt zu Dank verpflichtet.
ændrük

... Ich betrachte meinen persönlichen Gebrauch dieser Tools jedoch als Abweichung von der typischen Computernutzung. Ich bin der Meinung, dass es eine gesunde Entwicklung für die Ubuntu-Community wäre, Neulingen nicht so schnell nahezulegen, dass der gelegentliche Gebrauch fortschrittlicher Tools mit steilen Lernkurven die Norm für alltägliche Benutzer ist.
ændrük

@Letseatlunch, wenn Ihr Ziel darin besteht, Vim zu beherrschen, dann ermutige ich Sie auf jeden Fall, Ihr Streben danach fortzusetzen. Ich möchte nur darauf hinweisen, dass Ubuntu zwar viele derart fortschrittliche Tools bietet, die anderen Betriebssystemen insgesamt fehlen, das Erlernen ihrer Verwendung jedoch niemals Voraussetzung für die Verwendung von Ubuntu sein sollte.
ændrük

Tolle Aufklärung! Ich bearbeite meine Antwort, um dies besser widerzuspiegeln. Außerdem habe ich gedit über nano ausdrücklich empfohlen, da gedit eine höhere Ebene mit einer vertrauten Benutzeroberfläche hat und weil nano mich anfangs lächerlich verwirrt hat (was bedeutet das Caret-Symbol? Wie beende ich? Wie speichere ich?) . Was jetzt lustig ist, wenn man bedenkt, dass vim mein bevorzugter Editor ist.
djeikyb

2

wenn Esc :q!nicht klappt,

zuerst versuchen Ctrl+ q(um den mit Ctrl+ gesperrten Bildschirm zu entsperren s)

versuchen Sie es dann erneut Esc :q!(um das Programm zu beenden, ohne es zu speichern) oder Esc :wq(um es zu speichern und zu beenden)


0

Willst du ohne Speichern beenden:

  1. Schlagen ESC
  2. Schlagen ZQ

Beenden Sie mit Speichern:

  1. Schlagen ESC
  2. Schlagen ZZ
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.