如何在插入模式下撤消按Ctrl-U以避免意外丢失我的工作

时间:2019-07-09 22:30:00

标签: vim

如果您像我一样,经常use Ctrl+Shift+U to enter special characters(例如 Ctrl + Shift + U 2014 输入),您可能偶尔不小心弄错了时间,而是按 Ctrl + U + Shift 在按住 Ctrl 的同时按 U ,但在按 Shift 之前)。

(对我来说,用手指更容易发胖,因为我通常用左手(使用Dvorak)用这三个键全部按一下,这样我就可以将右手放在他们的主键上。)

但是,如果您在“插入”模式下犯了此错误,则可能会无意间永久丢失整个输入行,而无法收回。等一下,w!?

Ctrl + U “删除当前行中光标之前的所有输入字符。”请参见:help i_CTRL-Uthis question

Esc U 不会撤消此删除操作,就像如果我已删除带有 d d的行一样kbd>。 (即使在不离开插入模式的情况下,即使按 Ctrl + O U 也不起作用)。

不用说,如果您只花了几分钟或一个小时就撰写了一段很长的段落(如果您没有插入任何换行符,它将被视为一行)而没有离开插入模式,这可能非常沮丧而沮丧地徒然按下 u ,希望使您的电话恢复正常,但让它恢复到甚至更早的 撤消状态!当您完全意识到现在必须尝试记住刚刚编写的内容并重新编写时,您对可信赖的编辑器vim的信心突然变得支离破碎。

我可以想到一些解决方法来尝试使编辑更安全,例如尝试记住经常退出插入模式,以便创建新的撤消块(请参见:help undo-blocks)。 ..

但是我不应该必须仔细地构图。只要单词一直在流动,我应该就可以继续写作(即不离开插入模式就继续写作)。 (可以肯定地说,大多数编辑器都没有这个问题。在大多数编辑器中,“撤消”会一次撤消一个字符的更改,因为他们无法将多个字符组合为一个“插入”字符)。

由于我可能不记得要如此小心,因此最终,我现在只是在插入模式下完全禁用了Ctrl-U的使用,

imap <C-U> <Nop>

但是我想知道的是,是否有任何合适的方法可以使Ctrl-U仍然可以正常工作,以防万一我想使用它,但可以创建一个撤消状态 em>,以便可以使用 U 轻松撤消此删除操作。这可能吗? (为什么这不是默认行为?)

0 个答案:

没有答案