2013-04-18 9 views
8

Vim erstellt neue Dateien, wenn wir den Namen einer nicht existierenden Datei angeben. Dies ist für mich nicht wünschenswert, da ich manchmal einen falschen Dateinamen gebe und nicht die Absicht habe, eine Datei zu öffnen und sie dann zu schließen.Wie kann ich verhindern, dass Vim eine neue Datei erstellt/öffnet?

Gibt es eine Möglichkeit, Vim daran zu hindern, neue Dateien zu öffnen? Zum Beispiel, wenn ich vi file1 tun, sollte es File doesn't exist sagen und bleibt auf den bash Terminal (ohne Öffnung vi Fenster)

Antwort

4

Sie könnten diese Funktion zu Ihrer .bashrc (oder gleichwertig) hinzufügen. Es überprüft, ob die Befehlszeilenargumente existieren, bevor es vim aufruft. Wenn Sie wirklich eine neue Datei erstellen möchten, können Sie --new übergeben, um die Prüfungen zu überschreiben.

vim() { 
    local args=("[email protected]") 
    local new=0 

    # Check for `--new'. 
    for ((i = 0; i < ${#args[@]}; ++i)); do 
     if [[ ${args[$i]} = --new ]]; then 
      new=1 
      unset args[$i] # Don't pass `--new' to vim. 
     fi 
    done 

    if ! ((new)); then 
     for file in "${args[@]}"; do 
      [[ $file = -* ]] && continue # Ignore options. 

      if ! [[ -e $file ]]; then 
       printf '%s: cannot access %s: No such file or directory\n' "$FUNCNAME" "$file" >&2 
       return 1 
      fi 
     done 
    fi 

    # Use `command' to invoke the vim binary rather than this function. 
    command "$FUNCNAME" "${args[@]}" 
} 
5

Es wird nur die Datei speichern, wenn Sie eine Schreib (zB :w oder :x, äquivalent :wq) Option .

Beenden Sie stattdessen mit :q und keine Datei wird erstellt.

+3

Danke. Aber ich möchte diese zusätzlichen Tastenanschläge vermeiden (': q') + Überraschung, eine leere Datei zu sehen. Ich möchte nur auf dem Terminal bleiben. – user13107

+1

'vim notexistencefile' erstellt nicht' notexistencefile', sondern erstellt denselben benannten Puffer. ': q',': q! 'und' ZQ' in diesem Fall beenden Sie einfach von Vim ohne jede Datei Schreibvorgang. –