使用退格键以普通模式修改当前命令?


9

有时,在普通模式下输入命令时,您可能会打错字,例如,如果我打算打字10dk,可能会不小心开始打字19d

由于该命令尚未完成/提交,是否可以使用退格键删除不正确的键,例如:19d<backspace><backspace>0dk,而不必按Escape键重试该命令?

附带问题:数据结构中是否存在Vim术语,可在提交前保存当前命令?


1
可能会要求将其作为较新版本的功能!
SibiCoder


4
AFAIK不可能-但是,由于这些序列很短,因此我不确定该功能可以实现什么增益。当您必须重试整个序列时,至少您会被“强制”重复该序列,直到您没有犯此类错误为止;)(即-重复构建字符!双关语)。
VanLaser

1
@VanLaser Vimmer最糟糕的噩梦被“逼迫”重复一遍;)另外,我很讨厌打字并且键盘空白,所以在正确使用它之前,我把一个命令弄乱了256次并不罕见。
HellaMad

4
不好的打字员使用空白键盘会出现什么问题?
romainl '16

Answers:


3

无法做到这一点,并且没有办法,这是正常的:正常模式下的命令通常很短,Esc如果弄乱了可以取消。

可能的解决方法是使用:normal命令。它会使过程变长,但是例如,如果您:normal 10j在命令行中键入,Vim将10j像在普通模式下键入时一样执行。(请参阅:h :normal

您也可以将这些行添加到您的.vimrc

nnoremap <F4> :call NormalModeCommand()<CR>

function! NormalModeCommand()
    let command = input("Normal command: ")
    execute "normal " . command
endfunction

他们创建一个映射(在这里,F4但是使用您想要的任何东西),它将调用函数NormalModeCommand()

该函数允许您在命令行中键入字符串,然后执行以普通模式命令键入的字符串。在命令行中键入字符串时,可以像其他所有命令一样更正它。当然,这不是理想的选择,但Vim并非再一次这样做。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.