Прості команди Vim, які ви хочете, щоб ви знали раніше [закрито]


378

Я постійно навчаюсь нових команд у Vim, але впевнений, що кожен раз дізнається щось нове. Я нещодавно дізнався про це:

zz, zt, zb - курсор положення в середині, вгорі або внизу екрана

Які ще корисні чи елегантні команди ви хочете дізнатись віками тому?


46
технічно zz, zt, zb розміщують екран курсором посередині / вгорі / внизу. для розміщення курсору в середині / вгорі / внизу використовуйте M, H або L. Обидва набори команд корисні!
Пітер

1
Читання цієї публікації місяці чи рік тому з тих пір допомагало мені щодня. dap - це те, що я використовую для переміщення абзаців кілька разів на годину, завдяки цій публікації.
Funkodebat

33
Я ніколи не збирав стільки хитрощів зі сторінки, яка була позначена як неконструктивна :) Дякую всім.
Tasos Bitsios

Відповіді:


315

Я дуже хотів би знати, що ви можете використовувати CtrlCзамість того, Escщоб вимикати режим вставки. Це було для мене справжнім підвищенням продуктивності.


93
Я перевстановив свій Caps-Lock на Esc. Це і простіше, ніж звичайні Esc і Ctrl-C
Каспер

114
О ні. 15 років vi, і я ніколи цього не знав ...
Кріс К

31
Іншим популярним було використання 'jj' для ESC. Мені подобається такий підхід досі. : карта! jj <ESC>
claytron

27
Ви також можете використовувати CTRL- [(що мені подобається, оскільки це обидва мізинці ... просто невелике обертання обох рук).
Jason Down

42
використовувати "jk" як варіант на @ claytron's. якщо ви несвідомо перебуваєте в режимі ВСТАВЛЕННЯ, jk залишає вас там, де ви були, тож ви можете вдарити його будь-коли (кредит: хтось інший ... не моя ідея).
Кайл

197

Найновіший "вау" трюк, який я дізнався, - це метод робити складні пошук-заміна. Досить часто в минулому у мене був справді складний регулярний викид для заміни, і це не спрацювало. Є кращий спосіб:

:set incsearch             " I have this in .vimrc
/my complicated regexp     " Highlighted as you enter characters
:%s//replace with this/    " You don't have to type it again

Тут "хитрість" (для бажання кращого слова) - це спосіб, за допомогою якого ви можете використовувати пошук, щоб створити регулярний вираз (а "insearch" підкреслює його під час введення символів), а потім використовувати порожній шаблон підстановки: порожній за замовчуванням шаблон до останнього шаблону пошуку.

Приклад:

/blue\(\d\+\)
:%s//red\1/

Дорівнює:

:%s/blue\(\d\+\)/red\1/

Подивитися:

:help 'incsearch'
:help :substitute

1
ух ... Я шукав щось подібне
figurassa

1
так, я хотів би, щоб я знав це раніше. Але знову ж таки, це я кажу про все, що я дізнаюся, що є новим у vim.
Роберт Массайолі

26
Для тих, хто справді любить це, спробуйте натиснути, <Ctrl-R>/щоб вставити останній пошуковий запит. (Див. :help i_CTRL-R) Дійсно корисний для подібного до вище, але ви хочете зафіксувати частину результатів пошуку. (Як це: %s:/\\([fF]rank\\) and mary/marie and \1/g)
idbrii

4
:%s//...також працює з *(пошукове слово під курсором). Плагін, який називається візуально-зірковим пошуком, розширює функціональність, *щоб відповідати цілому тексту візуального вибору, що полегшує пошук та заміну вибраного тексту, наприклад v3e(візуально виділіть 3 слова) *(пошук) та :%s//replacement/g(замініть всі випадки на " заміна "). Я використовую це так часто , що у мене є відображення для глобальної команди підстановки: :nmap <Leader>s :%s///g<left><left>.
Патрік Осіті

1
@idbrii, оскільки люди, які читають, можуть бути Vim noobs (мені), так і %s:повинно бути :%s, а для моєї системи мені потрібно було \(\)замість\\(\\)
Charlie Gorichanaz

155

Я створив цю посилання на мою найчастіше використовувану команду для мого друга:

select                                   v
select row(s)                            SHIFT + v
select blocks (columns)                  CTRL  + v
indent selected text                     >
unindent selected text                   <
list buffers                             :ls
open buffer                              :bN (N = buffer number)
print                                    :hardcopy
open a file                              :e /path/to/file.txt
                                         :e C:\Path\To\File.txt
sort selected rows                       :sort
search for word under cursor             *
open file under cursor                   gf
  (absolute path or relative)
format selected code                     =
select contents of entire file           ggVG
convert selected text to uppercase       U
convert selected text to lowercase       u
invert case of selected text             ~
convert tabs to spaces                   :retab
start recording a macro                  qX (X = key to assign macro to)
stop recording a macro                   q
playback macro                           @X (X = key macro was assigned to)
replay previously played macro *         @@
auto-complete a word you are typing **   CTRL + n
bookmark current place in file           mX (X = key to assign bookmark to)
jump to bookmark                         `X (X = key bookmark was assigned to
                                             ` = back tick/tilde key)
show all bookmarks                       :marks
delete a bookmark                        :delm X (X = key bookmark to delete)
delete all bookmarks                     :delm!
split screen horizontally                :split
split screen vertically                  :vsplit
navigating split screens                 CTRL + w + j = move down a screen
                                         CTRL + w + k = move up a screen
                                         CTRL + w + h = move left a screen
                                         CTRL + w + l = move right a screen
close all other split screens            :only

*  - As with other commands in vi, you can playback a macro any number of times.
     The following command would playback the macro assigned to the key `w' 100
     times: 100@w

** - Vim uses words that exist in your current buffer and any other buffer you may have open for auto-complete suggestions.

Ви перераховуєте "~ X", щоб перейти до позначки з ім'ям X. Це не працює для мене - замість цього я використовую "" X "(одна цитата).

Ого. Ваш абсолютно прав. Коли я друкував путівник, я здогадуюсь, що моє око бачило лише тильду та засклило тильну клітку. Я відповідно оновлю. Дякую за голову вгору
Брайан Ньюмен

5
цей список приємний, але мені дуже хочеться знати, як ти намалював цю таблицю? з VIM? який плагін? Зараз я шукаю.
Кент

6
Я використовував VIM, але не плагін. Однак; використання функції вибору блоку зробило це порівняно просто. Радий, що ви знайшли список корисним! ~ brian
brian newman

11
Ctrl-Q для вибору блоків є специфікою mswin.vim, що дозволяє CTRL-V вставляти. Більшість користувачів vim вважають це зло і відключають mswin.vim. "+ P або Ctrl-R + не так важко набрати, щоб вставити вміст буфера обміну.
Бенуа

144

gi переходить у режим вставки, розміщуючи курсор там, де раніше.


29
Я був такий щасливий, коли дізнався про те, що g;зараз це
змушує

@longdeqidao зовсім не є. Він повертається до останньої точки вставки. Таким чином, ви можете прокручувати вміст у ваших серцях, і це поверне вас туди, де ви востаннє вставляли.
Кібер Олівейра

9
FYI, г; (на яку @PatrickOscity згадувалося вище) кладе курсор на місце, де було зроблено редагування. Ви можете використовувати його кілька разів, щоб повернутися в історію. Зауваживши це тут, тому що моя допомога з vim не чомусь згадує про це.
PonyEars

13
Інтуїтивність Віма ніколи не перестає вражати мене. Оскільки @PonyEars згадав, g;я намагався, якщо "протилежне" це буде g,і ось, і ось, ми можемо повернутися назад і вперед!
Кібер Олівейра

aкоротше. :) Але giдійсно дуже інтуїтивно, gзазвичай це протилежна операція.
Ервін Ройджаккерс

105
: q!

Мені б хотілося, щоб я знав це, перш ніж вперше почати ви


23
як хлопець emacs, це найсмішніший коментар, який я читав. не впевнений, ти це мав на увазі. Ти зробив мене сьогодні щасливим.
pjammer

29
Я пам’ятаю, що в той же день вперше спробував vim та emacs, не знаючи, як вийти. Я подумав собі, що чорт не так у цих людей!
Physicsmichael

13
+1. Під час першого запуску vim повідомлення за замовчуванням має бути "write: q to quit". Я б заощадив стільки часу, хай
Хосе Рамон

2
@ JoséRamón Але це дійсно показати його на екрані за замовчуванням , якщо ви вводите ВІМ без відкриття файлу. Це було додано нещодавно? Я чітко пам'ятаю спробувавши vim років тому, і він уже був там. Він також пропонує вам використовувати, :q!якщо ви намагаєтеся вийти, не зберігаючи буфер.
mechalynx

5
@ivy_lynx так, ви можете мати рацію, але тільки якщо ви відкриєте vim без файлів. Зазвичай, перший раз, коли ви відкриваєте vim, це тому, що вам потрібно відредагувати конфігураційний файл в Unix, тому ви пишете "$ vim файл", і ви не можете знайти вихід. Або я єдиний?
Хосе Рамон

56

^ XF завершує використання імен файлів з поточного каталогу. Більше не потрібно копіювати / вставляти з терміналу або болісно подвійної перевірки.

^ XP завершує використання слів у поточному файлі

: встановити прокрутку примушує один буфер прокручуватися поряд з іншим. наприклад, розділіть вікно на дві вертикальні області. Завантажте один файл у кожен (можливо, різні версії одного файлу). Робити :set scrollbindв кожному. Тепер, коли ви прокручуєте одну, обидві панелі прокручуються разом. Ідеально підходить для порівняння файлів.


Як відключити пов'язку прокрутки, коли я це ввімкнув?
Амджіт

2
jinxed_coder : :set noscbвимкнути його та використовувати, :set scbщоб увімкнути його (не :scrollbind). :h scrollbind
jmdeldin

Уопс. Виправлено для ': встановити прокрутку'.
Брайан Агнеу

7
^ XP завершується перевагою попередніх слів у файлі, ^ XN з перевагою перед наступними словами у файлі.
u0b34a0f6ae

Ви також можете відрізняти файли, відкриваючи file1 і запускаючи :diffsplit file2або просто починаючи vim vim -d file1 file2. Vim автоматично прокручує два файли.
Брайан Маккотчон

51

Ви можете використовувати цілий набір команд для зміни тексту всередині дужок / дужок / лапок / тегів. Це дуже корисно, щоб уникнути необхідності знайти початок і фініш групи. Спробуйте ci(, ci{, ci<, ci", ci', ctзалежно від того, який тип об’єкта ви хочете змінити. І ca(, ca{, ...варіанти також видаляють дужки / лапки.

Легко запам’ятати: змінити внутрішнє уповільнене твердження / змінити твердий текст.


16
це не тільки для c. Ви можете це зробити, dщоб видалити (наприклад, di (або da (), yпотягнути, vвибрати тощо)
Nathan Fellman

Привіт! Я хотів би знати, що там використовується документація для цього :help? Я не можу його знайти ніде. > _ <
Матей

1
@ Peeter Я перевіряв це раніше, але не міг знайти згадку про особливості поведінки "внутрішній + роздільник". Виявляється, в :help motion.txt! Дякую!
Матей

2
ця порада є єдиною причиною, чому я перейшов до vi в першу чергу :)
Джастін Л.

1
Якщо ви редагуєте HTML або XML, ви можете citзмінити вміст поточного тегу. Наприклад <span>Some text</span>, якщо ваш курсор перевищує "m", ви можете зробити, ditщоб отримати <span></span>.
Джонатан Поттер

47
  1. Не натискайте Escніколи. Дивіться цю відповідь, щоб дізнатися чому . Як було сказано вище, Ctrl+ Cє кращою альтернативою. Я настійно пропоную Caps Lockскласти ваш ключ для втечі.

  2. Якщо ви редагуєте мову, сумісну з Ctags , використання файлу тегів і :ta, Ctrl+ ]і т. Д. - це чудовий спосіб орієнтуватися в коді навіть через декілька файлів. Крім того, Ctrl+ Nта Ctrl+ Pзавершення за допомогою файлу тегів - прекрасний спосіб зменшити натискання клавіш.

  3. Якщо ви редагуєте обернуту лінію, оскільки вона ширша, ніж ваш буфер, ви можете переміщатися вгору / вниз за допомогою gk та gj.

  4. Постарайтеся зосередитись на ефективному використанні команд руху, перш ніж навчитися шкідливим звичкам. Такі речі, як використання "dt" або "d3w", а не натискання xa купу разів. В основному, щоразу, коли ви повторно натискаєте ту саму клавішу, можливо, є кращий / швидший / більш стислий спосіб зробити те саме.


11
Не використовувати Escape? Це єресь. Втеча - ваш найкращий друг як на роботі, так і поза нею.
xcramps

28
якщо це такий хороший друг, чому це так далеко від клавіатури?
антоні

тому що 99% людей ніколи цим не користуються.
Стефано Борині

5
Escape відокремлений від інших клавіш на моїй клавіатурі на кілька дюймів. Ви не можете пропустити це.
Брайан Карпер

15
№3 - приголомшливий! Ще
дізнаваюся

45

Ключ зірочки, *шукатиме слово під курсором.

[+ Tabпереведе вас до визначення функції C, яка знаходиться під вашим курсором. (Однак це не завжди працює.)


1
Спробуйте "man ctags", якщо ви використовуєте * nix, щоб дізнатися, як генерувати файл "тегів", який вказує vim, як знайти визначення будь-якої функції чи змінної на багатьох мовах, крім C. Використовуйте ctrl +], щоб знайти визначення токена під курсором або використовуйте: tag tokenToFind, щоб знайти будь-який маркер, про який він знає. Ви навіть можете запустити vim за допомогою "vim -t tokenToFind", щоб відкрити відповідний файл і розмістити курсор у функції, яку потрібно редагувати.
Адам Лісс

23
клавіша # здійснить пошук у зворотному напрямку для слова під курсором
Funkodebat

github.com/bronson/vim-visual-star-search дозволяє шукати зірки для візуального вибору. Я вже не хочу цього сумувати.
Патрік Осіті

[ + Tab працюватиме завжди, коли ви розширите pathпотрібні папки, такі якset path+=path/to/files
dlmeetei

43

ZZ(працює як :wq)

А щодо положення курсору: я виявив, що курсор, який завжди залишається посередині екрана, класний -

set scrolloff=9999

2
Не знав цього. :xробить це також
sa125

18
Не зовсім точна. Працює як :x, що зберігає файл лише у разі змін, тоді як :wqзавжди зберігає файл.
Ерік Б

ZQ (працює як: q!)
xialu

42

Деякі з моїх останніх доповнень до мого магазину Vim:

  • ^wi: Перейти до тегу під курсором, розділивши вікно.
  • cib/ciB: Зміна тексту всередині поточного набору дужок () або дужок {} відповідно.
  • :set listchars=tab:>-,trail:_ list: Показуйте вкладки / пробіли, які візуально відрізняються від інших. Це дуже допомагає при кодуванні Python.

4
Для цього потрібно більше голосів! cibце здорово.
Метт Паркер

також: ciw, щоб змінити поточне слово (або caw, те саме, але лише лівою рукою) ciW, щоб змінити поточний W = o. (rd) Імена з v замість c будуть обрані візуально замість заміни
lajarre

5
cib еквівалентно введенню "ci (". Ви також можете робити "ci [", "ci {", або (якщо ваш vimrc встановлений правильно) "ci <", для інших типів дужок.
Том Лорд,

2
Також "cit", щоб змінити текст всередині тегу. Дуже корисно при роботі з XML / HTML.
Вальтер

також варто згадати, що ви можете надати суфікс w / закриваючу дужку замість цього, якщо ви віддаєте перевагу цьому. Крім того, я щойно дізнався про ci}& cit- вау, це буде дуже корисно. vi[m]- це дуже захоплююча програма [s]!
підкреслюйте_d


34

: shell для запуску консолі оболонки від Vim. Корисно, коли, наприклад, ви хочете протестувати сценарій, не виходячи з Vim. Просто натисніть ^ d, коли ви закінчили з консоллю оболонки, а потім повернетесь до Vim та редагованого файлу.


Я думаю, :!shбуло занадто важко. Я вважаю за краще, тому що простіше складати командні рядки, використовуючи регістри / доповнення з поточного буфера або, наприклад, використовувати %/ %:hдля поточного імені файлу / ім’я та ін.
вересень

1
Цей дуже класний. Я використовую його щодня .. До цього це було:: wq, робити кліп, знову відкривати vim з тим самим файлом .. Велика оптимізація
Flashin

7
Ctrl-Z для переключення на оболонку та fg <ENTER> для повернення до vim.
Маріо Г.

Помістіть map <Esc>! :shell<CR>свою .vimrc, і ви можете запустити оболонку просто за допомогою Alt +! Або Alt + Shift + 1. (Мнемоніка: :!{cmd}виконує {cmd}з корпусом.)
musiphil

:shellпочне новий рівень вкладеної оболонки. Тоді ctrl-zяк ні.
wisbucky


31

вимкрипція

vim -x ім'я файлу.txt

Вас попросять ввести парольну фразу, відредагувати та зберегти. Тепер, коли ви знову відкриєте файл in vi, вам доведеться ввести пароль для перегляду.


Синхронізуйте це зі своєю скринькою, і ви отримаєте дуже приємний менеджер паролів ;-)
Луїс Нелл

15
Але зауважте, що якщо ви set cryptmethod=blowfish(доступні лише для версій 7.3 або більше), він буде використовувати алгоритм зі стійкістю до сміху. Дивіться help encryptionдетальніше.
AB

3
Будь ласка, не використовуйте шифрування vim, це не гарне шифрування, і погана безпека є гіршою, ніж жодна. Більше інформації: github.com/neovim/neovim/isissue/694
rodrigoq

2
dgl.cx/2014/10/vim-blowfish meta-tldr: "зафіксовано в Vim 7.4.399 [ groups.google.com/forum/#!msg/vim_dev/D8FyRd0EwlE/bkBOo-hzTzoJ] , для зворотних причин сумісності, необхідних щоб бути новим криптовалютою, тому використовуйте :set cm=blowfish2"
підкреслюйте

28

Створіть і налагоджуйте свій код із Vim!

Конфігурація

Не багато, насправді. Вам потрібнаMakefile в поточному каталозі.

Складати

Поки ви знаходитесь у Vim, введіть, :makeщоб викликати оболонку та створити програму. Не хвилюйтеся, коли вихід прокручується; просто натиснітьEnter коли закінчите, щоб повернутися до Vim.

Магія

Повернувшись до Vim, у вас є такі команди:

  1. :cl перелічує помилки, попередження та інші повідомлення.
  2. :ccвідображається поточне повідомлення про помилку / попередження у нижній частині екрана та переходить до порушника у вашому коді.
  3. :cc nпереходить до nго повідомлення.
  4. :cn переходить до наступного повідомлення.
  5. :cp переходить до попереднього повідомлення.

Є більше; якщо вас цікавить, введіть :help :ccз Vim.


1
працює з більш ніж просто компілюючим кодом. А саме будь-яке завдання, написане в makefile, є чудовим для цього.
Дуайт Спенсер

25

^ Р і ^ Н

Заповніть попередній (^ P) або наступний (^ N) текст.

^ О і ^ я

Перейдіть до попереднього (^ O - «O» для старого) місцеположення або до наступного (^ I - «I», що знаходиться поруч із «O»).

Виконуючи пошук, редагування файлів тощо, ви можете переходити через ці "стрибки" вперед і назад.

Знаки

Натисніть ma (m- позначка, a - назва позначки). Пізніше, щоб повернутися до позиції, введіть `a .


1
Нічого собі, я не знав про ^ О та ^ Я: це приголомшливо. Можливо, варто включити :help jump-motionsу свою відповідь тощо, якщо хтось хоче більше інформації.
DrAl

перевірити ShowMarks vim.org/scripts/script.php?script_id=152 . Це допоможе вам запам'ятати, де і які всі ваші позначки знаходяться в буфері. ви можете вмикати та вимикати візуалізацію \ mt
тестер

Я не розумію різниці між ^ P і ^ N ...
lajarre

@lajarre вони переглядають список доступних доповнень у зворотному напрямку
Патрік Осіті

2
Я часто використовую ^ O ^ O під час відкриття Vim після того, як я помітив, що хочу знову відредагувати останній відредагований файл. Величезна економія часу!
Патрік Осіті

24

Натисніть, %коли курсор знаходиться в лапці, круглих дужках, дужці чи дужці, щоб знайти його відповідність.


20
Якщо курсор не знаходиться над будь-яким із них, він зміщується вправо, поки не потрапить на один з них.
Кібер Олівейра

@ Léo: Дякую за бонусну пораду!
Адам Лісс

22

Поки [персонаж] ( t). Це корисно для будь-якої команди, яка приймає діапазон. Моя улюблена ct;або ct)яка видаляє все, що стосується кінцевих дужок з крапкою з комою / закриття, а потім переводить вас у режим вставки.

Крім того, Gі ggє корисними (Перейти відповідно до низу та згори).


найкращий тут, хоча деякі з інших теж корисні, я просто про них уже знав
Funkodebat

1
Також fзамість того t, що буде [діяти] через цей персонаж; наприклад, маючи курсор на початку аргументу функції, df,він видалить його (звичайно, на відповідних мовах).
Actorclavilis

t і f чудово підходять для редагування частини змінної camelCase. Наприклад, якщо ви просто дублювали рядок і вам потрібно змінити firstVariable на secondVariable, розташуйте курсор на початку firstVariable, а потім ctV
Greg

1
T і F також працюють, але в зворотному напрямку.
Федерал

20

^r^w щоб вставити слово під курсор у командному режимі.

Це дійсно корисно при використанні команд grep або заміни.


Якщо це єдине слово, яке ви хочете, то * у звичайному режимі шукатиме слово під курсором.
idbrii

17

Введення номера рядка, за яким слід, ggпереведе вас до цього рядка.


31
: слідом за номером рядка робиться те саме: 42 переходить до рядка № 42
Anti Veeranna

12
Введення номера рядка з послідовністю G має той же ефект.
Кібер Олівейра

3
<number>goпереходить до <number>го символу у файлі.
Actorclavilis

17

Я хотів би, щоб я знав основні речі в режимі візуального блоку раніше. Навіть якщо ви не використовуєте Vim ні для чого іншого, відкрити файл у Vim може бути великою економією часу лише для деяких блокових операцій. Я впевнений, що витратив багато часу, роблячи цю справу вручну.

Приклади, які я вважаю особливо корисними, коли, скажімо, рефакторинг списків символічних константних імен:

Увійдіть у режим візуального блоку ( для мене замість Windows Ctrl+QCtrl +V )

Перемістіть курсор, щоб виділити потрібний блок.

Потім I whatever textі натиснітьEsc щоб текст вставлявся перед блоком у кожному рядку.

Використовуйте AзамістьI щоб текст було вставлено після блоку в кожному рядку.

Також просто переключення випадку візуального вибору ~може бути значною економією часу.

І просто видалення стовпців теж, dзвичайно.



14

q <letter> - записує макрос.

і

@ <same-letter> - відтворює його.

Це далеко не найкорисніші команди у Vim, оскільки ви можете змусити комп’ютер зробити багато роботи за вас, і вам навіть не потрібно писати програму чи щось.


Використання qспрощує питання, але використовувати його не потрібно: просто збережіть у названому буфері команду буфера "- наприклад, використовуючи буфер a- "ad$...
Май

@Mei qзаписує макрос; макроси можуть містити команди, а не лише текст, на "ad$відміну від qa.
Брайан Маккотчон

@Sortofabeginner Це тут не має значення. Команда "ad $ вводить текст у буфер a і qa запускає його.
травня

2
@Mei qaне працює; qaзаписує його і @aзапускає. Це правда, що ви можете написати макрос у простому тексті, зберігати його в реєстрі aз чимось на зразок "ad$, а потім виконувати його @a, але це зовсім трохи більше роботи. Існує принципова різниця між вирізанням та вставкою та записом та запуском.
Брайан Маккотчон

До! Я знаю це. Дякую за виправлення
травень

13

Відкриття декількох файлів за допомогою вкладок

:tabe filepath

Навігація між відкритими файлами

gt and gT or :tabn and :tabp

Збережіть відкритий сеанс, щоб згодом ви могли повернутися до свого списку відкритих файлів

:mksession session_file_name.vim

Відкрийте створений сеанс

vim -S session_file_name.vim

Закрийте всі файли одразу

:qa

Ще одна команда, яку я дізнався нещодавно

autocmd

Це дозволяє запускати команду на подію, так що ви можете, наприклад, запустити команду make, коли ви зберігаєте файл, використовуючи щось на зразок:

:autocmd BufWritePost *.cpp :make

12

qx почне записувати натискання клавіш. Ви можете виконати будь-яке завдання з редагування, і Вім запам'ятовує це. Натисніть q ще раз, коли закінчите, і натисніть @x, щоб відтворити натискання клавіш. Це чудово підходить для багаторазових редагувань, які занадто складні, щоб написати карту. Ви можете мати багато записів, використовуючи символи, відмінні від x .


5
Також той самий символ 'x' поділяється між командою макросу запису 'q' та названими буферами ("x ...). Ви можете залишати фрагменти макросів, що сидять навколо вашого файлу, та копіювати їх у названий буфер обміну (наприклад," xyy ), а потім відтворити їх (@x).
Кібер Олівейра

І якщо ви коли-небудь створіть макрос-ендоміст, ви можете вставити цей буфер обміну у свій _vimrc за допомогою "let @x =" "'(поставивши макрос у" ") і зберегти його назавжди!
Kearns

11

Я б сказав, що одним з моїх улюблених є розміщення довідкового вікна на новій вкладці:

:tab help <help_topic>

Це відкриває допомогу в новій вкладці, і, як хтось, хто любить вкладки Vim, це смішно корисно.


2
Буфери - це вкладки vim. Вони краще підтримуються робочим процесом vim. Я підозрюю, що вкладки додані лише до vim, оскільки занадто багато людей не розуміли буфери.
still_dreaming_1

Добре, дуже скоро, сказавши це, я знайшов використання для вкладок у vim. Це правда, що якщо ви використовуєте один буфер на вкладці, вам потрібно дізнатися про буфери. Це не те, як вкладки повинні були використовуватися в vim. Більшість просунутих користувачів vim використовують буфери, як використовуються вкладки у більшості програм. Багато людей вважають, що вкладки повинні були бути названі макетами in vim. Вони здебільшого мають різні колекції вікон, відкритих на різних вкладках. Ви також можете мати певний буфер, який ви повернетесь до багато відкритого в одній вкладці, а інший використовуйте для перегляду всіх інших буферів.
still_dreaming_1

9

cw

Змінити слово - видаляє слово під курсором і переводить вас у режим вставки для введення нового. Звичайно, це працює з іншими клавішами руху, тому ви можете робити такі речі, як c $, щоб змінити їх до кінця рядка.

f + символ

Знаходить наступне виникнення символу в поточному рядку. Таким чином, ви можете зробити vft, щоб вибрати весь текст до наступного "t" у поточному рядку. Це ще одна клавіша руху, тому вона працює і з іншими командами.


9

:b [any portion of a buffer name]для перемикання буферів. Отже, якщо у вас є два буфери, "somefile1.txt" і "someotherfile2.txt", ви можете перейти до другого просто ":b 2.t<enter>". Він також підтримує завершення вкладки, хоча це не потрібно.

Якщо говорити про заповнення вкладки, налаштування :set wildmode=full wildmenuтакож дуже корисно. Це дозволяє повністю заповнити вкладку для командного режиму, а також дуже корисне меню стилю ncurses усіх можливих відповідностей при його використанні.


9

:% s, / пошук, / заміна,

/Для розділення шаблонів заміни можна використовувати інші символи, ніж (слэш). Таким чином, вам не доведеться уникати косої частини файлових шляхів.


2
ой чорт так. Я знав, sedщо це було, але ні vim. Тим більше, що ти знаєш ♒ ☆
beerbajay
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.