Is it possible for vim navigation to be as quick as a normal point-and-click navigation? For example, I've taken the following example here where I've created four points that need to be clicked:
Without any practice or thinking, I'm able to click those four points in 3.9 seconds, video here. What would be the fastest that someone could get to those four locations in vim? I mean if someone were not to "think about it", i.e., just given four random points spaced across a screen what would be the fastest way to get there (fastest, as in lowest amount of time, not fewest keystrokes)?
I am a vim beginner, and my first attempt took about 40s (!!) -- https://gyazo.com/377ca4a30a12c0814ad8b6255b761075. Mostly due to trying to do a search and it basically starting from the top of the document every time. What would be some ways that this can be improved? Note: it seems like I had a bad search option (it was starting from the top of the file), so when I fixed that I was able to click the four points in about ~13.5s.
If helpful, here's the method if someone wants to use that for their answer (can insert ~1500 blank lines above the method):
def build_data(self, build_data=True):
processing_start_time = time.time()
log.info('Building data...')
self.begin_build_data()
if build_data is True:
self.pre_build_data()
self.update_status('URLS')
self._build_data()
self.post_build_data()
# Sample the Data to make sure it's OK -- underscores ignored
ACCEPTABLE_KEYS = set(['Platform', 'ArtworkURL', 'BaseURL', 'CollectionTitleIDs', 'Credits', 'CustomerRatingAverage', 'CustomerRatingVolume', 'EpisodeNumber', 'Genres', 'LanguageOfMetadata', 'Languages', 'Locales', 'Name', 'PlatformID', 'Products', 'ReleaseDate', 'ReleaseYear', 'RuntimeInMinutes', 'SeasonNumber', 'Studio', 'Synopsis', 'TVSeriesID', 'TrailerURL', 'Type', 'HighestResolution'])
for num, key in enumerate(self.data):
if unicode(key).startswith('_'): continue
if num % 20 == 0:
keys = set([i for i in self.data[key].keys() if not i.startswith('_')])
bad_keys = keys - ACCEPTABLE_KEYS
if len(bad_keys) > 0:
print bad_keys, key, keys
raise('Bad Keys Found!')
log.info('Finished building data in %s' % (time.time() - processing_start_time))
self.create_sorted_keys()
try:
items, avails = self.get_number_items_and_avails()
except:
pass # PS resets IP and breaks this.
data_file = '%s_%s.txt' % (self.date_stem, self.platform.lower())
log.info('Writing data to %s...' % data_file)
self._write_data(archive=False)
self.update_status('Saved')
self.end_build_data()
log.info('%.4fs to build data' % (time.time() - processing_start_time))
CollectionTitleIDs
you seem to need to go through all other matches in the file first... Why isn't your search finding that one directly frombuild_data
?ctrl-O
, but once I fixed that I got it down to ~13s using the search method and it wasn't starting from the beginning.