簡體   English   中英

有沒有辦法讓 vim 在另一個終端 window 中運行“make”命令?

[英]Is there a way to make vim run the “make” command in another terminal window?

我主要使用 vim 作為 C/C++ 編程的編輯器。 不幸的是,我對構建過程的工作方式不太滿意。 我知道可以輸入(或 map 到一個鍵) :make來運行 make 過程。 不過,我不喜歡這個命令的工作方式,因為它在同一個終端 window 中運行構建過程而沒有正確突出顯示。 I therefore usually run the make command in another window on my second monitor so that I have both proper highlighting and can look at the build errors the compiler shows me in one window while scrolling through the source code in my main vim window. 這也很繁瑣,因為它需要我將焦點更改為另一個 window,然后輸入 make 命令。

現在,我的問題如下:是否可以讓 vim 在另一個 window 中運行 make 命令而無需更改焦點? 這樣,我只需 map 對 vim 中的某個鍵執行“在其他窗口中構建”命令,只需按一下按鍵即可實現所有這些。

我的系統是 Manjaro Linux,i3 作為 DWM。

(我不確定是否在 unix 論壇或此處發布此內容,如果這是錯誤的論壇,請原諒我。)

您可以通過使用 xdotool 和 i3 配置文件映射來實現此目的。 這些映射要求在 window 的終端向右執行的最后一個命令是make

set $prevR    xdotool key --clearmodifiers --delay 2 super+l ctrl+p Return super+h
set $prevRclr xdotool key --clearmodifiers --delay 2 super+l ctrl+l ctrl+p Return super+h

然后 map 將這些命令發送到您的首選鍵,例如:

bindsym --release Mod4+Shift+e exec --no-startup-id $prevR 
bindsym --release Mod4+e       exec --no-startup-id $prevRclr 
   

第一個映射將 window 上的上一個命令運行到當前命令。 第二個在第一次清除終端時執行相同的操作。 您需要將super+[lh]替換為您自己的映射,將焦點更改為您的備用監視器。 您可能還必須增加--delay以適應更改 windows 的延遲。

如果您還想填充快速修復列表,則必須在 vim 中單獨運行:make 通過這樣做,您既可以在備用顯示器上看到正確着色和格式化的錯誤,也可以使用:cnext:cprevious跳轉到 vim 中的下一個錯誤(有關更多信息,請參見:help quickfix.txt )。

如果要將 make 命令應用於任意 window,請查看手冊頁xdotool(1)的“WINDOW_STACK”部分。

暫無
暫無

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

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