Vim: как удалить пробелы в пустых строках? - PullRequest
1 голос
/ 31 марта 2019

Как я могу использовать vim для обнаружения пустых строк, содержащих пробелы, и удаления пробелов?

Например, я использую для представления пробелов:

def⎵function(foo):
⎵⎵⎵⎵print(foo) 
⎵⎵
⎵
function(1)

Есть ли команда vim, которая преобразует приведенный выше код в следующий?

def⎵function(foo):
⎵⎵⎵⎵print(foo) 


function(1)

Ответы [ 2 ]

2 голосов
/ 01 апреля 2019

У меня есть функция, которая решает эту проблему и сохраняет положение курсора

if !exists('*StripTrailingWhitespace')
    function! StripTrailingWhitespace()
        if !&binary && &filetype != 'diff'
            let b:win_view = winsaveview()
            silent! keepjumps keeppatterns %s/\s\+$//e
            call winrestview(b:win_view)
        endif
    endfunction
endif
command! Cls call StripTrailingWhitespace()
cnoreabbrev cls Cls
cnoreabbrev StripTrailingSpace Cls
nnoremap <Leader>s :call StripTrailingWhitespace()

Вы можете использовать команду :cls или ярлык <leader>s.На самом деле вы можете изменить его в соответствии со своими потребностями.

2 голосов
/ 31 марта 2019
:g/^\s\+$/s/\s\+//

Объяснение:

g — execute the command globally (for all lines)
/^\s\+$/ — search lines that contain only whitespaces
s/\s\+// — for every found line execute this
           search and replace command:
           search whitespaces and replace with an empty string.

Может быть упрощено как

:%s/^\s\+$//

% — execute for all lines
s/^\s\+$// — search and replace command:
             search lines that only have whitespaces
             and replace with an empty string.
...