Я пытаюсь выяснить, как удалить всю строку в командном режиме. Я вижу много примеров .vimrc с:

cnoremap <C-a>  <Home>
cnoremap <C-b>  <Left>
cnoremap <C-f>  <Right>
cnoremap <C-d>  <Delete>
cnoremap <M-b>  <S-Left>
cnoremap <M-f>  <S-Right>
" This doesn't delete a word as I'd expect
cnoremap <M-d>  <S-Right><Delete>

Все они работают, как и ожидалось, за исключением <M-d> . Я ожидаю, что действительно удаляют целое слово, но оно просто переходит к концу и удаляет один символ. Есть ли <Delete Word> или <Delete Line>?

1 ответ1

2

В командной строке (как в режиме вставки) команда для удаления целого слова в обратном направлении - это <C-w> а команда для удаления всей строки до тех пор, пока курсор не будет <C-u> . Их не так сложно напечатать, так что я не думаю, что вам вообще следует их переназначать. Тем не мение…

"delete word, backward
cnoremap <M-d> <C-w>

"delete word, forward
cnoremap <M-d> <S-Right><C-w>

Но если вы много редактируете в командной строке, вы должны заглянуть в окно командной строки: нажмите <C-f> чтобы отредактировать текущую команду, или q: чтобы открыть окно командной строки напрямую.

:help cmdline-widow
:help cmdline-editing

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .