Переместить курсор в конец файла в 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.