2013-04-18 17 views
8

Vim yeni dosyalar oluşturur. Bu, bazen yanlış dosya adı verdiğim ve bir dosya açma niyetinde olmadığımdan ve sonra da kapattığımdan, benim için istenmeyen bir durumdur.Vim, yeni bir dosya oluşturmayı/açmayı nasıl durdurur? Biz olmayan bir varolan dosyanın adını verdiğimde

yeni dosyalar açılmasını Vim duracak bir yolu var mı? Ben vi file1 yapmak Örneğin, bu File doesn't exist demeliyim ve (örneğin :w veya :x, :wq eşdeğer) seçeneği bir yazma kullanırsanız sadece dosyayı kurtaracak

cevap

4

Sen .bashrc (veya eşdeğeri) için bu işlevi ekleyebilir. Komut satırı argümanlarının vim çağırmadan önce var olduğunu kontrol eder. Gerçekten yeni bir dosya oluşturmak istiyorsanız, kontrolleri geçersiz kılmak için --new'u geçebilirsiniz.

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

(açılış vi penceresiz) bash terminalde kalmak .

yerine :q ile çıkın ve hiçbir dosya oluşturulur.

+3

teşekkürler. Ancak bu ekstra tuş vuruşlarından (': q') + boş bir dosya görmekten şüphe etmekten kaçınmak istiyorum. Terminalde kalmak isterim. – user13107

+1

'vim notexistencefile'' oluşturmak notexistencefile' ama aynı adlı tampon oluşturmaz. ': q',': q! 've' ZQ', bu durumda herhangi bir dosya yazma işlemi yapmadan Vim'den çıkmaktadır. –

İlgili konular