Vim: быстро перемещаться внутри длинной очереди - PullRequest
49 голосов
/ 30 марта 2011

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

Есть ли какие-либо подсказки о том, как быстрее двигаться внутри строки?

Спасибо,

MrB

Ответы [ 8 ]

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

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

22 голосов
/ 30 марта 2011

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

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

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

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

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

6 голосов
/ 12 декабря 2011

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

nnoremap k gk
nnoremap j gj

Вот еще пара таких же строк:

nnoremap 0 g0
nnoremap $ g$
nnoremap ^ g^
6 голосов
/ 30 марта 2011

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

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

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

5 голосов
/ 18 апреля 2015

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

Допустим, у нас есть строка:

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

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

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

3 голосов
/ 30 марта 2011

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

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

Когда вы используете этот плагин, он определяет отображения _f и _F.

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

2 голосов
/ 19 июня 2015

Обратите внимание, что использование «g», за которым следуют стрелки «вверх» или «вниз», действительно работает нормально, но если у вас длинные строки и вы быстро двигаетесь, вы можете ввести «gg» по ошибке и оказаться в верхней части текста ... ! (Отмена не вернет вас назад, и 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 великолепен!)

Грег Руо

2 голосов
/ 30 марта 2011

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

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