2013-04-18 16 views
8

Vim tworzy nowe pliki, gdy podajemy nazwę nieistniejącego pliku. Jest to niepożądane, ponieważ czasami podaję złą nazwę pliku i nie mam zamiaru otwierać pliku, a następnie go zamykać.Jak zatrzymać Vima przed utworzeniem/otwarciem nowego pliku?

Czy istnieje sposób, który powstrzyma Vima przed otwarciem nowych plików? Na przykład, kiedy robię vi file1, należy powiedzieć File doesn't exist i pobytu na terminalu bash (bez otwierania vi okna)

Odpowiedz

4

Możesz dodać tę funkcję do .bashrc (lub odpowiednika). Sprawdza, czy argumenty wiersza poleceń istnieją przed wywołaniem vima. Jeśli naprawdę chcesz utworzyć nowy plik, możesz przekazać --new, aby zastąpić czeki.

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

To uratuje tylko plik, jeśli używasz (np :w lub :x, odpowiednik :wq) opcja do zapisu .

Zamiast tego należy wyjść z :q, a plik nie zostanie utworzony.

+3

Dzięki. Ale chcę uniknąć tych dodatkowych klawiszy (': q') + niespodzianka zobaczenia pustego pliku. Chciałbym tylko zostać na terminalu. – user13107

+1

'vim notexistencefile' nie twórz' notexistencefile', ale stwórz ten sam nazwany bufor. ': q',': q! 'i' ZQ' w tym przypadku po prostu wyjdź z Vima bez operacji zapisu pliku. –

Powiązane problemy