如何使用vim将css选择器中的所有属性设置为一行?
这是我的css文件的css部分如何使用vim将css选择器中的所有属性设置为一行?,css,vim,Css,Vim,这是我的css文件的css部分 body{ width:1100px; height:800px; } div.main{ margin:20px auto 0 auto; background-color:#f7f7f7; } 我想把它改写如下 body{width:1100px;height:800px;} div.main{margin:20px auto 0 auto;background-color:#f7f7f7;} 所有属性和值仅重写为一行,是否
body{
width:1100px;
height:800px;
}
div.main{
margin:20px auto 0 auto;
background-color:#f7f7f7;
}
我想把它改写如下
body{width:1100px;height:800px;}
div.main{margin:20px auto 0 auto;background-color:#f7f7f7;}
所有属性和值仅重写为一行,是否有smarty vim命令来执行此任务?您可以使用
J
或gJ
(不添加空格的替代)命令。它们可以在视觉模式下运行,以连接所有选定的行,或进行计数
或者,该插件根据您的要求提供对css规则的特定支持。将光标放在css块的第一行上,键入gJ
将整个块连接成一行
无论哪种方式,您都可能希望/需要在加入行之前运行替换以删除前导空格-:s/^\s\+/
编辑:我想一个不使用插件的“智能”方法是使用以下宏:vf}:s/^\s\+/^MgvgJ
(^M
意味着按enter键-您可能需要手动输入宏才能获得此结果)。通过将光标放在要重写的css规则顶部行的开头来使用它。一个选项是
g/{/,/}/j
它分解为
g start a global command
{ search for {
,/}/ for each match, set a range up until the }
j join the range
请注意,这可能是幼稚的。这不考虑嵌套括号。您可能首先要为要更改的文本块设置一个可视范围。正如@romainl所说,您应该使用缩小器。然而,我将假设您真正想要的是一种快速浏览css规则的方法。如果是这样的话,我建议你研究一下折叠@吕克·赫米特(Luc Hermitte)在《华盛顿邮报》上就这一问题发表了评论: 下面是@Luc Hermitte答案的一个变体。将以下内容放入
~/.vim/ftplugin/css\u fold.vim
:
let b:width = 25
" Use the following mappings to adjust the foldtext "columns"
nnoremap <silent> <buffer> >s :<c-u>let b:width+=v:count1<cr><c-l>
nnoremap <silent> <buffer> <s :<c-u>let b:width-=v:count1<cr><c-l>
if !exists('*s:CssFoldText')
function! s:CssFoldText()
let line = printf("% *s {", -1*b:width, substitute(getline(v:foldstart), "{\s*$", "", ""))
let nnum = nextnonblank(v:foldstart + 1)
let lst = []
while nnum <= v:foldend
let line = line . " " . substitute(getline(nnum), "^\s*", "", "")
let nnum += 1
endwhile
return line
endfunction
map <SID>xx <SID>xx
let s:sid = substitute(maparg("<SID>xx"),'xx$','', '')
unmap <SID>xx
endif
exe "setlocal foldtext=" . s:sid . "CssFoldText()"
setlocal foldmethod=syntax
使用缩小器。
:h folds
:h 'foldtext'
:h 'foldmethod'
:h za
:h zR
:h zM