Подтвердить что ты не робот

Советы по использованию vim через медленное соединение?

Я использую vim через медленное соединение, и это немного больно. Есть ли что-нибудь, что я могу сделать в vim, чтобы облегчить боль?

4b9b3361

Ответ 1

vi был создан для использования более 300 бод-модемов, поэтому для перемещения и навигации есть все эти смешные и странные (и короткие) команды. Изучите их...

Играйте с такими вещами, как

 :10 -> jump to line 10
 7j -> move 7lines down

И так как моя клавиатура имеет небольшую физическую точку на клавишах f и j, Я использую точку на клавише j, чтобы легко найти vim-навигацию "hjkl".

Но лучше всего никогда не прокручивать, поиск для перемещения - это спасатель жизни. Когда вы выполняете поиск указателя, вы попадаете прямо в ту вещь, которую ищете, что означает, что эти медленные навигационные системы не нужны. Это действительно полезно, если вы в конечном итоге редактируете действительно большие файлы по ssh...

Ответ 2

Вы можете попробовать установить timeout и ttimeout, таким образом Vim будет ждать, пока не будет получено полное отображение или последовательность клавиш.

Или вы можете увеличить значение timeoutlen, это время в миллисекундах, ожидающее завершения key code или сопоставленной последовательности клавиш.

Ответ 3

Немного вещей, чтобы посмотреть.

  • : он lazyredraw
  • : он ttyfast
  • : he nofsync

Ответ 4

Я думаю, что лучше всего отредактировать его локально и перенести файл. Это может быть автоматизировано таким образом, чтобы он чувствовал себя как редактирование удаленно:

http://vim.wikia.com/wiki/Editing_remote_files_via_scp_in_vim

См. также ответы на этот связанный вопрос:

Удаленное программирование

Ответ 5

При медленном соединении больно перемещать символ курсора по символу, потому что вы не получаете немедленную визуальную обратную связь, поэтому вы всегда слишком сильно перемещаетесь или слишком мало.

Итак, для меня наиболее эффективным является использование более умных движений и команд, например:

  • fx - перейти к следующей букве x
  • 5w - переместить 5 слов вперед
  • ci( - замените между скобками
  • dap - удалить текущий абзац
  • и длинный и т.д.

Я пропускаю эти команды все время, когда набираю текстовые поля браузера, например:)

Ответ 6

Трюк для разработки того, что вызывает проблемы с производительностью, - это отключить все в vim, а затем медленно вводить детали обратно до тех пор, пока вы не выясните, что вызывает проблемы с производительностью.

т.е. удалите (или переместите или переименуйте) следующие файлы/каталоги, чтобы быстро отключить:

  • C:\Program Files\Vim\_vimrc
  • C:\Program Files\Vim\vimfiles
  • C:\Program Files\Vim\vim72\autoload
  • C:\Program Files\Vim\vim72\plugin

В Unix/Linux/OS X эти файлы должны существовать:

  • ~/.vim/plugin
  • ~/.vim/autoload

Если вы не можете найти его в любом из этих мест, команда :version может показать вам, какие файлы .vimrc используются. Каталог плагинов должен быть рядом.


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

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

Я сделал это и обнаружил, что следующие плагины акций вызывают проблемы при использовании Vim через VPN:

  • matchparen.vim
  • netrwPlugin.vim
  • vimballPlugin.vim

Большинство проблем, с которыми сталкиваются эти плагины, - это добавление новых autocmds (например, во время BufEnter), которые плохо работают при редактировании удаленных файлов. Вы можете обнаружить, что у вас также есть свои собственные плагины, которые могут вызывать проблемы с производительностью.

Затем я написал функцию для удаления этих autocmds для удаленной работы:

let g:NotEditingRemotely = 1

function! s:ToggleRemoteFile()
    if exists("g:NotEditingRemotely")
        " Disable the matchparen.vim plugin"
        :NoMatchParen

        " Turn off detection of the type of file"
        filetype off

        " Disable the netrwPlugin.vim"
        au! Network
        au! FileExplorer

        " Remove tag scanning (t) and included file scanning (i)"
        set complete=.,w,b,u,k

        " Remove these autocommands which were added by vimBallPlugin.vim"
        au! BufEnter *.vba
        au! BufEnter *.vba.gz
        au! BufEnter *.vba.bz2
        au! BufEnter *.vba.zip

        unlet g:NotEditingRemotely

        :echo 'Remote Edit mode turned on'
    else
        " Enable the matchparen.vim plugin"
        :DoMatchParen

        " Turn on detection of files"
        filetype on

        " Add back in tag scanning (t) and included file scanning (i)"
        set complete=.,w,b,u,t,i,k

        let g:NotEditingRemotely = 1

        :echo 'Remote Edit mode turned off'
    endif
endfunction

command! -nargs=0 ToggleRemoteFile call s:ToggleRemoteFile()
noremap <F6> :ToggleRemoteFile<CR>

Вставьте vimrc и посмотрите, не изменилось ли оно.

Ответ 7

Vim был разработан для медленных соединений. Используете ли вы команды движения и операции выбора линии? Мое предложение состоит в том, чтобы отлично изучить ключевые части Vim от курсора.

Ответ 8

Моя рекомендация - отключить подсветку синтаксиса в vim. В частности, для больших файлов это делает vim более быстрым для меня. (:syntax off)

Изменить: это также может помочь из документации vim:

http://www.vim.org/htmldoc/term.html#slow-fast-terminal (похоже, что в опубликованных предложениях есть некоторые вещи из этого документа)

Ответ 9

Вы на SSH? Если это так, используйте сжатие SSH. ssh -C должен помочь совсем немного.

Ответ 10

Я не уверен, что это применимо, но если вы вообще настроены, и, вероятно, выйдете из системы, я буду использовать vim с "экраном". экран дает вам виртуальный терминал, с которым вы можете просто подключиться, если он выпадет, поэтому вы находитесь в окне vim.

Ответ 11

Можно потушить боль, используя быстрые клавиши для перемещения вверх и вниз по файлу и вдоль линий, но, как я часто встречался, делать что-либо на медленном соединении очень больно. Я нахожу, что, когда это возможно, я могу сэкономить много времени и разочарований scp, переместив файл на свою рабочую станцию, спокойно отредактировав его и загрузив обратно.

Ответ 13

Для повторных задач вы можете сопоставить последовательность команд с одним нажатием клавиши. Допустим, вы хотите найти и заменить слово (foo на bar), но не все его экземпляры

/foo
:map g cwbar^v^[n

Введите g, если вы хотите заменить, и n, чтобы пропустить

  • cw = изменить слово
  • ^ v = crtl + v, чтобы включить запись нажатий клавиш, таких как ESC и ENTER
  • ^ [= ctrl + ESC
  • n = следующий экземпляр строки поиска

Ответ 14

не устанавливайте опцию cursorline или colorcolumn. В противном случае vim будет значительно отставать.

Ответ 15

Использовать mosh: http://www.linuxscrew.com/2012/04/11/why-mosh-is-better-than-ssh/?replytocom=804158#respond

apt-get install mosh
yum install mosh
(or whatever appropriate command for your system)

А затем просто используйте "mosh" вместо "ssh".

Он был разработан для медленных подключений и от быстрого теста по моему медленному 3G-соединению, к серверу, он, похоже, поддерживает его довольно хорошо.

NB При подключении к нестандартному порту обязательно обновите/etc/ssh/ssh_config