[英]How to open a terminal in new tab from VIM?
當我使用 4 個文件時,所有文件都在選項卡(VIM)中打開。 我想保存更改並編譯它而不必關閉選項卡,即我想在新選項卡中打開一個終端以及現有的 4?
我應該如何在 VIM 中執行此操作?
:tab ter
在新選項卡中打開終端,而不是像:ter
那樣在新窗口中打開終端。 您還可以使用等效的更長的:tab terminal
形式。
在此 Reddit 帖子中感謝用戶 wolloda。
額外的信息
使用Ctrl-d
或exit
終止 shell 會關閉終端緩沖區。
Ctrl-w
N
或Ctrl-\ 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 功能更完整的集成。
原答案:
我建議查看tmux或screen 。 我自己使用 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
: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
返回到選項卡模式。
投票最高的答案使用:tab ter
。 這在 NeoVim 上不起作用(至少對我來說)。 但是,它仍然相當簡單:
:tabe term://bash
tabe
是打開e
新tab
並編輯文件。
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.