В моем плагине vim я получаю текущую позицию курсора, используя Ruby's w.cursor
.Получить позицию курсора, учитывая вкладки
Номер столбца, который он дает мне, основан на табулине 1. Например. если текущая строка равна \t\tfoo
, а курсор находится на f
, ее позиция будет отображаться как 3.
То, что мне нужно, - это позиция курсора, основанная на табуляции 8 (поскольку это указывает стандарт Haskell). Итак, в приведенном выше примере мне нужно, чтобы номер столбца f
был равен 17, независимо от ts
.
Как это получить?
IIUC, чтобы получить то, что я хочу (позиция, основанная на 'ts = 8'), мне нужно будет установить, а затем сбросить' ts'. Я беспокоюсь, что это может привести к мерцанию экрана, потому что vim переформатирует код, когда я меняю 'ts'. Есть ли способ обойти это? –
Нет! Ruby 'w.cursor [1]' соответствует 'col ('.')' В Vimscript. Вместо этого вам нужно использовать 'virtcol ('.')'. –
Да, я понимаю, что 'virtcol' намного ближе к тому, что мне нужно, чем' w.cursor' или 'col'. Моя проблема заключается в том, что результат «virtcol» зависит от настройки 'ts'. Мне нужен результат, рассчитанный для 'ts = 8' независимо от того, что пользователь действительно установил' ts'. Но изменение этого приведет к мерцанию. –