Apa perintah / penekanan tombol vim yang paling sering digunakan?

112

Saya adalah pemrogram Ruby yang mencoba untuk beralih dari Textmate ke MacVim, dan saya mengalami kesulitan untuk menelusuri daftar besar hal-hal yang dapat Anda lakukan di VIM dan semua penekanan tombol untuk mereka. Saya lelah mendengar "Anda dapat menggunakan 'I' untuk memasukkan teks, atau 'a' untuk menambahkan teks setelah karakter, atau 'A' untuk menambahkan teks di akhir baris, atau…" Saya tidak dapat membayangkan setiap orang menggunakan semua 20 penekanan tombol yang berbeda untuk menavigasi teks, 10 atau lebih tombol untuk mulai menambahkan teks, dan 18 cara untuk memilih blok dalam secara visual. Atau apakah kamu !?

Lembar contekan ideal saya adalah 30-40 tombol atau perintah yang paling sering digunakan yang digunakan semua orang untuk menulis kode setiap hari, bersama dengan plugin penting mutlak yang digunakan oleh para rubyist setiap hari dan 10 perintah yang paling sering digunakan untuk mereka. Secara teori, setelah saya memilikinya dan mulai menjadi mahir dalam VIM seperti halnya saya di Textmate, maka saya dapat mulai mempelajari ribuan perintah VIM lainnya yang akan membuat saya lebih efisien.

Atau, apakah saya mempelajari VIM dengan cara yang salah?

Clinton
sumber
9
Referensi wajib untuk cafepress.com/geekcheat.11507711 .
geekosaur
1
Diberi tag ulang untuk menghapus 'ruby' dan menambahkan 'pintasan keyboard'. Sepertinya lebih tepat.
"Apakah saya belajar Vim dengan cara yang salah?" - nah, Anda hanya perlu memulai dengan beberapa hal mendasar, dan ingat bahwa Anda masih akan mempelajari lebih banyak perintah setahun dari sekarang. Mungkin suatu saat Anda benar-benar akan menggunakan semua perintah! Tapi tidak ada yang menggunakan semuanya sejak hari pertama.
Cascabel

Jawaban:

306

Inilah lembar tip yang saya tulis sekali, dengan perintah yang sebenarnya saya gunakan secara teratur:

Referensi

Umum

  • Hampir semua perintah dapat diawali dengan angka untuk hitungan berulang. misalnya. 5dd menghapus 5 baris
  • <Esc> membuat Anda keluar dari mode apa pun dan kembali ke mode perintah
  • Perintah yang diawali dengan : dijalankan pada baris perintah di bagian bawah layar
  • : bantuan bantuan dengan perintah apa pun

Navigasi

  • Gerakan kursor: ← hjk l →
  • Dengan kata-kata:
    • w kata berikutnya (dengan tanda baca); W kata berikutnya (dengan spasi)
    • b kata belakang (dengan tanda baca); B kembali kata (dengan spasi)
    • e kata akhir (dengan tanda baca); E akhir kata (dengan spasi)
  • Menurut baris:
    • 0 awal baris; ^ non-spasi pertama
    • $ akhir baris
  • Menurut paragraf:
    • { baris kosong sebelumnya; } baris kosong berikutnya
  • Menurut file:
    • gg awal file; G akhir file
    • 123G pergi ke nomor baris tertentu
  • Dengan penanda:
    • mx menetapkan tanda x ; 'x pergi ke mark x
    • '. pergi ke posisi edit terakhir
    • '' kembali ke titik terakhir sebelum melompat
  • Bergulir:
    • ^ F maju layar penuh; ^ B layar penuh mundur
    • ^ D setengah layar; ^ U up setengah layar
    • ^ E gulir satu baris ke atas; ^ Y gulir satu baris ke bawah
    • zz garis kursor tengah

Mengedit

  • u membatalkan; ^ R ulangi
  • . ulangi perintah pengeditan terakhir

Memasukkan

Semua perintah penyisipan diakhiri dengan <Esc>untuk kembali ke mode perintah.

  • saya memasukkan teks di kursor; Saya memasukkan teks di awal baris
  • sebuah teks append setelah kursor; Sebuah teks append setelah akhir baris
  • o buka baris baru di bawah; O buka baris baru di atas

Berubah

  • r mengganti karakter tunggal; R ganti beberapa karakter
  • s mengubah karakter tunggal
  • cw mengubah kata; C perubahan ke akhir baris; cc mengubah seluruh baris
  • c<motion> mengubah teks ke arah gerakan
  • ci ( ubah di dalam tanda kurung (lihat pemilihan objek teks untuk lebih banyak contoh)

Menghapus

  • x hapus karakter
  • dw hapus kata; D hapus sampai akhir baris; dd hapus seluruh baris
  • d<motion> menghapus ke arah gerakan

Potong dan tempel

  • yy salin baris ke buffer tempel; dd garis potong menjadi buffer paste
  • p tempelkan buffer di bawah garis kursor; P tempelkan buffer di atas garis kursor
  • xp menukar dua karakter ( x untuk menghapus satu karakter, lalu p untuk mengembalikannya setelah posisi kursor)

Blok

  • v aliran blok visual; V garis blok visual; ^ V kolom blok visual
    • kebanyakan perintah gerak memperluas blok ke posisi kursor baru
    • o memindahkan kursor ke ujung lain blok
  • d atau x potong blok menjadi penyangga pasta
  • y salin blok ke buffer tempel
  • > blok indentasi; < blokir unindent
  • gv pilih ulang blok visual terakhir

Global

  • :% s / foo / bar / g gantikan semua kemunculan "foo" menjadi "bar"
    • % adalah kisaran yang menunjukkan setiap baris dalam file
    • / g adalah bendera yang mengubah semua kemunculan dalam satu baris, bukan hanya yang pertama

Mencari

  • / cari maju; ? cari mundur
  • * mencari kata di bawah kursor; # cari kata mundur di bawah kursor
  • pertandingan berikutnya ke arah yang sama; N pertandingan berikutnya di arah yang berlawanan
  • fx maju ke karakter berikutnya x ; Fx mundur ke karakter sebelumnya x
  • ; pindah lagi ke karakter yang sama ke arah yang sama; , pindah lagi ke karakter yang sama dengan arah berlawanan

File

  • : w menulis file ke disk
  • : wname menulis file ke disk sebagainame
  • ZZ menulis file ke disk dan keluar
  • : n edit file baru; : n! edit file baru tanpa menyimpan perubahan saat ini
  • : q berhenti mengedit file; : q! berhenti mengedit tanpa menyimpan perubahan
  • : e edit file yang sama lagi (jika diubah di luar vim)
  • : e. penjelajah direktori

Windows

  • ^ Wn jendela baru
  • ^ Wj turun ke jendela berikutnya; ^ Wk ke atas jendela sebelumnya
  • ^ W_ memaksimalkan jendela saat ini; ^ W = membuat semua jendela berukuran sama
  • ^ W + meningkatkan ukuran jendela; ^ W- memperkecil ukuran jendela

Navigasi Sumber

  • % lompat ke tanda kurung / tanda kurung / kurung siku yang cocok, atau blok bahasa jika modul bahasa dimuat
  • gd pergi ke definisi simbol lokal di bawah kursor; ^ O kembali ke posisi sebelumnya
  • ^] lompat ke definisi simbol global (membutuhkan tagsfile); ^ T kembali ke posisi sebelumnya (tumpukan posisi sewenang-wenang dipertahankan)
  • ^ N (dalam mode sisipkan) penyelesaian kata otomatis

Tunjukkan perubahan lokal

Vim memiliki beberapa fitur yang memudahkan untuk menyorot baris yang telah diubah dari versi dasar di kontrol sumber. Saya telah membuat skrip vim kecil yang membuatnya mudah: http://github.com/ghewgill/vim-scmdiff

Greg Hewgill
sumber
1
+1 Relatif minimal, meskipun saya harus mengakui bahwa saya tidak menemukan diri saya menggunakan perintah jendela atau bernavigasi dengan apa pun selain tombol panah / pageup / pagedown / home / end, dan gg / G. Oh, dan untuk navigasi nomor baris Anda juga dapat menggunakan: 123 (mode perintah).
2
Lembar contekan yang bagus. Saya akan menambahkan ^ w ^ w untuk siklus melalui windows ,: x bukannya ZZ untuk konsistensi, tx maju sebelum karakter dan Tx mundur.
romainl
Saya harus mencatat bahwa ini hanya dasar dari apa yang saya gunakan. Saya membuat daftar ini sebagai alat untuk mengajarkan vim kepada orang lain. Saya menggunakan banyak perintah lain lebih jarang, dan juga memiliki berbagai alias dan makro yang disiapkan untuk membantu saya menggunakan vim dengan lebih efektif.
Greg Hewgill
2
Jika Anda ingin menghindari Esckunci (dan RSI?), Anda dapat menggunakan ^[. ^cberfungsi juga (tetapi tidak memperluas singkatan). Sumber: vim.wikia.com/wiki/Avoid_the_escape_key
Lian
22

http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html

Ini adalah hal terhebat yang pernah ada untuk mempelajari VIM.

Justin Thomas
sumber
Saya belum pernah melihat ini sebelumnya, referensi yang sangat keren setelah Anda tahu apa yang dilakukan perintah.
amccormack
3
Namun, bagian "grafis" tidak berguna jika Anda tidak memiliki keyboard qwerty.
romainl
5
Sungguh mengherankan saya bahwa memposting tautan (yang telah diposkan sampai mati sudah btw) menarik banyak perhatian sementara bekerja ekstra poster lain tidak ...
Lieven Keersmaekers
Pemenang yang jelas dalam posting vim: stackoverflow.com/questions/1218390/…
Justin Thomas
4

Sudahkah Anda menjalankan tutorial built-in Vim? Jika tidak, buka baris perintah dan ketik vimtutor. Ini cara yang bagus untuk mempelajari perintah awal.

Vim memiliki fleksibilitas dan kekuatan yang luar biasa dan, jika Anda seperti kebanyakan pengguna vim, Anda akan belajar banyak perintah baru dan melupakan perintah lama, lalu mempelajarinya kembali. Bantuan bawaan bagus dan layak untuk penjelajahan berkala untuk mempelajari hal-hal baru.

Ada beberapa FAQ dan lembar contekan yang bagus untuk vim di internet. Saya akan merekomendasikan mencari vim + faqdan vim + cheatsheet. Cheat-Sheets.org # vim adalah sumber yang baik, seperti wiki Vim Tips .

Manusia Timah
sumber
Saya baru tahu tentang itu, dan untungnya itu terinstal di Mac. Mencoba sekarang (pada 1 AM…)
Clinton
Saya telah menggunakan vim untuk waktu yang lama, dan ini adalah salah satu hal pertama yang saya instal di mesin. MacVim , di Mac OS sangat bagus. Saya cenderung mengkompilasi vim dari sumber di kebanyakan kotak Linux yang saya gunakan, hanya karena kebanyakan distro tidak terkini, atau tidak memiliki dukungan bahasa yang ditetapkan dengan benar. Saya menyimpan versi terbaru dari my ~/.vimrc, ~/.gvimrcdan ~/.vimdirektori dalam tar-ball ketika saya harus mengatur sesuatu. Menyalinnya dan mengekstrak file memungkinkan saya menjalankan vim dengan semua perintah biasa dan skema warna saya dalam beberapa menit di Windows, Mac dan Linux.
Tin Man
3

Apa yang kebanyakan orang lakukan adalah memulai dengan dasar-dasar telanjang, seperti mungkin i, yw, yy, dan p. Anda dapat terus menggunakan tombol panah untuk bergerak, memilih teks dengan mouse, menggunakan menu, dll. Kemudian ketika sesuatu memperlambat Anda, Anda mencari cara yang lebih cepat untuk melakukannya, dan secara bertahap menambahkan lebih banyak perintah. Anda mungkin mempelajari satu perintah baru per hari untuk sementara waktu, lalu akan mengalir ke satu perintah per minggu. Anda akan merasa cukup produktif dalam sebulan. Setelah satu tahun Anda akan memiliki repertoar yang cukup solid, dan setelah 2-3 tahun Anda bahkan tidak akan secara sadar memikirkan apa yang diketik oleh jari-jari Anda, dan akan terlihat aneh jika Anda harus mengejanya untuk seseorang. Saya belajar vi pada tahun 1993 dan masih mengambil 2 atau 3 perintah baru setahun.

Karl Bielefeldt
sumber
3

Cheatsheet @Greg Hewgill sangat bagus. Saya mulai beralih dari TextMate beberapa bulan yang lalu. Sekarang saya sama produktifnya dengan TM dan selalu kagum dengan kekuatan Vim.

Inilah cara saya beralih . Mungkin bisa bermanfaat bagi Anda.

Grosso modo, menurut saya bukan ide yang baik untuk melakukan peralihan radikal. Vim sangat berbeda dan yang terbaik adalah melangkah secara progresif.

Dan untuk menjawab pertanyaan Anda, ya, saya menggunakan semua iaIAoOsetiap hari untuk masuk ke mode penyisipan. Ini memang terlihat aneh pada awalnya tetapi Anda tidak benar-benar memikirkannya setelah beberapa saat.

Beberapa perintah sangat berguna untuk tugas yang berhubungan dengan pemrograman:

  • rdan Runtuk mengganti karakter
  • <C-a>dan <C-x>untuk menambah dan mengurangi angka
  • cituntuk mengubah isi dari tag HTML, dan variannya ( cat, dit, dat, ci(, dll)
  • <C-x><C-o>(dipetakan ke ,,) untuk omnicompletion
  • pemilihan blok visual dengan <C-v>
  • dan seterusnya…

Setelah Anda terbiasa dengan cara Vim, menjadi sangat sulit untuk tidak memukul oatau xsepanjang waktu saat mengedit teks di beberapa editor atau bidang teks lain.

romainl
sumber
2

Saya tidak dapat membayangkan semua orang menggunakan semua 20 penekanan tombol yang berbeda untuk menavigasi teks, 10 atau lebih tombol untuk mulai menambahkan teks, dan 18 cara untuk memilih blok dalam secara visual. Atau apakah kamu !?

Saya lakukan.

Secara teori, setelah saya memilikinya dan mulai menjadi mahir dalam VIM seperti halnya saya di Textmate, maka saya dapat mulai mempelajari ribuan perintah VIM lainnya yang akan membuat saya lebih efisien.

Itu cara yang benar untuk melakukannya. Mulailah dengan perintah dasar dan kemudian ambil perintah yang meningkatkan produktivitas Anda. Saya suka mengikuti blog ini untuk mendapatkan tips tentang cara meningkatkan produktivitas saya dengan vim.

Jeff
sumber
2

tuxfiles.org memiliki lembar contekan yang cukup bagus. Saya pikir ada beberapa poin untuk mempelajari perintah:

  • Bacalah lembar contekan secara teratur. Jangan khawatir tentang menggunakan semuanya, atau mengingat semua kunci, ketahuilah bahwa perintah itu ada. Cari perintah dan gunakan ketika Anda menemukan diri Anda melakukan sesuatu yang berulang-ulang.
  • Jika Anda sering melakukan sesuatu (seperti menghapus seluruh baris setelah karakter tertentu d$), lakukan pencarian cepat di Google untuk melihat apakah Anda dapat menemukan perintah untuk itu.
  • Tuliskan perintah yang menurut Anda berguna dan simpan daftar itu di tempat yang dapat Anda lihat saat Anda menulis kode. Saya akan membantah mencetak sesuatu dan sebaliknya mendorong Anda untuk menggunakan catatan tempel hanya untuk beberapa perintah pada satu waktu.
  • Jika memungkinkan, perhatikan programmer lain menggunakan vim, dan tanyakan perintah apa yang mereka gunakan saat Anda melihat mereka melakukan sesuatu yang menarik.

Selain tips ini, ada beberapa konsep dasar yang harus Anda pahami.

  • vim akan menggunakan karakter yang sama untuk mewakili fungsi yang sama. Misalnya, untuk menghapus baris setelah penggunaan karakter d$. Untuk menyorot garis setelah penggunaan karakter tertentu v$. Jadi perhatikan yang $menunjukkan bahwa Anda akan melakukan sesuatu ke akhir baris dari tempat kursor Anda saat ini.
  • udiurungkan, dan ctrl+rdiulang.
  • meletakkan nomor di depan perintah akan mengeksekusinya berulang kali. 3ddakan menghapus garis tempat kursor Anda berada dan dua baris berikutnya, demikian pula 3yyakan menyalin garis tempat kursor Anda berada dan dua baris berikutnya.
  • memahami cara menavigasi buffer yang digunakan :lsuntuk membuat daftar buffer, dan :bn, :bpuntuk menggilirnya.
  • membaca tutorial yang ditemukan di:help Ini mungkin cara terbaik untuk 'mempelajari tali', dan perintah lainnya yang akan Anda pelajari melalui penggunaan.
amccormack
sumber
2

Letakkan ini di .bashrc Anda untuk membuka vim dengan file yang terakhir diedit pada baris yang terakhir diedit

alias vil="vim  +\"'\"0"
modesto
sumber
1

Buka Pengeditan Efisien dengan vim dan pelajari apa yang Anda butuhkan untuk memulai. Tidak semua yang ada di halaman itu penting untuk dimulai, jadi pilihlah apa yang Anda inginkan.

Dari sana, gunakan vim untuk semuanya. "hjkl", "y", dan "p" akan sangat membantu Anda, bahkan jika itu bukan cara yang paling efisien. Ketika Anda menghadapi tugas yang tidak Anda ketahui kunci ajaibnya untuk melakukannya secara efisien (atau sama sekali), dan Anda mendapati diri Anda melakukannya lebih dari beberapa kali, carilah. Sedikit demi sedikit itu akan menjadi kebiasaan.

Saya menemukan vim menakutkan beberapa bulan yang lalu (kembali ketika tidak ada huruf "m" pada akhirnya), tetapi hanya butuh sekitar satu minggu penggunaan tetap untuk menjadi efisien. Saya masih menganggapnya sebagai editor tercepat untuk menyelesaikan pekerjaan.

mikestew.dll
sumber
Tautan ke "Pengeditan Efisien dengan vim" sudah mati sekarang. Saya pikir alternatif dapat ditemukan di robertames.com/files/vim-editing.html
Damian Powell