2013-04-18 23 views
8

Vim crea nuovi file quando diamo il nome di un file non esistente. Questo non è auspicabile per me, dato che a volte ho dato un nome di file sbagliato e non ho intenzione di aprire un file, e poi chiuderlo.Come impedire a Vim di creare/aprire un nuovo file?

C'è un modo che impedirà a Vim di aprire nuovi file? Ad esempio, quando lo faccio vi file1, si dovrebbe dire File doesn't exist e rimanere sul terminale bash (senza aprire vi finestra)

risposta

4

È possibile aggiungere questa funzione al file .bashrc (o equivalente). Controlla che gli argomenti della riga di comando esistano prima che invochi vim. Se si desidera veramente creare un nuovo file, è possibile passare --new per sovrascrivere i controlli.

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

E 'solo salvare il file se si utilizza una scrittura un'opzione (ad esempio :w o :x, equivalente di :wq) .

Uscire con :q e nessun file verrà creato.

+3

Grazie. Ma voglio evitare quei tasti in più (': q') + sorpresa di vedere un file vuoto. Vorrei solo rimanere sul terminale. – user13107

+1

'vim notexistencefile' non crea' notexistencefile' ma crea lo stesso buffer denominato. ': q',': q! 'e' ZQ' in questo caso si esce da Vim senza alcuna operazione di scrittura di file. –

Problemi correlati