karena saya sudah mengumpulkan 2 suara dekat, saya pikir ini milik sini karena vim adalah editor seorang programmer.
flybywire
28
Saya setuju, ini terkait dengan pemrograman dan ini adalah pertanyaan nyata.
DigitalRoss
41
Seseorang di sekitar sini berkeliling dan menandai setiap pertanyaan Vim sebagai "milik SU" meskipun komunitas telah lama memutuskan bahwa Vim milik SO, itu menjadi alat pemrograman.
Brian Carper
@ Brian: Apakah Anda memiliki tautan ke dokumen tempat konsensus ini tercapai?
terlalu banyak php
12
meta.stackexchange.com/questions/20251/… tapi saya ingat ini muncul tahun lalu kapan-kapan. Vim / Emacs adalah IDE. Selain itu bahasa yang digunakan dalam file konfigurasi untuk keduanya adalah bahasa scripting Turing-lengkap, sehingga tindakan pengaturan Vim itu sendiri pemrograman untuk memulai.
Saya hanya ingin membuang plugin undoTree di luar sana, sangat luar biasa untuk saat-saat Anda tampaknya mengacaukan diri Anda dengan kesibukan undo dan redos.
Penjual Jake
3
Jika saya membaca tentang vi, maka jari saya hanya bertindak sendiri. Perintah vi tidak bekerja pada stackoverflow. :-)
ciscogambo
2
Catatan untuk pengguna Mac: Ctrl + r di terminal Mac akan merusak hari Anda di vim. Tidak tahu kombo kunci yang tepat di terminal Mac untuk membatalkan, tetapi pasti TIDAK Ctrl + r!
tpartee
@partee Saya hanya menggunakan Ctrl + r dalam vim di bawah aplikasi Terminal macOS - tidak ada masalah di sini.
Jase
3
Mungkin @tpartee berarti Cmd + rmengacaukan segalanya? Ini tentu saja melakukan sesuatu yang aneh; tetapi Ctrl + rhanya bekerja dengan baik untuk saya (Mac + tmux + vim)
dwanderson
133
Lihat juga :undolist, yang menawarkan banyak jalur melalui riwayat undo. Ini berguna jika Anda secara tidak sengaja mengetik sesuatu setelah membatalkan terlalu banyak.
Gunakan :earlier/ :later. Untuk mengulang semua yang perlu Anda lakukan
later 9999999d
(dengan asumsi bahwa Anda pertama kali mengedit file paling banyak 9999999 hari yang lalu), atau, jika Anda ingat perbedaan antara kondisi undo saat ini dan yang diperlukan, gunakan Nh, Nmatau Nsmasing-masing untuk jam, menit dan detik. + :later N<CR><=> Ng+dan :later Nfuntuk menulis file.
:laterbekerja untuk saya vi(bukan vim - mencari "vi" di google tetapi semua hasil untuk "vim"), terima kasih!
Luc
@ Luc Hampir di mana pun Anda memiliki viperintah itu adalah symlink ke vim executable atau salinannya. Tidak sepenuhnya di mana-mana.
ZyX
@ZyX Saya berharap itu benar. Saya hanya menggunakan vi setelah bash melempar a vim: command not found. Hal berikutnya yang saya lakukan adalah alias vim=vikarena saya mengetiknya secara otomatis, tetapi ini adalah vi yang lama. Juga, redo (ctrl + r) akan berfungsi dengan baik seandainya vi menjadi alias untuk vim.
Luc
2
9999999d adalah 27395 tahun yang lalu. Saya berasumsi bahwa fitur undo tidak diterapkan di vi saat itu. Anda mungkin ingin menghemat usaha pengetikan yang lengkap dan menggunakan angka yang masuk akal. 9999d correspongs hingga sekitar 27 tahun, 999d hingga 2,7 tahun. Saya kira dalam kebanyakan kasus itu sudah cukup ...
<Undo> or *undo* *<Undo>* *u*
u Undo [count] changes. {Vi: only one level}
*:u* *:un* *:undo*
:u[ndo] Undo one change. {Vi: only one level}
*CTRL-R*
CTRL-R Redo [count] changes which were undone. {Vi: redraw screen}
*:red* *:redo* *redo*
:red[o] Redo one change which was undone. {Vi: no redo}
*U*
U Undo all latest changes on one line. {Vi: while not
moved off of it}
Saya tahu tentang CtrlrVim sendiri, tetapi pengikatan khusus ini tidak berfungsi di VsVim (setidaknya tidak di pengaturan saya?).
Apa yang tidak bekerja bagaimanapun, adalah perintah :red. Ini sedikit lebih merepotkan daripada yang di atas, tetapi masih baik ketika Anda benar-benar membutuhkannya.
Diturunkan karena pertanyaannya adalah menanyakan secara khusus tentang vim, bukan Visual Studio.
John Von Neumann
3
@JohnVonNeumann ini adalah terkait dengan Vim, atau binding setidaknya vim, hanya dalam konteks VS. Itulah yang membawa saya ke pertanyaan ini. Menghukum seseorang karena menambahkan sedikit info lebih lanjut tampaknya agak keras dan tidak pantas untuk Anda pikir, bahkan jika itu mungkin sedikit meluas melampaui ruang lingkup OP?
Kjartan
2
Secara praktis, :undolistsulit untuk digunakan dan pelacakan Vim :earlierdan :laterwaktu perubahan hanya dapat digunakan untuk perbaikan butir saja.
Karena itu, saya menggunakan plug-in yang menggabungkan fitur-fitur ini untuk menyediakan pohon visual undos yang dapat dijelajahi, yang disebut "Gundo."
Jelas, ini adalah sesuatu untuk digunakan hanya ketika Anda membutuhkan perbaikan yang halus, atau Anda tidak yakin dengan keadaan pasti dari dokumen yang ingin Anda kembalikan. Lihat: Gundo. Buat grafik Vim batalkan pohon dengan gaya
Jawaban:
Ctrl+r
sumber
Cmd + r
mengacaukan segalanya? Ini tentu saja melakukan sesuatu yang aneh; tetapiCtrl + r
hanya bekerja dengan baik untuk saya (Mac + tmux + vim)Lihat juga
:undolist
, yang menawarkan banyak jalur melalui riwayat undo. Ini berguna jika Anda secara tidak sengaja mengetik sesuatu setelah membatalkan terlalu banyak.sumber
:undolist
dan ketik:undo 178
(katakan) untuk mundur ke langkah 178.:undolist
?Gunakan
:earlier
/:later
. Untuk mengulang semua yang perlu Anda lakukan(dengan asumsi bahwa Anda pertama kali mengedit file paling banyak 9999999 hari yang lalu), atau, jika Anda ingat perbedaan antara kondisi undo saat ini dan yang diperlukan, gunakan
Nh
,Nm
atauNs
masing-masing untuk jam, menit dan detik. +:later N<CR>
<=>Ng+
dan:later Nf
untuk menulis file.sumber
:later
bekerja untuk sayavi
(bukan vim - mencari "vi" di google tetapi semua hasil untuk "vim"), terima kasih!vi
perintah itu adalah symlink ke vim executable atau salinannya. Tidak sepenuhnya di mana-mana.vim: command not found
. Hal berikutnya yang saya lakukan adalahalias vim=vi
karena saya mengetiknya secara otomatis, tetapi ini adalah vi yang lama. Juga, redo (ctrl + r) akan berfungsi dengan baik seandainya vi menjadi alias untuk vim.Dokumentasi Vim
sumber
Dalam mode perintah, gunakan Utombol untuk membatalkan dan Ctrl+ runtuk mengulang. Lihat http://www.vim.org/htmldoc/undo.html .
sumber
Pertama-tama tekan Esctombol untuk keluar dari mode edit.
Kemudian,
Untuk membatalkan , gunakan ukunci sebanyak yang ingin Anda batalkan.
Untuk mengulang , gunakan tombol Ctrl+r
sumber
Lihat bagian "undo" dan "redo" dari dokumen Vim .
: red [o] (Mengulang satu perubahan yang dibatalkan) dan {count} Ctrl+ r(Mengulangi {count} perubahan yang dibatalkan) keduanya ok.
Juga ,: {{}} awal (pergi ke keadaan teks lebih lama {count} kali) selalu bisa menjadi pengganti untuk undo dan redo.
sumber
CTRL+r
Huruf "r" adalah huruf kecil.
sumber
^r
dan^R
, dan Vim mengikuti itu.^X
(di manaX
bisa huruf apa saja).Menggunakan VsVim untuk Visual Studio?
Saya menemukan ini ketika bereksperimen dengan VsVim, yang menyediakan binding untuk perintah Vim di Visual Studio .
Saya tahu tentang CtrlrVim sendiri, tetapi pengikatan khusus ini tidak berfungsi di VsVim (setidaknya tidak di pengaturan saya?).
Apa yang tidak bekerja bagaimanapun, adalah perintah
:red
. Ini sedikit lebih merepotkan daripada yang di atas, tetapi masih baik ketika Anda benar-benar membutuhkannya.sumber
Secara praktis,
:undolist
sulit untuk digunakan dan pelacakan Vim:earlier
dan:later
waktu perubahan hanya dapat digunakan untuk perbaikan butir saja.Karena itu, saya menggunakan plug-in yang menggabungkan fitur-fitur ini untuk menyediakan pohon visual undos yang dapat dijelajahi, yang disebut "Gundo."
Jelas, ini adalah sesuatu untuk digunakan hanya ketika Anda membutuhkan perbaikan yang halus, atau Anda tidak yakin dengan keadaan pasti dari dokumen yang ingin Anda kembalikan. Lihat: Gundo. Buat grafik Vim batalkan pohon dengan gaya
sumber