3

Например, если у меня есть эта строка

printf("something\n"); // any comment

« da" дает мне:

printf(); // any comment

Но мне то, что я хотел бы:

"something\n"

2 ответа2

4

Эффективный ответ

Нажмите f"d^f"lD чтобы сохранить текущий объект в текущей строке, удалив остальные из них.

     f" - find "
     d^ - delete from current cursor position to start of line.
     l - move right
     D - delete from current cursor till end.(d$)

Вы также можете создать текстовый объект!

  :nmap de" f"d^f"lD               // de" - delete except double quotes.

Вы можете удерживать курсор в любом месте строки и нажать клавишу de" .

Редактировать: ранее написанный ответ

Вы можете нажать "sda" чтобы удалить текущий объект

Затем нажмите dd чтобы удалить текущую строку.

Затем нажмите "sp чтобы вставить текущий объект.

В общем, "sda"dd"sp чтобы сохранить текущий текст в текущей строке.

Вы можете сопоставить это с ключом, как,

     :nmap <F5> "sda"dd"sp
0
_ ................... jump to the first non-blank
f( .................. jump to parenthesis
yi( ................. yank inner ()
dd .................. delete line contents
"0p ................. paste yank register

nnoremap <F2> :exec 'normal _f(yi(dd"0p'<CR>

Изменение, чтобы избежать вставки новой строки

nnoremap <F2> :exec 'normal _f(yi(_dg_"0p'<CR>

Вместо использования dd с использованием _g_ Это позволяет избежать копирования возврата

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