LINUX.ORG.RU

vim и выравнивание новой строки между тегами

 ,


0

1

Короче. В других редакторах данное поведение давно реализовано.
Я нуб в Vim и скорее всего не нашел нормального решения, а искал долго.

До:

<div>|</div>

После нажатия CR:
<div>
|</div>

А хочу вот так:
<div>
    |
</div>

Просмотрены темы: https://vi.stackexchange.com/questions/18114/indent-on-new-line-between-html-xml-tags
https://stackoverflow.com/questions/18057421/vim-cursor-position-after-expanding-html-tag

Решения странные и неудобные.

Ответ на: комментарий от habamax

А по CR никак? Даже в Emacs есть. Я ползуюсь coc-emmet. Все настройки перерыл, не получается сделать такое поведение.

theLORdweller
() автор топика
Ответ на: комментарий от lyaliks_user

спасибо, не то. Мне с головой coc хватает. Мои хотелки ограничены типом tpope.

theLORdweller
() автор топика

Я пользуюсь таким решением. Оно?

inoremap <expr> <CR> Expander()

function! Expander()
  let line   = getline(".")
  let col    = col(".")
  let first  = line[col-2]
  let second = line[col-1]
  let third  = line[col]

  if first ==# ">"
    if second ==# "<" && third ==# "/"
      return "\<CR>\<C-o>==\<C-o>O"

    else
      return "\<CR>"

    endif

  else
    return "\<CR>"

  endif

endfunction
lead_bro
()
Ответ на: комментарий от habamax

я твою Аву встречал в паре плагинов Vim, пишешь? Тогда подправь, где ты считаешь, что функция сбоит. Будем признательны.

theLORdweller
() автор топика

Если у тебя «совсем новый вим», то попробуй:

inoremap <expr> <CR> search('\%.c</', 'n') ? "\<CR>\<ESC>O" : "\<CR>"

С обычным надо подставлять колонку:

inoremap <expr> <CR> search('\%'.col('.').'c</', 'n') ? "\<CR>\<ESC>O" : "\<CR>"

https://i.imgur.com/3wDeurC.gif

habamax ★★★
()
Последнее исправление: habamax (всего исправлений: 3)
Ответ на: комментарий от theLORdweller

я твою Аву встречал в паре плагинов Vim, пишешь?

да, балуюсь.

Тогда подправь, где ты считаешь, что функция сбоит. Будем признательны.

Эту функцию лень править, вон выше мой вариант.

habamax ★★★
()
Ответ на: комментарий от habamax

Расшифруй «совсем новый».

Спасибо большое. Vim не из git, поэтому второй вариант. Но планирую собрать и попробовать первый.

Ну и удачи в баловстве. Нужное дело. Я тоже балуюсь, но немного в другом направлении. Я нуб в редакторе.

theLORdweller
() автор топика
Ответ на: комментарий от lead_bro

Там col() используется которая дает колонку в байтах, а не символах.

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

habamax ★★★
()
Последнее исправление: habamax (всего исправлений: 1)
Ответ на: комментарий от theLORdweller

Расшифруй «совсем новый».

где-то 2-3х недельной давности, не помню номер патча.

habamax ★★★
()
Ответ на: комментарий от lead_bro

Короче, кому интересно и кто пользуется CoC in Vim…

я нарыл официальное решение:

посмотреть - :h coc#on_enter()

theLORdweller
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.