Що виконують команди f і t у Vim?


126

Чи може хтось пояснити мені, що fі tкоманди виконують у vim та як саме вони працюють? Я не можу знайти цю інформацію, але люди продовжують мені говорити, що вони дуже корисні. Буду дуже вдячний за відповідь, якщо це можливо, дякую!

Відповіді:


204

Ваша перша зупинка з такими питаннями повинна бути внутрішньою допомогою vim :h fта :h t. Однак у цьому випадку ці записи трохи прикрими без прикладу. Припустимо, у нас був цей рядок ( ^= позиція курсору):

The quick brown fox jumps over the lazy dog.
^

Ці команди знаходять символи на рядку. Тож fbрозмістіть курсор тут:

The quick brown fox jumps over the lazy dog.
          ^

tце як, fале розміщує курсор на попередньому символі. Тож tbдамо вам:

The quick brown fox jumps over the lazy dog.
         ^

Ви можете запам’ятати ці команди як find та till. Крім того, ви можете додати команди з номером, щоб перейти до n-го появи цього символу. Наприклад, 3fbпереміститься до третього b праворуч від курсору. У моєму прикладі речення є лише одне b, тому курсор взагалі не рухатиметься.


4
Велике спасибі, це було ідеально, я зовсім забув про: h команда це мій перший тиждень використання Vim, це була величезна допомога дякую!
День

1
Роблячи 'fb', мене приймають до b (rown). Як би я безпосередньо потрапив до b (r) власного? Є спосіб, без hjkl?
dangdis

15
А якщо ви пишете літери великими літерами, то вона стрибає назад. Так, наприклад, Fbабо Tb.
be-ndee

2
@ancm, як говорили be-ndee, Fx або Tx, де x - символ, який потрібно шукати.
Міккі

1
напевно, варто попростувати початківців не залежно від того :help, оскільки це не завжди дає найкраще пояснення неезотеричному натовпу. що to [count]'thнавіть означає?
Тихоліз

121

Просто додати відповідь Михайла Кристофіка , жодного опису fабо tповного, не згадуючи також ;.

З цього шпаргалки Vim :

; "Повторіть останні f, t, F або T [count] разів."

Отже, щоб продовжити тему @ MichaelKristofik:

The quick brown fox jumps over the lazy dog.
^

тип, foщоб перейти до першого "o":

The quick brown fox jumps over the lazy dog.
            ^

а потім ;перейти до наступного:

The quick brown fox jumps over the lazy dog.
                 ^

1
the; порада є досить корисною, хоча я не бачу, як це працює з 't'. я намагався, і я застряг у тому самому положенні незалежно від того, скільки разів команда t повторюється.
Peter Perháč

@ PeterPerháč Натисніть крапку з комою кілька разів. Працює для мене.
LondonRob

@ PeterPerháč, я вважаю, що це складніше з командою t, оскільки при пошуку вперед для x крапка з комою знайде однаковий x щоразу, коли ви натискаєте;, таким чином, не рухаючись. Якщо ви натиснете l один раз, а потім крапкою з комою, це має спрацювати.
Міккі

@ PeterPerháč Переконайтеся, що ви вже не знаходитесь (одним символом раніше) останнього явища на рядку, і він повинен знайти наступне явище.
Адам Еванс

51

Я вважаю fі tдуже корисним у поєднанні з dта c. Наприклад, ct:дозволить вам замінити все від курсору до наступного двокрапки, але не видалити двокрапку. Ви можете запам'ятати це як "зміна на двокрапку".


5
+1! Ідіоми, як ct,або ct)швидко замінити один чи останній аргумент на виклик функції, чудово користуються.
nperson325681

15
Я вважаю за краще, vt:cтому що ви не помічаєте завжди будь-якого явища даної літери на 100% правильно. З vвами можна побачити візуальний вибір, приємний візуальний кий.
Bentley4

1
Я віддаю перевагу мнемонічному, "зміни до двокрапки"
Патрік Майклсен

34

fxперестрибує до наступного x на лінії.

txстрибає до персонажа безпосередньо перед наступним x на лінії.

Ви можете використовувати Fxта Txдосягти попереднього x .

Ви можете використовувати 2fxдля переходу до другого xна лінії.

Отже, fFі tTвони корисні, коли ви хочете швидко перейти до наступного набору дужок ( f() або видалити все з курсору до, але виключаючи попереднє =( dT=) і так далі ...

Див :h motion.txt. Це підірве ваш розум.


2
дякую, що згадуєте про цю 2fxріч. Я завжди плутаю це зf2x
Яр
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.