skywind3000 / vim-terminal-help

Small changes make vim/nvim's internal terminal great again !!
MIT License
246 stars 32 forks source link

TerminalToggle 打开之后,切换到其他buffer,再次调用TerminalToggle异常 #4

Closed lwllvyb closed 4 years ago

lwllvyb commented 4 years ago

环境信息:vim 8.2 版本:27af49b 问题复现:

  1. vim 随便打开一个buffer
  2. TerminalToggle() 打开terminal
  3. 切回之前的buffer
  4. 再次调用TerminalToggle()

    我能想到的修复方案 TerminalClose 函数中: exec "normal ". wid . "\<c-w>w" close `` 改为 exec "close ". bid ` 之后,就没有问题了 (@skywind3000 不知道这么改有没有问题)

skywind3000 commented 4 years ago

具体操作是啥?出现什么异常?我没法复现你说的问题。

lwllvyb commented 4 years ago

忽略这个问题,脑子抽风,做如下映射 nnoremap <C-w> :call TerminalToggle()<cr> 导致递归调用了: TerminalToggle -> TerminalClose -> exec "normal ". wid . "\w" close ``

lwllvyb commented 4 years ago

发现一个新问题,复现操作:

  1. vim new-buffer
  2. call TerminalToggle() 打开 terminal
  3. 返回 terminal normal 模式
  4. call TerminalToggle() 关闭 terminal
  5. 退出 vim messages 信息如下: Messages maintainer: Bram Moolenaar Bram@vim.org E947: Job still running in buffer "!/bin/zsh" "!/bin/zsh [Terminal]" [Modified] line 2 of 2 --100%-- col 1
skywind3000 commented 4 years ago

这不是问题,你读读说明嘛,是防止你中断进程用的,emacs 进程没退出完你想关闭也会类似提示。

lwllvyb commented 4 years ago

好的,多谢回答