Fitur Vim apa yang Anda gunakan? [Tutup]

13

Saya menghabiskan hampir sepanjang hari pemrograman di Vim dan saya yakin banyak dari Anda juga melakukannya. Fitur apa yang Anda gunakan yang membuat koding harian Anda jauh lebih baik? Salah satu yang saya gunakan adalah gv , yang akan memungkinkan Anda memilih kembali teks yang dipilih sebelumnya. Ini bagus untuk meng-reindenting!

Peter Mortensen
sumber
1
Untuk tujuan historis, inilah tautan ke pertanyaan SO asli: stackoverflow.com/questions/95072/…
Jax
Perhatikan komentar saya di bawah ini, dan Anda bahkan tidak perlu mengetik gv. :)
Nathan Long

Jawaban:

9

:% s / x / y / g

Perintah ini menggantikan semua instance x dalam file saat ini dengan y . Ini pada dasarnya hanya mencari dan mengganti, tapi saya menggunakannya sehingga sering karena saya telah belajar di tempat kerja yang telah menjadi sangat berharga.

Juga, / cari string

lalu n untuk menavigasi semua instance string pencarian di dalam file. Sangat bagus untuk melakukan tweak manual jauh lebih mudah, terutama jika Anda tidak bisa menerapkan aturan ke seluruh file.

karlgrz
sumber
Saya benar-benar bekerja pada konversi bagian besar basis kode kami di tempat kerja dan saya melakukannya sepenuhnya dengan ekspresi reguler vim (sejauh ini). Ini bekerja dengan sangat baik!
Frew Schmidt
Tambahkan 'c' di akhir itu untuk membuat perintah interaktif. mis:% s / x / y / gc
sml
1
Perhatikan bahwa %adalah tempat untuk melakukan penggantian - %berarti "file saat ini." Jika Anda menyorot beberapa garis dan jenis secara visual :s, Anda dapat melakukan substitusi hanya dalam pilihan itu.
Nathan Long
7

== melakukan indentasi otomatis yang bagus pada baris saat ini.

Namun, biasanya, saya menggunakan =dengan gerakan, seperti =Gindentasi ke akhir file, atau =i}untuk indentasi di dalam set kurung kurawal saat ini.

Nathan Long
sumber
2
Juga perlu diingat >> dan << yang secara manual dapat melakukan (un) indentasi.
Frew Schmidt
@ Frank - ya Selain itu, jika Anda menambahkan vmap <Tab> >gvdan vmap <S-Tab> <gvke Anda .vimrc, Anda dapat indent dan indindent masing-masing dengan Tab dan Shift-Tab, DAN itu akan segera kembali ke mode pemilihan visual sehingga Anda dapat indent atau unindent lebih lanjut.
Nathan Long
6

=% untuk indentasi otomatis semuanya dalam satu blok kode.

Kristo
sumber
Oooh! Itu baru bagiku!
Frew Schmidt
Itu berfungsi jika kursor Anda ada di awal {. Jika Anda berada di dalam blok, Anda dapat melakukannya =i{, untuk "indentasi di dalam kurung kurawal."
Nathan Long
5

Gunakan *dalam mode perintah untuk mencari kata di bawah kursor.

Jonas
sumber
1
Dan jangan lupa itu perintah saudara perempuan, #, yang melakukan hal yang sama tetapi berjalan mundur bukannya maju!
Frew Schmidt
5

The :!perintah - ternilai untuk lsing, dan "sudo tee" trik.

Saya diminta untuk menjelaskan trik tee. Pada dasarnya, ini memungkinkan Anda untuk menyimpan file teks dengan hak admin, bahkan jika Anda tidak memulai VIM sebagai root:

:w !sudo tee %
orang-b
sumber
Anda mungkin ingin menjelaskan trik "sudo tee" di sini :-) Saya juga suka melakukan: urutkan setelah menyoroti definisi variabel dan yang lainnya.
Frew Schmidt
Anda benar-benar dapat mengubah Vim menjadi editor "skrip" yang hebat menggunakan:! dan beberapa skrip shell / Python / Perl / lainnya.
Jonas
Saya sebenarnya memiliki alternatif !ls, yang menjalankan vnew, output r!lske buffer baru, dan menyusut secara horizontal. Saya tidak dapat diganggu untuk mengingat semua file dalam direktori dengan lebih dari tiga di dalamnya;)
new123456
4
.

Memukul. kunci mengulangi perintah sebelumnya. Bagus untuk, katakanlah, mengedit .ini, atau lebih.

Phoshi
sumber
ini sangat kuat, tetapi perlu sedikit getaran sebelum Anda benar-benar bisa melakukannya.
aaron
3

penyorotan warna sintaksis

mas
sumber
2

Saya selalu menggunakan gq untuk melakukan re-line break pada email, file teks, dll. Sangat berguna ketika membalas email (saya menggunakan pinus) dan mengedit beberapa balasan sebelumnya.

erichui
sumber
Oooh, aku benar-benar lupa tentang ini!
Frew Schmidt
Mengapa, oh mengapa, tidak dapat klien email yang lebih populer mendukung fungsi serupa?
erichui
Baru-baru ini saya menggunakan gw bukan gq karena menjaga posisi kursor
SergioAraujo
2

Di mana untuk memulai ... Inilah hal-hal yang dapat saya ingat yang telah saya gunakan dalam 5 menit terakhir ini.

  • NERD Tree - Penelusuran file. Membuat VIM lebih seperti IDE.
    • Satu hal besar bagi saya adalah kemampuan untuk cdke direktori dan kemudian turun ke prompt shell melalui pemetaan shell saya (di bawah).
  • ci untuk mengosongkan apa pun yang Anda terjebak di antara.
  • :! untuk meluncurkan aplikasi standar.
    • Saya memiliki pemetaan untuk meluncurkan prompt shell, klien mysql, file log apache, dll.
    • Integrasi subversi selalu menyenangkan. Cepat diffs, stats, dll
  • :abbr untuk membuat pengetikan berulang blok besar hilang.
  • Tab. Perlu saya katakan lebih?
  • Memisahkan file, selalu bagus. :Sexselalu menyenangkan.
  • :set paste! untuk menjaga agar indent menjalankan amuk tidak berjalan.
Jack M.
sumber
Saya menggunakan semua ini kecuali abbr. Saya cenderung membuat lebih banyak makro daripada singkatan.
Frew Schmidt
2

ZZ simpan dan keluar (bukan: wq!)

dogbane
sumber
Hah? Bagaimana dengan x ?
DevSolar
1

Saya banyak menggunakan perintah berikut saat menulis atau melintasi kode C / Tcl / Perl:

salin-tempel kode

CTRL-fdan CTRL-buntuk traversal maju dan mundur halaman untuk goto start dari baris
%demi blok
^
$ akhir baris terakhir

mulai memilih kode menggunakan perintah v(mode visual) dan salah satu kunci traversal di atas
yuntuk salinan
p untuk menempel

s untuk menghapus karakter dan mode penyisipan goto untuk mengetik teks baru.

Travers level kode (membutuhkan disiplin gaya pengkodean)

]]untuk memulai fungsi berikutnya
[[untuk memulai fungsi prev

CTRL-] untuk melompat ke definisi variabel / fungsi / makro jika tag tersedia.

Cari

* => kata pencarian (atau teks yang dipilih menggunakan v) dalam arah maju
# => kata pencarian (atau teks yang dipilih menggunakan v) dalam arah mundur
n => jalankan perintah pencarian sebelumnya dalam arah maju
N => jalankan perintah pencarian sebelumnya dalam arah mundur

Semua perintah di atas dapat diawali dengan angka untuk menandakan berapa kali untuk mengeksekusinya. Realisasi kekuatan dimensi tambahan ini datang perlahan ketika seseorang menggunakan vim semakin banyak dan menantang diri sendiri untuk meningkat.

secureBadshah
sumber
Ah,]] dan [[baru bagi saya. Itu keren!
Frew Schmidt
0

Saya baru saja memasukkan Teks. Yang lainnya hanyalah ... Gula.

akira
sumber
0

Saya adalah mantan pengguna TextPad, dan telah menghafal banyak tombol akselerator program itu. Salah satu hal pertama yang saya lakukan di Vim adalah mempelajari fungsi peta untuk menjaga konsistensi (pencarian F5, penggantian F8, dll.). Saya membuat skema warna pribadi saya, dan meminjam banyak dari file vimrc orang lain. Viva Vim! Dapat dikonfigurasi hingga tingkat apa pun.

wbogacz
sumber