Sử dụng git commit -a với vim


111

Tôi mới làm quen với git, vì vậy tôi quyết định học git bằng cách sử dụng các hướng dẫn của github. Chương thứ ba nói:

"Đối với ví dụ đầu tiên này, chúng tôi sẽ sửa đổi tệp README để tự thêm mình làm tác giả trong dự án. Vì vậy, chúng tôi chỉ cần chỉnh sửa tệp. Bây giờ chúng tôi muốn thực hiện thay đổi đó, vì vậy chúng tôi chạy git commit -alệnh."

Khi tôi sử dụng git commit -alệnh, bảng điều khiển sẽ mở một vim và tôi đã viết tin nhắn của mình, nhưng tôi không biết cách đóng trình chỉnh sửa vim này khỏi bảng điều khiển. Làm cách nào để lưu tin nhắn và đóng vim?


9
Bảng lừa đảo đồ họa này rất hữu ích: viemu.com/vi-vim-cheat-sheet.gif . Tôi sử dụng nó làm hình nền máy tính của mình.
yasouser

@Jean - Bạn đang sử dụng nền tảng nào và bạn đang sử dụng console hay GUI Vim? Bạn không nhận được văn bản giới thiệu (số phiên bản, tác giả, v.v.) trên màn hình bắt đầu?
Rook

Câu trả lời:


193
  1. Trong vim, bạn lưu tệp :wEnterkhi đang ở chế độ bình thường (bạn vào chế độ bình thường bằng cách nhấn Esc).
  2. Bạn đóng tệp của mình :qtrong khi ở chế độ bình thường.

Bạn có thể kết hợp cả hai hành động này và làm Esc:wqEnterđể lưu cam kết và thoát khỏi vim.

Thay thế cho cách trên, bạn cũng có thể nhấn ZZkhi ở chế độ bình thường, thao tác này sẽ lưu tệp và thoát khỏi vim. Điều này cũng dễ dàng hơn đối với một số người vì cùng một phím được nhấn hai lần.


24
Bạn cũng có thể thực hiện git commit -a -m "your message here" sẽ không hiển thị VIM.
David Basarab

8
@David: Tất nhiên. Rất nhiều câu hỏi ở đây là do mọi người quên -mtùy chọn và sau đó bị ném vào trong một cửa sổ vim và không biết làm thế nào để thoát ra.
abcd

3
@yoda: Bạn cũng có thể chuyển sang chế độ bình thường bằng cách sử dụng ctrl + c. Ngoài ra, đó là Shift + (z + z) để lưu và thoát (hai chữ Z viết hoa).
Rocket Hazmat

1
@Rocket: Bạn nói đúng. Tôi không nhận ra mình đã vào zthay vì Z.
abcd

5
@EEva: Có, nhưng tôi không muốn dạy điều đó cho một người mới, vì nếu họ quên :, sau đó họ bắt đầu xóa các ký tự, và sau đó dẫn đến hoảng sợ.
abcd

58

Thay vì cố gắng học vim, hãy sử dụng một trình soạn thảo khác dễ dàng hơn (chẳng hạn như nano). Dù tôi thích vim, tôi không nghĩ rằng sử dụng nó trong trường hợp này là giải pháp. Cần có sự cống hiến và thời gian để làm chủ nó.

git config core.editor "nano"

52
Thật là buồn cười; nano được mặc định trên Ubuntu và tôi không thể tìm ra cách lưu vì vậy tôi đã sử dụng lệnh của bạn để chuyển sang vim.
hyperslug

11

Xem chủ đề này để biết giải thích: VIM dành cho Windows - Tôi phải nhập gì để lưu và thoát khỏi tệp?

Như tôi đã viết ở đó: để học Vimming, bạn có thể sử dụng một trong các thẻ tham khảo nhanh:

Cũng lưu ý Làm cách nào để thiết lập trình chỉnh sửa để hoạt động với Git trên Windows? nếu bạn không cảm thấy thoải mái khi sử dụng Vim nhưng muốn sử dụng trình soạn thảo khác cho các tin nhắn cam kết của mình.

Nếu tin nhắn cam kết của bạn không quá dài, bạn cũng có thể nhập

git commit -a -m "your message here"

Bạn cũng có thể làm theo câu trả lời này để thoát khỏi vim stackoverflow.com/questions/6098742/using-git-commit-a-with-vim/…
David Basarab

Trong khi điều này là đúng, nó là không nên .
Jorge Leitao

7

Câu hỏi hay hơn là: Làm cách nào để ngắt cam kết khi tôi thoát khỏi vim?

Có 2 cách:

  1. :cq hoặc là :cquit
  2. Xóa tất cả các dòng của thông báo cam kết, bao gồm cả nhận xét, sau đó :wq

Dù bằng cách nào cũng sẽ cung cấp mã lỗi git, vì vậy nó sẽ không tiếp tục với cam kết. Điều này đặc biệt hữu ích với git commit --amend.


Btw, tôi nhớ điều này từ Ham radio lingo. Khi bắt đầu Contact , sau khi cha cô qua đời, Ellie trẻ (Jena Malone) nói với Vũ trụ, "CQ CQ CQ". Điều đó có nghĩa là "Gọi tất cả các đài".
cdunn2001,


1

Để thoát khỏi đánh: q sẽ cho phép bạn thoát.

Nếu bạn muốn thoát mà không lưu, bạn có thể nhấn: q!

Tìm kiếm trên google về "vim cheatsheet" có thể cung cấp cho bạn tài liệu tham khảo mà bạn nên in ra với bộ sưu tập các phím tắt nhanh.

http://www.fprintf.net/vimCheatSheet.html

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.