Apa perbedaan antara w dan W dalam mode escape vim?

19

Saya melihat perintah vim help quickref untuk memindahkan kursor. Mengikuti baris membingungkan saya karena saya menemukan keduanya bekerja sama. Bisakah seseorang menguraikan perbedaan saya dengan sebuah contoh.

N  w            N words forward
N  W            N blank-separated WORDS forward

Pertanyaan yang sama juga berlaku untuk e dan E.

rahul.deshmukhpatil
sumber

Jawaban:

34

Menurut lembar contekan ini sepertinya akan menjadi tanda baca.

w   jump by start of words (punctuation considered words)
W   jump by words (spaces separate words)
e   jump to end of words (punctuation considered words)
E   jump to end of words (no punctuation)

Contoh

demo menggunakan w

          ss dari w

demo menggunakan W

          ss dari W

Perhatikan dalam demo pertama bagaimana ketika wsecara terus menerus menekan kursor mendarat pada tanda baca, sedangkan pada demo ke-2 tanda baca dilewati. Ini adalah perbedaan antara perintah huruf kecil dan setara huruf besar mereka.

slm
sumber
@slm: terima kasih banyak untuk demo yang luar biasa ini. dengan demo seperti itu tidak perlu membaca ans juga
rahul.deshmukhpatil
5

Ini sebenarnya cukup sederhana, whanya melompat ke kata berikutnya, tetapi semua tanda baca atau spasi putih memecah kata. Wseperti perintah industri-kata berikutnya kekuatan, kata-kata hanya dibatasi oleh spasi, baik itu tab, ruang atau baris baru. wberhenti pada tanda baca pembatas juga, jika Anda ingin menghadapinya.

Saya menemukan perbedaan paling bermanfaat dengan nama host:

birdman.cartoons.fictional.com # Fictional host

Dengan w, Anda berhenti di setiap bagian dari nama host dan titik-titik. Whanya melewatkan seluruh nama host dan pergi ke menu #. Keduanya juga berlaku untuk ddan cuntuk menghapus dan mengubah kata-kata.

Jika diposisikan di awal garis di atas, jika Anda ingin mengganti birdman.cartoonsdengan sesuatu yang lain, Anda akan menggunakan 3cwuntuk mengganti kedua bagian pertama dan titik di tengah. Anda tidak dapat melakukannya Wtanpa mengetik ulang seluruh nama host.

kurtm
sumber
2

Ini adalah perbedaan yang paling dipahami dengan mempertimbangkan bagaimana tanda baca dapat berdampak pada konsep Vim tentang apa yang membatasi kata.

Dalam hal contoh teks ini:

This line is space separated with no commas
however, this line is—note—comma, separated,see

wakan dengan senang hati melompat ke huruf pertama dari setiap kata di baris pertama, karena hanya ada ruang untuk bernegosiasi. Ini akan gagal parah pada baris 2 dengan tanda baca, turun pada huruf pertama dari setiap kata dan koma dan en dash. Untuk berpindah dari kata ke kata di baris 2, Anda harus menggunakan Shiftw1 .

1. Bahkan kemudian, Vim melihat "is-note-koma" sebagai satu kata.

jasonwryan
sumber
1

Perbedaannya dapat ditemukan dalam halaman bantuan internal vim. Mari kita pertama kali mendapatkan deskripsi w dan W dengan :helpw atau :help W:

  • w [hitung] kata-kata ke depan. | eksklusif | gerakan.
  • W [hitungan] KATA maju. | eksklusif | gerakan.

Sekarang kita ingin tahu apa definisi kata dan kata. Cari manual lagi dengan :help worddan :help WORD, kami menemukannya.

  • Sebuah kata terdiri dari a sequence of letters, digits and underscores, atau a sequence of other non-blank characters, separated with white space(spasi, tab,). Ini dapat diubah dengan opsi 'iskeyword'. Baris kosong juga dianggap sebagai kata.
  • Sebuah KATA terdiri dari a sequence of non-blank characters, separated with white space. Baris kosong juga dianggap sebagai KATA.
pengguna9154844
sumber