什么是相当于emacs的vim' CTRL-K?

时间:2014-08-18 11:39:59

标签: vim

如何在vim的插入模式下从当前光标位置删除到行尾?

我知道您可以在命令模式下使用D执行此操作,并且我知道您可以使用ctrl-u从光标位置删除插入模式中的行的开头,所以我猜这应该是可能的。

4 个答案:

答案 0 :(得分:7)

如果您处于插入模式并且想要执行单个普通模式命令,则可以按:

CTRL + O

执行普通模式命令后,您将返回插入模式。所以,你可以这样使用 D

CTRL + O d

答案 1 :(得分:0)

在VIM中没有内置的方法,但您可以像在Emacs中一样使用此地图在VIM中使用Ctrl + k:

inoremap <C-k> <Del>

但是,如果您想要使用VIM的内置有向图功能来编写特殊字符,则应使用不同的键绑定,例如。

答案 2 :(得分:0)

没有内置的等价物(据我所知)。

插入模式的最简单方法是使用Ctrl-O D

如果您想要将其映射到更容易记住的内容,您可能希望创建一个insert-mode mapping,这将允许您use the normal-mode D命令删除光标下的字符,直到行尾:

:inoremap <Leader>k <C-O>D

假设<Leader>是默认的\,您可以在插入模式下键入 \ k 来调用映射。

插入模式映射并非没有缺点,正如Kent在评论中指出但确实有其用途。

Ctrl-K用于在Vim中输入digraphs。我建议您不要尝试重新映射,尽管可以使用上述技术。

答案 3 :(得分:0)

如果您还希望将<C-k>绑定到命令行模式下的杀死行,则可以使用getcmdline()getcmdpos()函数:

cnoremap <C-k> <C-\>e(" ".getcmdline())[:getcmdpos()-1][1:]<CR>