Відповіді:
Ви можете просто замінити будь-який послідовний пробіл у рядку новим рядком за допомогою команди :s/\s\+/\r/g
. \s\+
середній один або кілька символів пробілів, і \r
це символ нового рядка см :help :substitute
і :help regexp
для деталей. Якщо ви запускаєте команду в такому рядку, як:
foo bar baz
Ви отримуєте:
foo
bar
baz
Якщо ви hlsearch
ввімкнули і не хочете захаращувати екран скрізь виділеними пробілами, ви можете написати таку функцію, як наступна, щоб уникнути цього:
function! SplitLineNicely()
" Save previous value of last search register
let saved_last_search_pattern = @/
" :substitute replaces the content of the search register with the `\s\+`
" pattern highlighting all whitespaces in the file
substitute /\s\+/\r/g
" Restore previous search register
let @/ = saved_last_search_pattern
endfunction
\r
, див :help s/\r
. Це може бути замінено буквальним набором нового рядка <c-v><cr>
. У цьому контексті \n
нульовий символ, див :help s/\n
.
replaces the content of the register
- який реєстр?
Використання vim
заміни 's, мабуть, є одним з кращих способів виконання поставленого завдання, але ви також можете використовувати макрос. Припустимо, у нас є такі дані, з курсором десь у рядку 1:
1 a b c d e f
~
Починаючи у звичайному режимі, натискання qqпочне записувати макрос, який можна викликати через @q. Все, що набрано після qqцього, буде повторюватися за допомогою вищезгаданого дзвінка. Наша мета - записати звичайні команди, які будуть загальними для забезпечення безперебійного повторення.
Таким чином, ми можемо набрати 0курсор до початку рядка, а потім fspaceперемістити курсор у перший пробіл. Це дозволяє нам потім набрати renter, в результаті чого:
1 a
2 b c d e f
~
Удар qзараз - це гарна ідея, оскільки наш макрос для багаторазового використання готовий до повторення. Дещо довільно зазначимо, що для заміни новими рядками залишилось 4 пробіли. Таким чином, натискаючи, 4@qми повторюємо q
макрос 4 рази, в результаті чого:
1 a
2 b
3 c
4 d
5 e
6 f
~
Зверніть увагу , що з - за того , як ми створили макрос, він був би в безпеці , щоб повторити команду більше 9000 разів, як це буде впливати тільки на поточний рядок, і так як не було ніяких прогалин праворуч від останнього запису даних, fspaceбуде "красиво" не вдається, не даючи замінити дані новими рядками.
Тож повторимо з початку:
qq0fspacerenterq9001@q
забезпечує наш результат.
9001
на клавіатурі є клавіша для швидкого введення вашого імені користувача.
Найпростіший спосіб, який я знайшов для розділення рядків у Vim, - це команда звичайного режиму gq
(введіть обидві літери швидкою послідовністю у звичайному чи візуальному режимі).
У візуальному режимі він розділяє все, що вибрано, у звичайному режимі ви рухаєтесь gq
рухом.
Наприклад, gql
розділить один рядок на задану в даний час ширину. Для того, щоб встановити ширину розщеплених ліній буде відрізнятися від поточної настройки, ви можете використовувати :set textwidth=n
, де n
це кількість символів , які ви хочете в рядку, наприклад, 10
і зміна назад до нормальної ширини , коли ви закінчите.
Отримав цю інформацію з Youtube- відео від Холідфу, який показує, як з'єднати та розділити лінії в звичайному режимі за допомогою руху.