Советы по использованию vim через медленное соединение? - PullRequest
18 голосов
/ 03 марта 2009

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

Ответы [ 15 ]

16 голосов
/ 03 марта 2009

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

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

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

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

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

12 голосов
/ 04 марта 2009

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

  • : он lazyredraw
  • : он ttyfast
  • : он nofsync
12 голосов
/ 03 марта 2009

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

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

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

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

12 голосов
/ 03 марта 2009

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

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

4 голосов
/ 07 марта 2009

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

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

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

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

3 голосов
/ 03 ноября 2009

Хитрость в выяснении причин, вызывающих проблемы с производительностью, состоит в том, чтобы отключить все в 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 и посмотрите, будет ли он иметь значение.

1 голос
/ 03 ноября 2009

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

1 голос
/ 28 апреля 2009

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

1 голос
/ 03 марта 2009

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

Редактировать: Это также может помочь из документации vim:

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

1 голос
/ 03 марта 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...