在Neovim中能否将内置终端命令输出重定向至支持切换自动换行的普通缓冲区?
解决Neovim内置终端输出转普通缓冲区并控制自动换行
当然可以实现,直接把命令输出定向到普通缓冲区就能解决终端长行复制的问题,下面是几种实用方法:
直接读取命令输出到新缓冲区
不需要打开终端,直接在Neovim的命令行执行::new | r !你的命令比如执行
ls -l查看详细文件列表::new | r !ls -l这会新建一个普通缓冲区并加载命令输出,之后你可以用
:set wrap开启自动换行,或者:set nowrap关闭,长行复制完全不受影响。自定义快捷映射简化操作
如果你经常需要这么做,可以在配置文件(init.vim或init.lua)里加个映射,比如:" Vimscript 配置 nnoremap <leader>t :new | r !或者Lua版本:
-- Lua 配置 vim.keymap.set('n', '<leader>t', ':new | r !')之后按
<leader>t(默认是反斜杠),输入要执行的命令回车,就能快速得到带输出的普通缓冲区。 终端内容转普通缓冲区(已执行命令的情况)
如果已经在终端缓冲区执行了命令,想要把输出移到普通缓冲区:- 按
<C-\><C-n>从终端模式切回普通模式 - 用
v或V选中需要的输出内容 - 按
y复制到寄存器 - 执行
:new新建缓冲区,按p粘贴内容
之后同样可以切换自动换行状态。
- 按
终端缓冲区的自动换行是终端模拟的固有特性,没法通过:set nowrap禁用,所以转到普通缓冲区是最直接的解决方案,既能保留命令输出,又能灵活控制换行状态。
内容的提问来源于stack exchange,提问作者mike27
相关产品推荐
相关产品推荐

