Видаліть пробіл для набору рядків у редакторі Vim


12

У файлі є такий текст, як наступний:

  sample text
    some random text
            even more random text
text with no indent
 worst indention

Мені потрібно видалити порожній пробіл перед кожним із рядків. Для одного рядка те, що я роблю, - це 0dw

Я можу повторити ту саму команду, використовуючи. але ручним переходом до наступних рядків.

Але чи є спосіб застосувати '0dw' до цих блоків рядків?

Я думаю, що існує спосіб використання макросів, але я раніше не використовував їх. Але я готовий їх вивчити, якщо це не інший вибір.


+1 приємне запитання, я закінчую багато того самого. І ласкаво просимо на сайт.
Сардатріон - проти зловживання ДП

Відповіді:


10
:%s/^\s\+
" Same thing (:le = :left = left-align given range):
:%le

Докладніше тут на http://vim.wikia.com/wiki/Remove_unwanted_spaces

Якщо ви хочете зробити це для певного діапазону ліній:

:19,25s/^\s\+//

BTW, найкращий спосіб почати вивчати vim - це виконувати vimtutorкоманду, він навчить вас використовувати Vim у редакторі Vim.


1
: le було дивовижним і дякую за альтернативи та посилання :)
saiy2k

3
+1 за згадку про вімпутора, а також за хорошу відповідь.
Сардатріон - проти зловживання ДП

1
Виберіть відповідні лінії, використовуючи Vта переміщуючи курсор навколо, щоб розширити вибір рядка. Потім натисніть, :щоб автоматично увійти '<,'>, і звідти ви можете скористатись зворотним куточком Нікіла.
UncleZeiv

1
Ще один спосіб робити діапазон ліній (оскільки я завжди забуваю номери рядків) - позначити два рядки та оперувати позначками. Наприклад, перейдіть до рядка 19 і натисніть 'ma', перейдіть до рядка 25 і натисніть 'mb', а потім зробіть :'a,'bs/^\s\+//.
Патрік

7

Альтернативний спосіб зробити це - використовувати засоби відступу VIM (як правило, пов'язані з </ >). Спочатку вам потрібен якийсь спосіб вказати, які рядки будуть впливати. Ви можете використовувати режим візуального вибору або будь-який інший спосіб визначення діапазону ліній, на які впливає, а потім використовувати довільно високий рівень чи рівень відступу для видалення. 9<Зазвичай, хитрість дуже добре видаляє щонайменше 9 рівнів можливого відступу (вкладок / пробілів) з поточного рядка.


3

У мене є підхід зробити це простими наступними кроками:

1. press `v` to go to visual selection mode
2. select the lines you want to affect
3. :'<,'>normal 0dw

Пояснення третього кроку:

0 переходить до початку рядка.

dw видаляє слово (порожні пробіли).

normalзастосовує команду 0dw.

'<,'> повторює нормальне для всіх обраних рядків у візуальному режимі.


1

ctrl+vдозволяє робити щось подібне до того, що ви хочете, але не точно. Ви можете вибрати візуальний блок і застосувати одну команду до партії.


2
Я вибрав ці рядки в блоковому режимі, і ця команда спрацювала: '<,'> normal 0dw
saiy2k

1
@ saiy2k :normalтут важлива річ, і я думаю, що це найкраща відповідь тут. Чи можете ви опублікувати це як відповідь?
Жил 'ТАК - перестань бути злим'
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.