Переместить курсор в конец файла в vim


409

Когда я хочу, чтобы курсор переместился в конец файла (т. Е. В конец последней строки) в Vim, я должен набрать шесть нажатий клавиш:

<ESC>G$a- что переводится как ESC+ Shiftg+ Shift4+ aна моей раскладке клавиатуры.

Как я могу сделать это более эффективно?

Поскольку я регулярно работаю на разных компьютерах, я не всегда могу изменить .vimrc, поэтому я ищу ответы без необходимости редактировать или создавать этот файл.


8
Просто хочу отметить, что команды, которые вы показываете, должны быть представлены следующим образом: <esc>G$aвы показываете сдвиг, делая буквы заглавными. И вы показываете $вместо shift + 4, так как независимо от клавиатуры функция этой клавиши ($ ) не изменится, но если вы сделаете shift + 4, то значение может измениться. :)
— greduan

3
@ Eduan Я в целом согласен, но в этом случае на самом деле нажатия клавиш также актуальны. Я добавил оба :-)
— Timss

@Eduan Что касается эффективности, то фактические команды не имеют значения. Клавиши делают. И поскольку между языками есть огромные различия в раскладке клавиатуры, я не знаю, где $находится клавиатура США, и вполне может быть, что для американцев ввод команды $- всего одно нажатие клавиши. Я хотел явно показать, что для меня (с немецкой клавиатурой) это два нажатия клавиш.

1
@ что IC. Я могу понять, что. Просто хотел указать на это, чтобы в будущем вы знали. :)
— greduan

Ответы:


410

Нет необходимости явно идти до конца строки, прежде чем делать a, использовать A;
Добавить текст в конце строки [количество раз]

<ESC>GA


3
Если вы хотите остаться в обычном режиме, попробуйте G)(или <ESC>G)если вы находитесь в режиме вставки и хотите закончить в обычном режиме над последним символом). То же количество нажатий клавиш, но в конечном итоге в обычном режиме вместо режима вставки. Я нахожу это полезным иногда, когда я хочу выполнить какую-нибудь обычную команду для последнего слова вместо команды режима вставки или редактирования.
— Алехандро

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

Если вы планируете написать следующую строку, <ESC> G oвернитесь к каретке и переведете вас в режим вставки на следующей строке (в конце файла), сохранив еще пару нажатий клавиш.
— broc.seib

1
Также, если вы не хотите переходить в режим вставки, используйте G$.
— BladeMight

499

Это быстрее. Просто используйте это

:$

16
Это не перемещает к последнему столбцу только к последней строке
— Rajeshwar

6
Если вы просто хотите быстро перейти к концу файла и ваши сочетания клавиш испорчены, это правильная команда. Спасибо!
— joemar.ct

9
: $ + End сделает это в этом случае.
— karthik

1
Это требует <ENTER> в конце, а также все еще необходимо добраться до конца строки, что не делает его быстрее.
— Алехандро

1
: $ делает свое дело! иду в конец файла, как вопрос! спасибо
— Сиян Шреста

130

Нажмите, Escа затем нажмите: Shift+G


3
Это идет к началу последней строки, а не к концу файла.
— Джордан Бег

5
это подходит к концу файла для меня , и это также приятный легкий набор клавиш
— Джейкоб Гарби,

G сохраняет номер столбца таким же (если это возможно) и перемещается на последнюю строку. Джейкоб, вероятно, был в конце очереди, а Джордан впереди, когда управлял командой.
— run_the_race

39

Для начала, нет необходимости в возвращении. G$Сделаю. И вы вводите в заблуждение, считая <Esc>и aв длине команды нормального режима.

Тем не менее, вы можете использовать Ctrl+End если хотите.


8
этоCtrl-END
— Zmo

У меня нет Endключа на клавиатуре (если вы это имеете в виду).

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

1
@ То, что большинство клавиатур ноутбуков в настоящее время имеют home / end, вставленные вверх / вниз / влево / вправо вместе с Fn, если у них нет выделенных клавиш home / end
— phuclv

22

Я думал, что вопрос "Переместить курсор в конец файла в VIM"?

Конец файла: Esc+ G
Начало файла Esc+ g(или, ggесли вы уже находитесь в области команд)


21

Лучший способ перейти к последней строке файла - с G. Это переместит курсор на последнюю строку файла.

Лучший способ перейти к последнему столбцу в строке - $ . Это переместит курсор в последний столбец текущей строки.

Таким образом, просто G$вы доберетесь до конца файла и до последней строки.

И если вы хотите войти в режим вставки в конце файла, то вы просто делаете GA. Делая это, вы переходите к последней строке файла и входите в режим вставки, добавляя к последнему столбцу. :)



11

Если вы планируете написать следующую строку, ESCGoвернитесь к каретке и переведете вас в режим вставки на следующей строке (в конце файла), сохранив еще пару нажатий клавиш.


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

3

Это быстрее:

<ESC>GA

5
Зачем публиковать повторяющийся ответ, особенно если он не объясняет A?
— Timss

3

Вы можете сопоставить его с ключом, например F3, в .vimrc

inoremap <F3> <Esc>GA

2
Хотя это возможно, но в целом это плохая идея. Вместо этого стремитесь к мышечной памяти и используйте GAили G$.
— Тимсс

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

Также было бы хорошо иметь полный пример карты вместо того, чтобы указывать оператору искать его. Так как, если вы не можете найти его, как ОП должен?
— FDinoff

1
Вы ничего не «выигрываете», так как вам придется уйти из дома. Кроме того, вы не можете использовать это для кого-то еще, если вы используете его. Вы действительно не экономите время. Если что, используйте C-endкак упоминалось Хоббсом.
— Timss

Я согласен с комментариями здесь, но я очистил карту для вас
— Д. Бен Кнобл

0

Я искал способ переместить курсор в конец строки, а затем редактировать на терминале Mac, вот как это работает для меня. Выйдите из режима редактирования, введите g_ (это «g», затем подчеркивание без двоеточия спереди), затем просто нажмите клавишу «a», чтобы вы могли «добавить» код в ваши скрипты


Вы, возможно, искали A?
— Д. Бен Кнобл

Я попробовал 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.