Как вставить текст в начале многострочного выделения в vi / Vim?

использовать этот

int number = (int) Double.parseDouble(s);

378
задан SilverNak 20 June 2018 в 07:19
поделиться

11 ответов

  • Нажатие Esc для ввода Использования 'командного режима'
  • Ctrl + V для ввода визуального Перемещения блочного режима
  • / Вниз для выбора столбцов текста в строках Вы хотите прокомментировать.
  • Тогда поражает Сдвиг + я и вводят текст, который Вы хотите вставить.
  • Тогда поражает Esc , ожидают, 1 секунда и вставленный текст появятся на каждой строке.

Для получения дополнительной информации и чтение, проверьте эта похожая статья об энергии wiki .

667
ответ дан Jay Taylor 20 June 2018 в 07:19
поделиться
  • 1
    @LucDanton... +1 для выделения части тонкости. Я сознательно избежал bind для создания клиентского кода легким. Что еще более важно... На использовании Boost.Optional как стандартный блок... На работе я должен обработать оба SharedPtr, Optional (никакие необработанные указатели) и обертка [более чем 114]. Я думаю, Maybe, обертка уменьшает перегрузки. – zrb 8 October 2011 в 00:28

Общий шаблон поиска и замены:

:s/search/replace/

Заменяет первое вхождение слова «поиск» на «заменить» для текущей строки

:s/search/replace/g

Заменяет все вхождения 'search' на 'replace' для текущей строки, 'g' означает сокращение от 'global'

Эта команда заменит каждое вхождение 'search' на 'replace только для текущей строки. % Используется для поиска по всему файлу. Для подтверждения каждой замены в интерактивном режиме добавьте «c» для подтверждения:

:%s/search/replace/c

«Интерактивное подтверждение», заменив «поиск» на «замена» для всего файла

вместо символ%, вы можете использовать диапазон номеров строк (обратите внимание, что символ '^' является специальным символом поиска для начала строки) :

:14,20s/^/#/

Вставляет Символ «#» в начале строк 14-20

Если вы хотите использовать другой символ комментария (например, //), измените разделитель команд:

:14,20s!^!//!

Вставляет последовательность символов «//» в начале строк 14-20

Или вы всегда можете просто экранировать символы // как:

:14,20s/^/\/\//

Вставляет последовательность символов «//» в начале строк 14-20

Если вы не видите номеров строк в вашем редакторе, просто введите следующее

:set nu
79
ответ дан cyber-monk 20 June 2018 в 07:19
поделиться

Другой способ, который может быть проще для новичков:

 some█
 code
 here

Поместите курсор на первую строку, например,

: 1 Enter

и введите следующее, чтобы войти в режим вставки и добавить свой текст :

I / / Пробел

 // █some
 code
 here

Нажмите < kbd> Esc , чтобы вернуться в командный режим и использовать орграф:

j . j .

 // some
 // code
 //█here

j - это команда движения для перехода на одну строку вниз и . повторяет последнюю введенную вами команду редактирования.

34
ответ дан K.Dᴀᴠɪs 20 June 2018 в 07:19
поделиться

И еще один способ:

  • Перейти к началу строки
  • , перейти в режим визуального блока ( CTRL - v )
  • выберите нужные строки (перемещение вверх / вниз с помощью j / k или переход на строку с помощью [line] G )
  • нажмите I (это заглавная буква i)
  • введите символ (ы) комментария
  • нажмите ESC
24
ответ дан Hulk1991 20 June 2018 в 07:19
поделиться

Это добавляет # в начале каждой строки:

:%s/^/#/

И люди перестанут жаловаться на отсутствие у вас должным образом комментирующих сценариев.

17
ответ дан Alper Turan 20 June 2018 в 07:19
поделиться

Если вы хотите получить супер фантазию об этом, поместите это в ваш .vimrc:

vmap \c :s!^!//!<CR>
vmap \u :s!^//!!<CR>

Затем, когда в визуальном режиме вы можете нажать \c - c опустите блок и \u - u закомментируйте его. Конечно, вы можете изменить эти сочетания клавиш на что угодно.

14
ответ дан Lucas Oman 20 June 2018 в 07:19
поделиться

Еще один способ:

:'<,'>g/^/norm I//

/^/ - просто фиктивный шаблон для соответствия каждой строке. norm позволяет вам запускать команды нормального режима, которые следуют. I// говорит, что нужно войти в режим вставки, переместив курсор в начало строки, а затем вставить следующий текст (две косые черты).

:g часто удобно делать что-то сложное в нескольких строках, где вы можете переключаться между несколькими режимами, удалять или добавлять строки, перемещать курсор вокруг, запускать несколько макросов и т. Д. может сказать, что он работает только на линиях, которые соответствуют шаблону.

9
ответ дан Brian Carper 20 June 2018 в 07:19
поделиться

Для комментирования блоков кода мне нравится плагин NERD Commenter .

Выберите текст:

Shift-V
...select the lines of text you want to comment....

Комментарий:

,cc

Раскомментируйте:

,cu

Или просто переключите состояние комментария в строке или блоке:

,c<space>
3
ответ дан Kevin 20 June 2018 в 07:19
поделиться

В случае, если чей-то многострочный выбор фактически является абзацем, нет необходимости выбирать строки вручную. vim может сделать это за вас:

  1. vip: выделить и отметить весь абзац
  2. shift-i: вставить текст в начале строки
  3. escape : выйти из режима вставки / войти в нормальный режим [начало строки все еще выбрано]
  4. escape: отменить выбор строки
1
ответ дан TheUnseen 20 June 2018 в 07:19
поделиться

Это заменяет начало каждая строка с "//":

:%s!^!//!

Это заменяет начало каждая выбранная строка (используйте визуальный режим для выбора) с "//":

:'<,'>s!^!//!

Примечание , которое gv (в нормальном режиме) восстанавливает последний визуальный выбор, это время от времени пригождается.

172
ответ дан Tomalak 20 June 2018 в 07:19
поделиться

Я могу рекомендовать плагин EnhCommentify.

, например, помещенный это в Ваш vimrc:

let maplocalleader=','
vmap <silent> <LocalLeader>c <Plug>VisualTraditional
nmap <silent> <LocalLeader>c <Plug>Traditional
let g:EnhCommentifyBindInInsert = 'No'
let g:EnhCommentifyMultiPartBlocks = 'Yes'
let g:EnhCommentifyPretty = 'Yes'
let g:EnhCommentifyRespectIndent = 'Yes'
let g:EnhCommentifyUseBlockIndent = 'Yes'

можно тогда комментировать/не комментировать (выбранные) строки с', c'

2
ответ дан Benedikt Waldvogel 20 June 2018 в 07:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: