2012-07-12 82 views
0

錯誤我今天跑了一個有趣的命令,看起來像 vi filename | vi -。 它讓我的終端卡住了,即使Ctrl-C沒用。 我不得不關閉終端。 我試了幾次,並嘗試在我的朋友機器上。只是想知道爲什麼Ctrl-C也無法提供幫助。vim和unix管

回答

3

vi從標準輸入讀數。

當您編輯viCtrl + c也不起作用。

:q:q!將在正常的vi會話中工作。

+0

謝謝!我有時會設法調用'vim file | foo',這似乎也掛斷了終端。 – plaes 2015-02-01 10:50:40

1

使用POSIX函數信號()C程序可以選擇如果有鍵盤中斷該怎麼做。

下面是一個例子(從this site複製):

#include <stdio.h> 
#include <stdlib.h> 
#include <signal.h> 

FILE *temp_file; 
void leave(int sig); 

main() { 
    (void) signal(SIGINT, leave); 
    temp_file = fopen("tmp", "w"); 

    for(;;) { 
     /* 
     * Do things.... 
     */ 
     printf("Ready...\n"); 
     (void)getchar(); 
    } 

    /* cant get here ... */ 
    exit(EXIT_SUCCESS); 
} 

/* 
* on receipt of SIGINT, close tmp file 
*/ 
void leave(int sig) { 
    fprintf(temp_file,"\nInterrupted..\n"); 
    fclose(temp_file); 
    exit(sig); 
} 

但你可以看到,六不使用鍵盤中斷退出。無論您是否在管道中使用它都沒關係。

0

Vi截取ctrl-c(它幾乎相當於esc),因此ctrl-c將無法​​在該設置中退出應用程序。

我可以從陷阱離開使用ctrl-z,然後使用kill %