在Vim/Neovim中运行C程序无法接收用户输入该如何解决?
解决方案
问题原因
你当前使用的:!调用方式默认不为运行的程序分配完整交互终端,对于需要读取用户输入的程序会出现无响应、无法接收输入的问题,该现象在Neovim中尤为常见。
通用修复方案(适配Vim 8+、Neovim所有版本)
直接使用Vim/Neovim内置终端运行程序,原生支持完整交互能力,替换你配置中的F12映射即可:
nnoremap <F12> :w<CR>:terminal ./%<<CR>
额外说明
- 按下F12后会自动打开终端缓冲区,你可以直接输入内容,按回车即可看到程序回显,按下
Ctrl+D(Linux/macOS/WSL)或Ctrl+Z(Windows)即可发送EOF结束程序 - 要在终端缓冲区输入内容,按
i进入输入模式即可正常输入;要回到Vim普通模式操作缓冲区,按Ctrl+\ Ctrl+N即可 - 如果你坚持使用
:!方式运行,需要注意标准输入默认是行缓冲,输入内容后要先按回车才会将内容传给程序,结束输入同样按上述EOF快捷键即可
内容的提问来源于stack exchange,提问作者airismything
相关产品推荐
相关产品推荐

