簡體   English   中英

當我嘗試從我的 bash 腳本在后台運行 vim 時的奇怪行為

[英]Weird behaviour when I try to run vim in background from my bash script

我需要使用循環打開 vim 中的 20 個文件,這是我創建的循環:

for i in {1..20}
    do
    vim FILE$i &
    done

在此之后,我希望我有 20 個 vim 的作業在后台運行。 實際結果是循環中的隨機 FILE 在 vim 中運行,當我嘗試輸入內容時,屏幕上不顯示輸入,我無能為力。 有時可以通過Ctrl+C取消。 那么為什么在我運行腳本時會發生這種情況,我應該如何使用 vim 在后台運行 20 個文件?

此外,當我嘗試在終端中運行vim FILE1 &時,即使運行超過 20 個進程,對我來說一切都很好

Vim,至少您調用它的方式,是一個基於終端的程序。 也就是說,它將終端置於合適的模式並向其寫入數據,通常包括某些轉義序列,以在屏幕上繪圖並以某種方式移動 cursor。

您遇到的問題是您有一個終端和二十個 Vim 實例。 您的 Vim 實例都希望控制和壟斷終端,並且它們都在為此而戰。 正如您所料,這不會產生有用的結果,因此,您可能不會對結果感到滿意。 沒有辦法避免這種情況,因為這通常是基於終端的程序的操作方式,並且對於所有基於終端的編輯器都是如此。

如果要編輯 Vim 中的 20 個不同文件,請在命令行中將它們作為 arguments 一次性傳遞,Vim 將在一個終端中打開所有這些文件。 該命令不應在后台運行。

如果您想以非交互方式運行一些 Vimscript,請將其放入文件中,例如script ,然后運行vim -es '+source script' FILE$i -e選項將 Vim 置於 ex 模式下,它只運行您通常以:開頭的命令(用於ex編輯器的命令),並且可以使用-s以非交互方式編寫腳本。 如果您適當地重定向它們的 output,這些命令可以在后台運行。

如果您的目標是做其他事情,您應該提出一個新問題,詢問如何做您想做的事情。 然后,我們可以就如何以有益的方式最好地實現您的目標為您提供建議。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM