繁体   English   中英

Vim:如何删除空白行中的空格?

[英]Vim: how to delete whitespace in blank lines?

如何使用vim检测包含空格的空白行并删除空格?

例如,我用表示空格:

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

是否有vim命令将上面的代码转换为以下代码?

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


function(1)
: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.

我有一个函数可以解决此问题并保持光标位置

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 实际上,您可以更改它以满足您的需求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM