【发布时间】:2014-12-06 06:30:53
【问题描述】:
bash 的<c-k>: kill-line 特性,意思是杀死从当前光标位置到行尾的行。在vim命令行模式下编辑命令时如何做到这一点?
例如:
当在vim命令行模式中输入:echo 'hell|o world'这个命令并且光标在|位置时,如何杀死该行变成:echo 'hell?
【问题讨论】:
bash 的<c-k>: kill-line 特性,意思是杀死从当前光标位置到行尾的行。在vim命令行模式下编辑命令时如何做到这一点?
例如:
当在vim命令行模式中输入:echo 'hell|o world'这个命令并且光标在|位置时,如何杀死该行变成:echo 'hell?
【问题讨论】:
我发现this key binding in Shougo's vimrc 设置了 Ctrl+k 删除直到行尾:
" <C-k>, K: delete to end.
cnoremap <C-k> <C-\>e getcmdpos() == 1 ?
\ '' : getcmdline()[:getcmdpos()-2]<CR>
请注意,这不会像 bash 或 Emacs 中的等效绑定那样将其余行保留在寄存器中。
查看:h eval 以获取有关您可以在命令行上执行的操作的更多帮助。
【讨论】:
编辑命令行不应该发生在命令行本身,而是发生在编辑器中。
这就是为什么在 bash 中有 <C-x>e 而在 Vim 中有 <C-f>。
【讨论】: