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

Vim: быстро перемещаться внутри длинной линии

У меня есть перенос слов и, как правило, имеют довольно длинные строки. Но перемещение внутри линии, которая на самом деле имеет 4 линии с "w", громоздка. Я продолжаю использовать /, чтобы перейти к слову, которое я ищу, но это немного переусердствует.

Любые подсказки о том, как быстрее перемещаться внутри строки?

Спасибо,

MRB

4b9b3361

Ответ 1

  • Вы можете использовать $, 0 и ^ для перехода к конечным точкам линии, а затем использовать w и b. Кроме того, добавление числового аргумента в w и b может ускорить процесс, поэтому использование 6w вместо простого w может привести вас к тому, где должно быть.
  • Использование f и t для перемещения к отдельным символам также поможет. (Я использую это обычно с пунктуацией.Если, например, у меня есть четыре предложения на одной длинной строке, то 2f. перейдет к концу второго предложения)
  • Использование клавиш ( и ) - это альтернативный способ навигации по целым предложениям.
  • Разделение длинных строк на несколько строк (вручную или с помощью set tw=72 [или 80]) упрощает их редактирование. Вы можете присоединиться к ним позже с помощью J.
  • Что-то, что я только что обнаружил, вы можете перемещать вверх и вниз по одной строке, используя gj и gk. Таким образом, вы можете обрабатывать свою обернутую линию как несколько строк.

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

Ответ 2

Я думаю, что вы можете использовать gk и gj вместо k и j.

Также посмотрите на 'virtualedit' для некоторых параметров, которые позволяют вам курсор через области "void", не переведя курсор на следующий лучший физический символ.

Возможно, вы захотите (временно)

nnoremap <buffer> k gk
nnoremap <buffer> j gj

Оставьте часть <buffer>, чтобы применить ее глобально.

Ответ 3

Вы можете использовать ( и ) для навигации по предложению; он просто ищет ., но это может быть очень полезно, особенно если вам не нравится предложение и вы хотите его изменить: (c) перейдет к началу текущего предложения, а затем изменит все предложение.

Вы также можете использовать w и e, с модификаторами подсчета, для перемещения слов. 3w будет перемещать три слова за раз.

Вы также можете использовать f и f для поиска вперед и назад для определенного символа. Это гораздо полезнее, если вы ищете слово quite или syzygy, чем the.:)

Ответ 4

Если вы решите пойти по пути переназначения этих:

nnoremap k gk
nnoremap j gj

вот пара других по тем же линиям:

nnoremap 0 g0
nnoremap $ g$
nnoremap ^ g^

Ответ 5

Моя предпочтительная стратегия при прыжке по длинным строкам состоит в том, чтобы использовать f f и t t в ноль на символе. Что делает это семейство движений наддувом, так это то, что вы можете использовать движения ; и ,, поэтому вам не нужно подсчитывать позицию символа относительно курсора, но просто пройдите через них (чрезвычайно полезно с ' " . и т.д.)

Скажем, у нас есть прямая:

reallyLongObjectName.longMethod().prettyPrettyLongMethod().burp();

Если нам нужно перейти к, скажем, третьей точке от начала строки, мы можем использовать либо 3f., либо f.;;, посещая две точки и приземляясь на треть.

В то время как стиль ; , может использовать больше нажатий клавиш, я нашел его более гибким и забавным в целом.

Ответ 6

Недавно я начал использовать плагин, который мне очень нравится очень быстро перемещаться внутри строки (или файла отверстия).

Имя плагина - PreciseJump, и вы можете найти его здесь.

При использовании этого плагина он определяет сопоставления _f и _F.

если вы наберете _f, за которым следует x, он выделит все символы x и временно заменит другие символы, которые вы можете нажать, чтобы перейти к этому месту. Проверьте страницу script для иллюстрации.

Ответ 7

Вы также можете перемещаться с помощью W B, который пропустит следующее пространство:) G перемещается в конец документа

Ответ 8

Обратите внимание, что использование "g", за которым следуют стрелки вверх или вниз, действительно работает нормально, но если у вас длинные строки и быстро перемещаются, вы можете ввести "gg" по ошибке и в конце вверху текста...! (Undo не вернет вас, и AFAIK не будет с одним нажатием клавиши, чтобы вернуться туда, где вы были.)

Это случалось со мной слишком много раз.

Что я сделал, и предлагаю вам изменить (или создать) ваш "~/.vimrc" и добавить эти две строки:

map <C-Up> g<Up>
map <C-Down> g<Down>

Это позволит вам контролировать и управлять командами перемещений. Сделает туманность "gg" невозможной и идеально согласуется с правом управления и контролем слева для перемещения по длинным линиям.

Если вы добавите эти две другие строки, вы можете использовать ту же команду в режиме вставки (!)

imap <C-Up> <C-[> g<Up> i
imap <C-Down> <C-[> g<Down> i

(VIM отлично!)

Грег Руо