LINUX.ORG.RU

vim: вставка текста по :set paste автоматом

 ,


0

1

Добрый день.

Нужно вставлять текст в vim, без :set paste текст по понятным причинам смещается, добавляются комментарии и т.д. Можно ли сделать так, чтобы при вставке текста не приходилось писать :set paste, а после вставки :set nopaste? То есть чтобы вообще ВСЁ что вставлялось из буфера обмена входило в редактор в режиме вставки?

Вот решение:

function! WrapForTmux(s)
  if !exists('$TMUX')
    return a:s
  endif

  let tmux_start = "\<Esc>Ptmux;"
  let tmux_end = "\<Esc>\\"

  return tmux_start . substitute(a:s, "\<Esc>", "\<Esc>\<Esc>", 'g') . tmux_end
endfunction

let &t_SI .= WrapForTmux("\<Esc>[?2004h")
let &t_EI .= WrapForTmux("\<Esc>[?2004l")

function! XTermPasteBegin()
  set pastetoggle=<Esc>[201~
  set paste
  return ""
endfunction

inoremap <special> <expr> <Esc>[200~ XTermPasteBegin()

Хак взят отсюда: https://coderwall.com/p/if9mda

★★★★★

Где-то в сети видел скрипт, отвечающий за автоматическое включение paste при вставке из буфера и выключение сразу после неё.

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

Ну и где там ответ на мой вопрос? Или по-твоему назначить биндинг клавише это эквивалент «автоматически»?

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

Видел, скока там вариантов? Думаешь, если бы можно было, то такая опция вообще существовала бы?

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

Ахаха, мы с тобой синхронно этот линк нашли :) Вот только зашёл чтобы опубликовать рабочий вариант.

Спсб!

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

То что ты назвал - не аргумент ни разу. Доказательство сообщением выше :)

soko1 ★★★★★ ()
Последнее исправление: soko1 (всего исправлений: 1)

Я забиндил :pastetoggle на хоткей и забыл о проблеме.
Но есть плагин pastering (за точность названия не отвечаю), вот он все это может + умеет хранить историю. Был в нем какой то косячок, из-за которого я его снес.

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