GVim работает очень медленно при редактировании файлов на доле окон

На моем компьютере на работе любое время я открываю файл, расположенный на сетевом ресурсе, GVim становится абсолютно неприменимым. Просмотр документа может занять 15 секунд для движения одной "страницы". Даже использование ключей перемещения для движения от одного слова до другого может занять 2 - 3 секунды. Это, кажется, новое поведение, но ни за что в жизни я не могу помнить изменять что-либо, что вызвало бы его. У меня создается впечатление, что Vim на самом деле не получает доступ к файлу за исключением открытого и на сохранении. Это правильно?

12
задан bshacklett 20 January 2010 в 18:40
поделиться

4 ответа

Файл подкачки не имеет к этому никакого отношения. У меня локальный файл подкачки, но проблема все еще не решена. Я использую Process Monitor от SysInternals.com и обнаружил плохое поведение при попытке открыть "\ server \ TestTool \ foo \ ReadMe.TXT"

. Сначала он пытается создать файл CreateFile (также известный как Directory open) на "\ serve \". Обратите внимание, что последний символ отсутствует. Это приведет к истечении 4 секунд с сообщением «OBJECT PATH INVALID».

Затем он пытается CreateFile на "\ server \ TestToo \". Имя сервера правильное, последняя буква "TestTool" обрезается. И снова 3-секундный тайм-аут с "ПЛОХОЕ НАЗВАНИЕ СЕТИ".

Наконец он понимает это и вызывает CreateFile на "\ server \ TestTool \", который сразу же работает. Затем CreateFile на "\ server \ TestTool \ foo", который сразу работает. Затем CreateFile на "\ server \ TestTool \ foo \ ReadMe.TXT", который сразу работает.

ПОЧЕМУ он пытается использовать неправильные имена для сервера и корневого каталога ??? Что это за безумие?

5
ответ дан 2 December 2019 в 07:02
поделиться

Вы можете рассмотреть возможность установки Bearfile плагин. Он отключает пару функций, влияющих на производительность.

1
ответ дан 2 December 2019 в 07:02
поделиться

Как насчет макро-трюки?

Испытали код ниже

  • проверено с динамиками - работали нормально
  • , проверенные подклассы - Предупреждение! сломается, я согласен, что это делает трюк не так полезно, но все же я думаю, что он рассказывает о том, как Objc работает ...

myclass.h

@interface MyClass : NSObject {
#ifdef MYCLASS_CONTENT
    MYCLASS_CONTENT // Nothing revealed here
#endif
}
@property (nonatomic, retain) NSString *name;
@property (nonatomic, assign) int extra;
- (id)initWithString:(NSString*)str;
@end

myclass.m

// Define the required Class content here before the #import "MyClass.h"
#define MYCLASS_CONTENT \
  NSString *_name; \
  int _extra; \
  int _hiddenThing; 

#import "MyClass.h"

@implementation MyClass
@synthesize name=_name;
@synthesize extra=_extra;

- (id)initWithString:(NSString*)str
{
    self = [super init];
    if (self) {
        self.name = str;
        self.extra = 17;
        _hiddenThing = 19;
    }
    return self;
}

- (void)dealloc
{
    [_name release];
    [super dealloc];
}

@end
-121--4538104-

Существует несколько факторов, которые могут повлиять на это.

Во-первых, убедитесь, что у вас есть настройка VIM, чтобы предпочтить хранение локально. Если ваш $ Home находится на местном диске, я склонен ставить это в мой VIMRC (который будет либо в $ Home \ _VIMRC или $ vim \ _vimrc ). Убедитесь, что вы создаете этот каталог, в противном случае VIM будет продолжать использовать один из других каталогов в списке.

set directory^=$HOME/tmp

Это добавляет каталог $ HOME / TMP к началу списка, который VIM проверяет, где размещать SwapFiles.

Во-вторых, сделайте то же самое для файла резервного копирования, который VIM создает. Такая же ситуация, как указано выше, но вариант, который вы будете изменяться, является Backupdir вместо каталога .

В-третьих, убедитесь, что вы отключите плагин MatchParen. Этот плагин новый для Vim 7, поэтому вы можете использовать для использования более старой версии VIM. Это вызывает частую сканирование файла для сопоставления Parens, брекетов и т. Д., Что может резко медленно поборовывать, когда файл находится в доме сети. Опять же, это должно идти в вашем Vimrc.

let g:loaded_matchparen = 1

Если вы хотите временно отключить плагин, вы можете использовать команду : NOMATCHPAREN , а затем : DomautchParen , чтобы повторно включить его позже в этом сеансе VIM.

Наконец, если ни одна из этих помощи вы всегда можете всегда скопировать файл локально и редактировать его.

10
ответ дан 2 December 2019 в 07:02
поделиться

Продолжение ответа jamessan: чтобы автоматически отключать плагин при редактировании файлов в общей папке, введите эту строку в себя _vimrc

autocmd BufReadPre //* :NoMatchParen
2
ответ дан 2 December 2019 в 07:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: