Перемістіть курсор до кінця файлу у форматі vim


409

Коли я хочу, щоб курсор перейшов до кінця файлу (тобто до кінця останнього рядка) у Vim, я повинен ввести шість натискань клавіш:

<ESC>G$a- що означає " ESC+ Shiftg+ Shift4+" aна моїй розкладці клавіатури.

Як я можу це зробити більш ефективно?

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


8
Просто хочу зазначити, що показані вами команди повинні бути представлені так:, <esc>G$aви показуєте зсув, роблячи великі літери. І ви показуєте $замість shift + 4, оскільки незалежно від клавіатури, функція цієї клавіші ( $) не зміниться, але якщо ви зсунете + 4, значення може змінитися. :)
greduan

3
@Eduan Я взагалі згоден, але в цьому випадку актуальні також натискання клавіш. Я додав обидва :-)
timss

@Eduan Що стосується ефективності, фактичні команди не мають значення. Натискання клавіш. Оскільки існують величезні відмінності в розкладці клавіатури між мовами, я не знаю, де $знаходиться клавіатура в США, і цілком може бути, що для американців, що входять до команди, $це лише один натиск клавіші. Я хотів чітко показати, що для мене (з німецькою клавіатурою) це два натискання клавіш.

1
@what IC. Я можу це зрозуміти. Просто хотів це зазначити, щоб у майбутньому ви знали. :)
greduan

Відповіді:


410

Не потрібно чітко переходити до кінця рядка перед тим a, як робити , використовувати A;
Додайте текст у кінці рядка [count] разів

<ESC>GA


3
Якщо ви хочете залишитись у звичайному режимі, спробуйте G)(або <ESC>G)якщо ви перебуваєте у режимі вставки та хочете закінчитись у звичайному режимі над останнім символом). Однакова кількість натискань клавіш, але закінчитися в звичайному режимі замість режиму вставки. Я вважаю це корисним періодично, коли хочу виконати якусь звичайну команду на останньому слові замість команди вставки або редагування.
Алехандро

1
@Alejandro Хоча корисно, )рухається по [count]реченнях вперед і тому не буде переходити до кінця рядка, якщо, наприклад, є останній рядок This is a test. Foo bar.. Однак це буде працювати для багатьох кодів, які часто не вважаються реченнями і тому все одно закінчуються.
timss

Якщо ви плануєте написати наступний рядок, <ESC> G oповерне коляску і переведе вас у режим вставки в наступному рядку (в кінці файлу), заощадивши ще пару натискань клавіш.
broc.seib

1
Крім того, якщо ви не хочете переходити на режим вставки G$.
BladeMight

498

Це швидше. Просто використовуйте це

:$

16
Це не переходить до останнього стовпця лише до останнього рядка
Раджешвар

6
Якщо ви просто хочете швидко перейти до кінця файлу, а комбінації клавіш змішані, це правильна команда. Дякую!
joemar.ct

9
: $ + End зробить це в цьому випадку.
karthik

1
Для цього потрібно <ENTER> в кінці, а також все ще потрібно дістатися до кінця рядка, що робить його не швидшим.
Алехандро

1
: $ робить трюк! переходимо до кінця файлу, як поставлено запитання! спасибі
Сіян Шрестха

130

Натисніть Escта натисніть: Shift+G


3
Це стосується початку останнього рядка, а не кінця файлу.
Йорданія, що працює

5
це підходить до кінця файлу для мене , і це приємна проста в'язка клавіш
Jacob Garby

G зберігає номер стовпця однаковим (якщо можливо) і переходить до останнього рядка. Яків, мабуть, був наприкінці рядка, а Джордан на фронті, коли виконував команду.
run_the_race

39

Для початку немає необхідності в поверненні. G$зроблю. І ви вводите в оману підрахунком <Esc>і aдовжиною команди в звичайному режимі.

Однак ви можете використовувати Ctrl+, Endякщо хочете.


8
цеCtrl-END
змо

У мене немає Endклавіші на клавіатурі (якщо це саме так ви маєте на увазі).

На насправді, відповідь на TIMSS показує , що я добре рахувати <ESC>і то a, що він або вона знала спосіб замінити Shift+$, aз A.

1
@ що у більшості клавіатур ноутбука на сьогоднішній день вдома / в кінці поставлено вгору / вниз / вліво / вправо разом з Fn, якщо вони не мають виділених клавіш для дому / кінця
phuclv

22

Я подумав, що питання "Перемістити курсор до кінця файлу in vim"?

Кінець файлу: Esc+ G
Початок файлу Esc+ g(або ggякщо ви вже в командній області)


21

Найкращий спосіб перейти до останнього рядка файлу - за допомогою G. Це перемістить курсор до останнього рядка файлу.

Найкращий спосіб перейти до останнього стовпця у рядку $. Це перемістить курсор до останнього стовпця поточного рядка.

Тому просто діставшись G$до кінця файлу та останнього рядка.

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



11

Якщо ви плануєте написати наступний рядок, ESCGoповерне коляску і переведе вас у режим вставки в наступному рядку (в кінці файлу), заощадивши ще пару натискань клавіш.


6
  • Ctrl + Home = Перейти до початку файлу
  • Ctrl + End = Перейти до кінця файлу

3

Це швидше:

<ESC>GA

5
Навіщо публікувати дублюючу відповідь, особливо коли вона не пояснює A?
темс

3

Ви можете зіставити його з ключем, наприклад, F3, у .vimrc

inoremap <F3> <Esc>GA

2
Хоча це можливо, це взагалі погана ідея. Замість цього орієнтуйтеся на м’язову пам’ять і використовуйте GAабо G$.
темс

Я все ще перемагаю одним ключовим ударом :) На більш серйозній увазі, якщо вам дійсно потрібно щось швидко в vim, навчитися .vimrc корисно.
Тім

Було б також добре мати повний приклад на карті, а не казати ОП, щоб його шукали. Оскільки, якщо ви не можете його знайти, як це робити з ОП?
FDinoff

1
Ти нічого не "виграєш", оскільки тобі доведеться відійти від дому. Крім того, ви не можете використовувати це для конфігурації когось elses або навіть vi, якщо ви випадково його використовуєте. Ти справді не економиш жодного часу. Якщо нічого, використовуйте, C-endяк згадували варильні панелі.
timss

Я погоджуюся з коментарями тут, але я прибирав карти для вас
D. Ben Knoble

0

Я шукав спосіб перемістити курсор до кінця рядка, а потім редагувати на mac-терміналі, ось як це працювало на мене. Вийдіть з режиму редагування, введіть g_ (це 'g', потім підкреслити, без передньої колонки), а потім просто натисніть клавішу 'a', щоб ви могли "додати" код до своїх сценаріїв


Ви, можливо, шукали A?
D. Ben Knoble

Я спробував A, але це не дуже вийшло
Xinyi Xiang

це дивно, Aв основному еквівалентно$a
Д. Бен Кнобл,

0

Ще одна альтернатива:

:call cursor('.',strwidth(getline('.')))

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

vi +"call cursor('.',strwidth(getline(1)))"  notetaking_template.txt

Сказане також можна зробити з

vi +"execute ':normal! $'" notetaking_template.txt

Дивись також:

vim - Отримайте довжину поточного рядка


0

Якщо ви хочете вставити деякий вміст буфера обміну в кінці типу файлу:

:$ put +

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