Як перейти до початку чи кінця рядка в vim + OS X


17

У терміналі я можу це зробити, натискаючи shift + home та shift + end, але це, здається, не працює в vim. Домашня та кінцева клавіші прокручують лише вікно терміналу. Я хотів би перейти в режим редагування.


4
У командному режимі ви можете знайти на Vim Cheat Sheet (0 і $): fprintf.net/vimCheatSheet.html . Я не знаю про режим редагування.
Gnoupi

Відповіді:


13

Ця відповідь передбачає, що ви використовуєте vim у вікні терміналу .

Прив'язки для дому та кінця за замовчуванням трохи відрізняються від того, що очікувала б програма, грунтуючись на звичайному налаштуваннях TERM (тобто варіант xterm). Якщо ви хочете дотримуватися прив’язки за замовчуванням (і використовувати варіанти Shift у терміналі ), ви можете спробувати помістити щось подібне у свій .vimrc:

:" map Mac OS X Terminal.app default Home and End
:map <ESC>[H <Home>
:map <ESC>[F <End>
:imap <ESC>[H <C-O><Home>
:imap <ESC>[F <C-O><End>
:cmap <ESC>[H <Home>
:cmap <ESC>[F <End>

В іншому випадку ви можете спробувати коригувати коди, які термінал надсилає, коли ви використовуєте « Дім і Кінець» (навіть без змін, якщо вам це подобається). Шукати, ймовірно, з'явиться в деяких місцях, де описано, як це зробити ( ось одне ). Основна ідея полягає в тому, що ви хочете, щоб термінал надсилав ESC [1 ~ замість ESC [H для дому та ESC [4 ~ замість ESC [F для кінця (або Shift-Home / Shift-End, якщо ви хочете зберегти дім / Кінець для доступу до прокрутки). Я б описав процес більш докладно, але у мене є лише 10,4, і я знаю, що Термінал сильно змінився в 10.5 і пізніше.


8

За допомогою iTerm та Vim ви можете використовувати fn + стрілки вправо і вліво в режимі вставки, щоб перейти до початку або кінця рядка. З Terminal.app ви використовуєте стрілки shift + .



1

Як додаток до відповіді Кріса , ви також можете досягти навігації по словах (за допомогою Option+arrowклавіш), просто додавши ці чотири рядки:

:map <ESC>f el
:imap <ESC>b <C-o>b
:imap <ESC>f <C-o>el
:cmap <ESC>f el

Зверніть увагу на oнижній регістр, щоб він не вийшов з insertрежиму для операції. Ви також можете змінити великі регістри Oв оригінальній відповіді для того ж ефекту.


0

У MacVim ви можете використовувати команду "Стрілка вліво" та команду "Стрілка вправо", щоб перейти до початку та кінця рядка, перебуваючи в режимі редагування.


Здається, що JtR використовує vim всередині Terminal.app замість MacVim (який я б дуже рекомендував і особисто використовував).
Matrix Mole

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