我得到了 vim 的奇怪行为,但这可能与 st-terminal 有关,我无法使用Enteror Ctrl+Enter将当前行分成新行插入模式,如下例所示:
我在 vim 中有一行在 st-terminal 中打开:
This is a| test
|
是光标的位置。我想使用Enteror Ctrl+将行分成两行Enter,但我不能这样做; vim 以某种方式阻止我断线。
This is a
test
我的设置可能会改变Entervim 的行为,这些设置与“UltiSnips”插件相关,如下所示:
inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>"
inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"
inoremap <expr> <cr> pumvisible() ? "\<C-y>" : "\<cr>"
inoremap <expr> <Esc> pumvisible() ? "\<C-e>" : "\<Esc>"
let g:UltiSnipsExpandTrigger="<enter>"
let g:UltiSnipsJumpForwardTrigger = "<tab>"
let g:UltiSnipsJumpBackwardTrigger = "<s-tab>"
据我了解,上面的代码可能会Enter在插入模式下锁定断行。但不关心Ctrl+ Enter。
UltiSnips 可能锁定Enter在插入模式下。
我尝试安装xterm
并尝试;它也不起作用。
那么这可能与操作系统本身有关?我不知道。
我使用 Arch Linux、st-terminal、xterm、最新的 vim 8.1 / 1-374
.vimrc
编辑:我尝试删除、 和Enter+Ctrl中的上述代码Enter再次工作。
但我仍然需要启用 UltiSnips 插件。我该如何制作Ctrl+Enter打破这条线?禁用就可以了Enter。
我怀疑可能的 st 终端没有分开Ctrl+Enter和Enter; Ctrl+Enter回落到Enter,它实际上可能已设置为相同的“终端键码”?
我找到了一个解决方案:我注释掉这一行以启用回来Enter
let g:UltiSnipsExpandTrigger="<enter>"
答案1
终端应用期望字节。control+没有预定义的结果enter,并且您的问题不包含显示您期望的信息。一旦决定,就必须修改st
的源代码发送预期的字节序列。 (您可以对 xterm 的翻译资源执行相同的操作)。