簡體   English   中英

如何從 VIM 在新選項卡中打開終端?

[英]How to open a terminal in new tab from VIM?

當我使用 4 個文件時,所有文件都在選項卡(VIM)中打開。 我想保存更改並編譯它而不必關閉選項卡,即我想在新選項卡中打開一個終端以及現有的 4?

我應該如何在 VIM 中執行此操作?

:tab ter

在新選項卡中打開終端,而不是像:ter那樣在新窗口中打開終端。 您還可以使用等效的更長的:tab terminal形式。

在此 Reddit 帖子中感謝用戶 wolloda。

額外的信息

  • 使用Ctrl-dexit終止 shell 會關閉終端緩沖區。

  • Ctrl-w NCtrl-\ Ctrl-n將緩沖區置於終端正常模式:擊鍵不轉發到 shell,但 Vim 使用正常緩沖區(盡管 shell 作業仍在運行)。 然后,您可以使用gt更改選項卡,鍵入 Ex 命令,例如:ls等。要使終端緩沖區恢復活力, i , a , ...

  • 如果你要映射它,我推薦使用:tab ter++kill=hup ,這樣當你:qa終端作業不會阻止 Vim 退出。 這是正常終端仿真器在關閉時發送給其工作的信號。

  • 對於終端模式映射,請使用tnoremap ,例如

    tnoremap <S-Tab> <CW>:tabprevious<CR> tnoremap <CN> <CW>N

有關:help :terminal:help :tab的更多信息。

2019 年,vim 現在有了終端模式。

:help terminal

例如,您可以像這樣使用它。

# go to terminal-job mode
:terminal

# go to terminal-normal mode
ctrl-w N

# go back to terminal-job mode
i

Vim 8.1現在有一個內置終端,可以用 :term 命令打開。 這提供了與其他 Vim 功能更完整的集成。


原答案:

我建議查看tmuxscreen 我自己使用 tmux,並且與vim-tmux-navigator一起在終端和 vim 之間移動非常容易。

一種更像 vim 的方法是使用:make

:制作

  • :make將執行'makeprg' 它默認make哪個是 C 項目中的佼佼者
  • 運行:make后,quickfix 列表將包含任何錯誤。
  • 通過:compiler命令設置你的編譯器。
  • 可以像這樣傳遞額外的參數:make foo-command
  • 當前文件名可以用%表示。 例如:make %

快速修復列表

  • 使用:cnext:cprev在錯誤之間移動。
  • :copen在窗口中打開快速修復列表( :cclose關閉)
  • :cwindow僅在出現錯誤時打開快速修復列表窗口
  • 可能想為:cnext和朋友使用更好的映射。 我建議 Tim Pope 的unimpaired插件

替代品和插件

  • 只需使用<cz>暫停 vim 並運行您的構建系統。 (缺點:在快速修復列表中松散)
  • 使用:! 編譯。 (與暫停相同的缺點)例如:!make
  • Syntastic是一個語法檢查系統,可在保存時檢查文件
  • Dispatch可用於在后台運行事物。 非常適合測試套件
  • 正如@brettanomyces 提到的,您可能需要考慮終端多路復用器,例如tmuxscreen
  • SingleComplile嘗試使用:make完成一些工作

結論

如果您剛剛開始,我建議您學習如何使用:make和 quickfix 列表。 有一個很好的Vimcast插曲介紹了快速修復列表: 使用 :vimgrep 搜索多個文件 此外,Syntastic 是一種快速啟動和運行 linter 的好方法。

除了關於標簽

Vim 的選項卡與大多數文本編輯器選項卡不同。 它們更像是一組窗口/拆分的視口。 此外,Vim 以緩沖區為中心,而不是像大多數編輯器那樣以選項卡為中心。 因此,在沒有選項卡的情況下,使用 quickfix 列表之類的功能通常會更容易(如果必須使用選項卡,請參閱:h 'switchbuf )。 Vim 的選項卡經常妨礙使用拆分,因為有更好的窗口和緩沖區導航命令可用。 我個人打開了許多文件(有時超過 100 個),不使用選項卡,平均使用 1-2 次拆分,沒有任何問題。 底線:學習有效地使用緩沖區

如需更多幫助,請參閱以下內容:

:h :make
:h 'makeprg
:h quickfix
:h :cnext
:h :cope

我特別在尋找這樣的東西。

在選項卡中打開所有文件。 然后通過ctrl z切換到終端模式,播放所需內容,然后在終端中鍵入fg返回到選項卡模式。

對於使用NeoVim的任何人:

投票最高的答案使用:tab ter 這在 NeoVim 上不起作用(至少對我來說)。 但是,它仍然相當簡單:

:tabe term://bash

tabe是打開etab並編輯文件。

term://是一種 NeoVim 打開終端的方式

bash是您想要使用的那種 shell(例如我使用 zsh,所以我的命令實際上是:tabe term://zsh

我創建的一些有用的命令:

" open terminal
if has('nvim')
    command Terminal vsplit term://zsh
    command TerminalTab tabe term://zsh
else
    command Terminal vert term
    command TerminalTab tab ter
endif

另一種方式

Ctrl-w:

這讓我進入命令行,然后可以輸入 tablast tabnext 或 tabprevious

或短版 tabl、tabn、tabp

或者這樣:

Ctrl-w gt 和 Ctrl-w gT(下一個選項卡和上一個選項卡)

或 Ctrl-w Number gt(用於特定選項卡)

這也有效。

暫無
暫無

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

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