Vi vs vim, atau, adakah alasan mengapa saya ingin menggunakan vi?

84

Saya tahu sedikit tentang * editor teks NIX (saat ini bermigrasi dari nanoke vim), dan, setelah melihat-lihat sedikit di Unix & Linux SE, telah memperhatikan bahwa vidigunakan daripada 'vim' dalam sejumlah pertanyaan. Saya tahu bahwa 'vim' adalah singkatan dari 'Vi IMproved', dan, dengan mengingat hal itu, saya bertanya-tanya mengapa ada orang yang lebih suka menggunakan vi daripada vim. Apakah vi memiliki keunggulan signifikan dibandingkan vim?

Sunting: Saya pikir pertanyaan saya disalahtafsirkan. Saya tahu bahwa vim, untuk sebagian besar, jauh lebih kuat dan lebih lengkap daripada vi. Yang ingin saya ketahui adalah jika ada kasus yang memungkinkan di mana vi memiliki keunggulan dibandingkan vim, seperti penggunaan memori yang lebih sedikit, prevalensi pada sistem * nix, dll.

empatik
sumber
25
Yang menyenangkan viadalah Anda bisa mengharapkannya ada di setiap sistem yang sesuai dengan POSIX.
jordanm
1
Sebenarnya, instalasi standar Ubuntu termasuk vidan tidak vim.. Ubuntu adalah salah satu distro yang paling ramah pengguna ;-)
amyassin
10
@amyassin Ini tidak benar, Ubuntu, seperti kebanyakan distribusi Linux, termasuk vim. vihanyalah tautan simbolis yang pada akhirnya menunjuk ke viminstalasi default.
jlliagre
2
Saran saya adalah: Gunakan Vim, tetapi pelajari untuk vimenggunakan spesifikasi POSIXvi . Dengan begitu Anda memiliki pengetahuan portabel serta mengetahui ekstensi Vim.
Wildcard
1
@DDK Anda melewatkan "akhirnya" dalam pernyataan saya. "ls-l / etc / alternative / vi" -> "lrwxrwxrwx 1 root root 17 janv. 1 2016 / etc / alternative / vi -> /usr/bin/vim.tiny"
jlliagre

Jawaban:

61

viadalah (juga) editor standar POSIX . Ada banyak implementasi dan vimkemungkinan yang paling populer setidaknya di Linux.

Sementara banyak OS tradisional Unix yang memberikan viimplementasi sangat dekat dengan standar, vimtelah menambahkan banyak fitur tambahan yang menjadikannya pedang bermata dua.

Tentu saja, ekstensi ini biasanya dirancang untuk memudahkan proses pengeditan dan menyediakan fitur dan fungsi yang bermanfaat. Namun, begitu Anda terbiasa dengan beberapa dari mereka (bukan yang kosmetik seperti pewarnaan sintaks tetapi yang mengubah perilaku editor) Anda dapat dengan mudah lupa bahwa mereka spesifik; dan menggunakan implementasi yang berbeda, termasuk yang didasarkan pada kode BSD asli bisa sangat frustasi. Yang sebaliknya juga benar.

Ini sangat mirip dengan masalah yang terjadi dengan skrip yang menggunakan bashisme non POSIX yang dihadapkan pada implementasi shell yang lebih ortodoks seperti dashatau ksh.

Jlliagre
sumber
29

Tidak ada vi yang tidak memiliki keunggulan signifikan dibandingkan vim, melainkan sebaliknya. Vim memiliki lebih banyak keunggulan daripada Vi. Anda mungkin tertarik pada: Mengapa, oh MENGAPA, lakukan itu #? @! nuthead menggunakan vi?

Mengedit juga membaca: Apakah VIM sepadan dengan usaha belajar?

abhixec
sumber
4
Ya. Saya tidak menggunakan IDE apa pun karena editor yang mereka paksa Anda gunakan bukan Vim.
Keith
1
@Keith saya menggunakan Xcode dan Eclipse dan saya masih bisa melakukan pengeditan dengan vi saja.
ott--
@Keith SlickEdit memiliki emulasi Vim yang hebat, dan IDEA akan semakin dekat dengannya. Juga, Visual Studio memiliki ViEmu.
demonkoryu
1
IntellIJ juga memiliki plugin vim yang bagus yang menimpa perilaku editor standar.
JulienD
24

Setelah menghabiskan sebagian besar hidup saya (tidak termasuk masa kanak-kanak) mengedit dengan nyaman dengan Vim, saya menghabiskan sekitar satu bulan hanya menggunakan vi. Dalam melakukannya, saya menyadari bahwa saya telah bergantung pada Vim untuk semua kebutuhan modifikasi teks saya. Sebelum perjalanan saya dengan vi, setiap kali saya harus mengganti beberapa teks atau melakukan operasi serupa dalam sekelompok besar file, saya hanya akan membuka file dalam Vim dan menjalankan :bufdoperintah, dan setiap kali saya harus indent atau memformat beberapa file, Saya akan membukanya di Vim dan menggunakan Vim =dan gwperintah. Saya tergantung pada Vim. Setelah menyadari vi tidak memiliki perintah ini, saya dipaksa untuk melakukan transformasi teks massal seddan belajar banyak tentang program lain seperti awkdanindent. Meskipun saya beralih kembali menggunakan Vim pada akhirnya, pengetahuan yang saya peroleh dengan menggunakan editor yang kurang fitur adalah substansial dan telah terbukti sangat berguna. Selain belajar tentang alat di luar editor teks, saya juga menjadi lebih akrab dengan vi. Setiap kali saya bekerja pada sistem baru atau server yang tidak memiliki Vim, saya merasa jauh lebih nyaman menggunakan vi daripada yang saya lakukan sebelum perjalanan selama sebulan.

Juga, bulan lalu saya menginstal Linux pada tablet WM8650 yang murah dan menemukan ada perbedaan kinerja yang nyata antara Vim dan vi, jadi saya cenderung menggunakan vi pada tablet.


sumber
3
Saya menemukan bahwa ini adalah masalah umum dalam IT-alat yang membantu kita juga dapat mengaburkan hal-hal yang kita akan lebih baik belajar.
danno
Sebenarnya, penanganan di tempat mengedit file pada banyak file tidak bisa portable dilakukan dengan AWK atau Sed baik . ( -iSwitch pada keduanya adalah ekstensi GNU.) Tetapi Anda dapat menggunakannya dengan portable dengan sesuatu sepertifor f in *; do printf '%s\n' '%!sed -e '\''some sed command'\' x | ex "$f"; done
Wildcard
12

Saya akan mengalami kesulitan hidup tanpa vim tetapi saya tidak tahan vi . Namun, mempelajari yang pertama setidaknya akan meninggalkan Anda dengan ide bagaimana menghadapi nanti ketika itu semua yang tersedia.

Antarmuka vim secara default sebenarnya cukup dekat dengan vi. Jika saya bekerja pada sistem dengan vim hal pertama yang saya lakukan adalah menambahkan hal ini ke ~/.vimrc:

syntax enable
set nocp
set wildmenu

Ada banyak hal lain yang saya sukai - nowrap dan numbering on, dll - tetapi tidak apa-apa. "sintaks aktifkan" hanya menyalakan penyorotan sintaksis dasar (agak beefier: filetype plugin onjuga mendasar); "nocp" mematikan vi kompatibilitas dan inilah yang mulai membedakan vim dari ye olde vi (mis., ini memungkinkan showmodeyang membuat seluruh pengalaman menjadi lebih manusiawi, karena Anda sekarang memiliki beberapa petunjuk tentang apakah Anda memegang komando atau ~ INSERT ~ mode). "wildmenu" hanya memberi Anda menu penyelesaian horizontal ketika melakukan beberapa hal, yang membuat hidup lebih mudah juga.

Fasilitas pengeditan teks dari vim tidak ada duanya - selain emacs, saya belum pernah melihat atau mendengar sepotong perangkat lunak yang mendekati. Mereka tidak mudah dipelajari, tetapi begitu Anda mengetahuinya, mereka jauh lebih cepat daripada menu mouse untuk digunakan dan jauh lebih dinamis daripada alternatif makro kunci sederhana dalam antarmuka berbasis menu mouse. Untuk pemrograman, saya kadang-kadang menggunakan vim di samping IDE seperti Eclipse, tapi saya melakukan sebagian besar pekerjaan di vim.

Jika Anda mengambil jalur itu, lol, lihatlah plugins pelengkapan otomatis dan taglist. Dan waspadai sisi gelapnya.

goldilocks
sumber
Saya selalu menambahkan set mouse=ajuga.
ott--
Mengenai komentar pemrograman Anda, Anda mungkin menemukan eclim menarik ...
ire_and_curses
@ire_and_curses: belum mencobanya. Eclipse dan vim keduanya memonitor file sumber dan memungkinkan mereka untuk diperbarui secara eksternal, dan membalik dari satu desktop ke yang lain membalik dari satu desktop ke yang lain. Sepertinya ide yang bagus.
goldilocks
Meskipun saya tidak berpikir jawaban ini harus menjadi jawaban yang dipilih (karena bias), itu adalah jenis perspektif yang sangat membantu untuk memahami perbedaan. Terima kasih telah mengambil posisi.
geneorama
8

Keuntungannya adalah vi biasanya sudah diinstal pada enterprise UNIX seperti AIX atau Solaris. Selain itu vim tidak dapat diakses di media instalasi.

dchirikov
sumber
1

Saya telah memperhatikan bahwa saya hanya memilih Vilebih VIMketika saya menyalin dan menyisipkan dokumen teks atau file konfigurasi yang saya gunakan catperintah. Ini karena ketika saya mencoba ctrl-cdan kemudian ctrl-vke VIMdokumen yang dibuka, itu memaksa semua baris untuk memiliki komentar di depan mereka. Jadi ketika saya gunakan Viuntuk ctrl-vatau pasteke dalam Vidokumen yang dibuka, itu menempel persis apa yang saya salin. Selain itu, saya gunakan VIMsepanjang hari.

Nikmati!

Tony-Caffe
sumber
5
Coba:set paste
Patrick
3
atur pastetoggle = <F2> dalam .vimrc ( vim.wikia.com/wiki/Toggle_auto-indenting_for_code_paste )
Dave
1

Seperti jawaban sebelumnya telah disebutkan, vi hadir dengan hampir semua sistem UNIX di luar sana.

Saya hanya ingin menambahkan contoh. Arch Linux adalah salah satu distro yang sangat populer dan ringan yang tidak ada Penginstalnya, atau distro dasar datang dengan vim secara default, namun keduanya datang dengan vi.

Ini bukan keuntungan untuk viper se , karena Anda hanya dapat menginstal vim secara manual, dan ada sedikit yang perlu Anda capai dalam instalasi yang memerlukan editor teks, dan tidak ada tempat vim lebih unggul daripada vi untuk tujuan yang dimaksud. Tetapi memahami perbedaan dan bahwa vi lebih di mana-mana dan ringan daripada vim memang memberikannya beberapa keunggulan niche.

Juga, hanya untuk menjadi komprehensif, belum ada yang secara eksplisit mengatakan bahwa vi adalah prekursor langsung ke vim. Vim dirancang secara khusus untuk menjadi segala yang ada, dan lebih banyak lagi.

Jadi dengan cara yang sangat langsung, vim lebih unggul dari vi, karena itu dirancang untuk menjadi .

StatGenGeek
sumber
1

Satu-satunya alasan untuk menggunakan vi daripada vim adalah ketika Anda tidak punya pilihan lain.

Ada banyak, banyak alasan mengapa vim berarti "vi ditingkatkan"!

Meminjam dari pos terkait saya menjawab: -

  1. Beberapa jendela - horizontal, vertikal & tab.
  2. Penyorotan visual.
  3. Bantuan online melalui perintah: help.
  4. Rekam makro ke dalam register yang bisa Anda jalankan.
  5. Urungkan (dan ulang) beberapa kali, alih-alih ganti vi lama yang gila.
  6. Sejarah baris perintah, riwayat pencarian.
  7. Seluruh bahasa disematkan bersama sejumlah fungsi yang tersedia, mis. Getcwd ()
  8. Pencocokan pola yang diperluas secara luas.
  9. Penyelesaian kata melalui ctrl-P & ctrl-N.
  10. Navigator file bawaan (sedikit kikuk, tetapi dapat bermanfaat).
  11. Kunci ESC benar-benar berhenti dari perintah yang Anda coba, yah, melarikan diri dari alih-alih (gila-gilaan) menjalankannya seperti yang dilakukan vi.
  12. Kemampuan untuk menjalankan perintah pada semua buffer, args atau windows melalui bufdo, argdo & windo.
Paul T
sumber
Anda mungkin bisa membawa alasan "banyak, banyak" yang Anda sebutkan di unix.stackexchange.com/a/425597/85039 jawaban di sini. Itu akan membuat jawaban ini sedikit lebih baik; kalau tidak, ini lebih mirip komentar daripada jawaban yang sebenarnya
Sergiy Kolodyazhnyy
Poin yang diambil. Jawaban diperbarui, meminjam dari jawaban terkait yang saya buat kemarin.
Paul T
1

Ini kutipan dari Vim Koans :

Master Wq dan master Unix

Master Unix tua datang ke Master Wq. “Saya bermasalah, Wq. Anda mengajarkan cara Vim. vi adalah suci tetapi Vim tidak; kode-nya tergeletak, fitur-fiturnya memori kerumunan; binernya besar, perilakunya tidak konsisten. Ini bukan cara Unix. Saya khawatir Anda menyesatkan murid-murid Anda. Apa yang bisa dilakukan?"

Tuan Wq mengangguk. "Kamu benar," katanya. “Vim rusak. Mari kita perbaiki. Dapatkah kita memulai?"

Master Unix tua setuju, dan membuka sebuah shell. Dia mengetik:

$ vi vim.c

Dia mulai kode. Master Wq mengawasi sebentar dan kemudian bertanya kepadanya, “Implementasi vi mana yang Anda gunakan? Nvi? Vim? Elvis? "

"Aku tidak tahu," kata master Unix. "Tidak masalah."

Tuan Wq mengangguk. Master Unix duduk tertegun sejenak dan menutup dokumennya tanpa disimpan.

modlin
sumber