2017-05-07 49 views
1

當我編輯vivim中的文件時,我經常會編輯該文件,然後我需要打開一個shell來執行shell命令。所以,我通過做:sh去殼。如何知道何時使用shell在vi中打開文件?

這將我帶入殼。現在,當我想要返回到我正在編輯的文件時,我會頻繁地執行control + D來返回文件。這工作正常。我按照說明here

我在遠程AWS機器上做了很多工作,我將它們轉換爲ssh。而且,control+D是退出這些機器的一種方式。不幸的是,當ssh-d進入這些機器時,有時我不知道我是否在vi/vim中打開了一個文件,而當我做control + D返回到該文件時,它完全退出了我的ssh會話。

有沒有辦法要麼

  • 1)知道我目前在vi或
  • 2打開一個文件)退出shell並回到我的文件安全,而不用擔心不小心關閉我的SSH會議?
+0

是否有一個原因,你不能發送vi到ctrl-z背景,做你的shell工作,然後用''fg''恢復vi? – user2141130

+0

我從來沒有聽說過這個命令!那將是真棒! – Sother

回答

4

它看起來像你遇到的問題不是試圖找出vi是否正在運行,而是如何使用「作業控制」在父shell和vi之間跳轉(grep用於bash中的作業控制或sh手冊頁)。

使用ctrl-z背景vi並使用fg來恢復。這適用於所有POSIX派生的shell,它通過ssh工作。

這是優於使用:sh和Ctrl-d,因爲你避免您遇到的問題,你會得到你用,當你開始VI工作外殼一樣,你少了一個shell中運行(這ISN」通常是一個性能問題,但是如果你有很多運行的shell,那麼在需要時可以更容易地查看它們的PID)。

:sh可能還有其他一些原因,但我知道的唯一一個在vi會話中獲取shell並非從一個shell開始。

話雖如此,vi -r(沒有參數)打印一個交換文件列表,其中包含vi中打開的文件集合。像vi -r |& grep -B 3 'still running'這樣的命令很有用。

+0

對這是正確的 – Sother

0

您可以使用lsof +D <dir> | grep REG

會給你在你的目錄

打開您可以通過-u以及指定用戶更多的過濾所有的常規文件。

相關問題