LINUX.ORG.RU

Как устранить странности vim: что за @

 


0

2

Пришлось просматривать обфусцированный код большого объёма. Графические текстовые редакторы пренеприятно притормаживают. А vim не тормозит и вообще хороший редактор. Я бы только им и пользовался если бы не ряд странностей к которым никак не могу привыкнуть. Одна из них - почему при наличии длинной строки показывается только начало строки а потом на весь экран пустые строки начинающиеся на @: http://s30.postimg.org/w90q835ox/snapshot1.png

Можно ли это как то настроить что бы показывалось продолжение строки.

Ещё одна странность с которой сталкивался раньше - при вставке из буфера обмена Shift+Insert идентация в начале строк становится всё больше и больше. Для чего это сделано и можно ли как то настроить?


при вставке из буфера обмена Shift+Insert идентация в начале строк становится всё больше и больше. Для чего это сделано

Не «для чего», а «почему». Вы, вероятно, зачем-то в Иксах запускаете сперва эмулятор терминала и только в нем Вим. S-Ins перехватывает первый, и обрабатывает по собственному разумению.

и можно ли как то настроить?

Можно, конечно, но достаточно не запускать Вим в эмуляторе.

Zmicier ★★★★★
()

почему при наличии длинной строки показывается только начало строки а потом на весь экран пустые строки начинающиеся на @

То не начало, а отдельная короткая строка.

Можно ли это как то настроить что бы показывалось продолжение строки.

set display+=lastline

Ещё одна странность с которой сталкивался раньше - при вставке из буфера обмена Shift+Insert идентация в начале строк становится всё больше и больше. Для чего это сделано и можно ли как то настроить?

Vim считает, что это вводит пользователь и обрабатывает соответственно. Надо делать так:

:set paste
<shift-insert>
:set paste!
При желании можно это забиндить, может даже плагин такой где-нибудь есть.

xaizek ★★★★★
()

Можно ли это как то настроить что бы показывалось продолжение строки.

Чтоб показывалась часть строки на самом деле.

set display=lastline
Zmicier ★★★★★
()
Ответ на: комментарий от xaizek

Шутишь? Есть автоматическая настройка:

" -+ Autopaste:

let &t_SI .= "\<Esc>[?2004h"
let &t_EI .= "\<Esc>[?2004l"
inoremap <special> <expr> <Esc>[200~ XTermPasteBegin()
function! XTermPasteBegin()
  set pastetoggle=<Esc>[201~
  set paste
  return ""
endfunction
поставил и забыл.

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

Шутишь?

Я же написал:

При желании можно это забиндить, может даже плагин такой где-нибудь есть.

" -+ Autopaste:

И это для терминала (плюс надо править для screen/tmux), а на скрине gvim.

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

И это для терминала

Да.

(плюс надо править для screen/tmux)

Нет, не нужно.

gvim

Это не важно.

kep
()
Ответ на: комментарий от xaizek

Не на скрине у меня vim в mate-terminal. Но есть и gvim, в терминале тоже удобно бывает запускать в некоторых случаях.

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

А, видимо, я слишком привык к тому, что терминал тёмный.

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

set display+=lastline помог но есть один ньюанс. Если нажимаешь кнопку «вниз» курсор сразу перескакивает на следующую за длинной строкой строчку а не как в kedit например строка хоть и очень длинная но кнопками вверх/вниз можно двигать курсор через её части на которые она разбита что бы уместиться в ширину на экране. А вот в vim-е что бы переместиться например к середине этой длинной строки придётся долго и упорно нажимать кнопку «направо» (->).

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

курсор сразу перескакивает на следующую

См. ответ andreyu. Аналогичное для стрелок можно сделать, хотя и j/k должно быть достаточно. Плюс vnoremap для визуального режима.

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

можешь дать образец файла, с которым испытываешь проблемы?

kep
()
Ответ на: комментарий от iluha16

Это nnoremap j gj nnoremap k gk куда писать?

В ~/.vimrc, где все настройки.

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

когда <Esc> жмешь, задержку выжидаешь?

Нет конечно, выключает моментально.

А какое это имеет отношение к автопасте? Что с ней, что без неё дефолтное значение timeoutlen=1000 , но у меня специально для тмукса и вообще стоит:

set timeoutlen=100

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