Какой ваш любимый метод сворачивания (или секретная техника) в Vim для HTML, Javascript и CSS? - PullRequest
6 голосов
/ 31 января 2010

Я использую что-то вроде этого: 1,40 fo, но я думаю, что это не самый эффективный способ.

Что у тебя?

Ответы [ 4 ]

8 голосов
/ 31 января 2010

Я использую foldmethod=marker и имею сопоставления для ввода <!-- {{{ --> и <!-- }}} -->, где я хочу, чтобы сгиб начинался и заканчивался. Я помещаю стартовый маркер в строку с тегом открывающего блока, как:

<div id="topmenu"> <!-- {{{ -->

поэтому, когда она сложена, я сразу вижу, что в ней содержится, без необходимости добавлять дополнительные комментарии.

Для CSS это еще проще, я просто использую foldmarker={,}, и все определения автоматически складываются, показывая мне очень четкий список всех классов, тегов и идентификаторов, которые я могу открыть, когда они мне понадобятся. На самом деле все мои CSS-файлы имеют эту строку в самом конце:

/* vim: set fdm=marker fmr={,}: */

Вы также можете визуально выбрать регион, который хотите сложить, и нажать zf, если хотите.

5 голосов
/ 31 января 2010

Я переключаюсь между отступом и маркером с этим в моем vimrc ..

let g:FoldMethod = 0
map <leader>ff :call ToggleFold()<cr>
fun! ToggleFold()
    if g:FoldMethod == 0
        exe 'set foldmethod=indent'
        let g:FoldMethod = 1
    else
        exe 'set foldmethod=marker'
        let g:FoldMethod = 0
    endif
endfun

Отступ работает нормально для большинства украшенных HTML, но я использую маркер для большого декларативного свертывания документов в стиле оглавления. В зависимости от того, кто написал файл, один будет работать лучше, чем другой, поэтому вам нужен быстрый доступ к обоим.

3 голосов
/ 31 января 2010

Лучший метод сворачивания для vim для html: используйте вместо haml . Лучший вариант для css: использовать sass вместо .

Я на самом деле серьезно. Они делают его намного более компактным.

1 голос
/ 01 июля 2010

Я использовал foldmethod=ignore почти исключительно. Однако мое желание, чтобы игнорируемые линии по умолчанию были выше более высокого уровня сгиба выше или ниже линий вместо нижних, вдохновило следующее:

" Default foldmethod
" Similar to fdm=indent, but lets blank and comment lines default high.
set fen fdm=expr fdi=
set foldexpr=EswaldFoldLevel(v:lnum)

function! EswaldFoldLevel(lnum)
  let ignored = '^\s*\([#/*]\|$\)'
  if getline(a:lnum) !~ ignored
    " In the general case, just use the indent level.
    " It would be nice if it didn't skip several levels...
    return indent(a:lnum) / &sw
  endif

  let previndent = 0
  let prevnum = a:lnum - 1
  while prevnum > 0
    if getline(prevnum) =~ ignored
      let prevnum = prevnum - 1
    else
      let previndent = indent(prevnum) / &sw
      break
    endif
  endwhile

  let nextindent = 0
  let maxline = line('$')
  let nextnum = a:lnum + 1
  while nextnum <= maxline
    if getline(nextnum) =~ ignored
      let nextnum = nextnum + 1
    else
      let nextindent = indent(nextnum) / &sw
      break
    endif
  endwhile

  return max([previndent, nextindent])
endfunction

(Извините за подсветку синтаксиса ...)

Я использую это как пользовательский плагин, позволяя отдельным типам файлов переопределять его. Например, Python не хочет смотреть на предыдущие строки, только на следующие.

...