Для изменения текстовых объектов в Neovim / Tmux в Ubuntu требуется несколько экранирований - PullRequest
0 голосов
/ 17 июня 2020

Инструкции по воспроизведению :

  • в оболочке: ssh [ubuntu-ip] (в настоящее время я не могу подтвердить, если это необходимо)
  • в оболочке: tmux new-session nvim -u NONE
  • затем в neovim: i**[asdf]**<ESC>F[ca[asdf<ESC>

Результат : я остаюсь в режиме вставки, пока снова не нажму <ESC> (без тайм-аута) вместо возвращается в нормальный режим.


Следующий тест выполняется на MacBook и на рабочем столе Ubuntu 14.04 с vanilla vim и neovim (каждый с -u NONE, поэтому пользовательский vimr c в пустом безымянном файле, поэтому без типа файла), а также внутри и снаружи tmux .

Давайте определим XX как представляют собой повторяющийся символ в наборе *#^01, например ** или ##. Этот набор не является исчерпывающим, но, похоже, исключает альфы и пробелы, такие как a и .

Учитывая последовательность XX<my-cursor><text-object>XX, начиная с <my-cursor> в нормальном режиме, когда я делаю ca<text-object><some-text-to-insert><ESC>, в этих разных контекстах происходит следующее:

  • (с tmux или без него), (vim или neovim), s sh (localhost или desktop) из macbook: я возвращаюсь в обычном режиме.
  • (с tmux), (neovim), s sh (рабочий стол) из macbook: это сдвигает мой курсор на один пробел вправо, в <non-whitespace> и оставляет меня в режиме вставки ( НЕ ЖЕЛАТЕЛЬНО ). Мне нужен второй <ESC> для выхода из режима вставки.

Другими словами, нежелательное поведение возникает только с neovim , в tmux , на ( только мой?) Рабочий стол Ubuntu 14.04.

Конкретно, я могу воспроизвести это с помощью следующей строки: **[asdf]** где [...] создает текстовый объект. Аналогично с 11"asdf"11, где "..." создает текстовый объект.

Если я поставлю пробел перед началом или после конца текстового объекта, проблема не возникнет.


Версии как для MacBook, так и для ПК:

  • tmux v3.0a
  • neovim v0.4.3

tmux.conf как на MacBook, так и на ПК:

set-option -g default-terminal "screen-256color"
set -sg escape-time 10
set -g status-interval 10
set -g default-shell $SHELL 

Запуск :checkhealth в neovim дает (среди прочего)

## tmux
  - OK: escape-time: 10ms

, поэтому escape-time здесь не проблема.

...