Jawaban:
Kecuali saya kehilangan sesuatu, Vim sudah melakukan itu. Jika saya menyorot beberapa teks menggunakan mouse atau dengan mengetik v
dan menggerakkan kursor, saya melihat di bagian bawah layar
- VISUAL - 12
di mana angka di sebelah kanan adalah jumlah karakter yang disorot. Ini hanya berfungsi jika seleksi berada pada satu baris, jika tidak maka akan menunjukkan jumlah baris.
Anda juga dapat secara visual memilih beberapa wilayah teks dan jenis g Ctrl-Gyang akan menunjukkan jumlah baris, kata, dan byte yang dipilih.
set showcmd
ke Anda vimrc
untuk mengaktifkannya.
Vim membalik antara menampilkan jumlah karakter dan jumlah baris untuk teks yang divisualisasikan tergantung pada apa dan bagaimana Anda memvisualisasikan (vim 7.4 ditambal hingga September 2015)
V will display line count
v$ will display character count
Jika Anda memvisualisasikan lebih dari satu baris, itu hanya menampilkan jumlah baris
g-CTRL-G displays 'byte count' which seems to be 'char count' +1 per line
v
beralih dari jumlah karakter ke jumlah baris jika pilihan tersebut mencakup beberapa baris. Namun g CTRL-G
melakukan pekerjaan dengan baik.
:function VisualLength()
: exe 'normal "xy'
: echo "Visual: " . strlen(@x) . "\n"
: exe 'normal gv'
:endfunction
:map ,q "xy:call VisualLength()<CR>
Pertama, Anda menarik pilihan saat ini (ke buffer x)
Kemudian Anda menampilkan panjang buffer itu: strlen(@x)
(The - VISUAL - ditampilkan di baris status mengaburkan ini, jadi kami harus menambahkan baris baru)
Sorot rentang visual sebelumnya: gv
Ini tidak memperhitungkan apakah mode visual adalah mode baris, karakter, atau blok, tetapi cukup untuk sebagian besar kasus.
Saya melihat dari tangkapan layar bahwa Anda menjalankan di Windows, jadi jawaban ini mungkin tidak banyak membantu Anda. Tapi untuk orang lain ...
Fitur Vim yang kurang digunakan adalah membiarkan perintah eksternal melakukan pengangkatan berat.
Untuk kasus ini, jika Anda menggunakan sistem mirip UNIX, Anda dapat menggunakan wc
perintah untuk melakukan itu.
Cara paling sederhana adalah mengganti teks yang dipilih dengan output dari perintah, dengan mengetik (dengan teks yang dipilih):
:!wc
(lalu tekan enter).
Ini akan ditampilkan di baris perintah Anda sebagai:
'<,'>!wc
Setelah membaca info, Anda dapat membatalkan dengan u
untuk kembali ke tempat Anda memulai.
Catatan: Pemrosesan ini dilakukan hanya pada seluruh baris . Jika Anda ingin garis parsial, saya pikir @ garyjohn g_CTRL-G
adalah taruhan terbaik Anda.
Anda dapat menghindari keharusan membatalkan dengan menjalankan:
:w !wc
Ini "menulis" baris yang dipilih ke input standar perintah, dan output dari perintah akan ditampilkan dalam buffer sementara baru, meninggalkan yang asli tidak tersentuh. Lihat :help :write_c
untuk info lebih lanjut.
Catatan: Saya mendapat :write_c
info dari: /programming/1237780/vim-execute-shell-command-without-filtering
Sekarang, secara lebih umum:
Contoh dengan wc
ini cukup sederhana, tetapi Anda dapat membayangkan bagaimana ini merupakan pendekatan yang kuat. UNIX memiliki banyak perintah pemrosesan teks yang sudah tersedia, dan Anda dapat menggunakannya dengan mudah di Vim, tanpa harus menyentuh Vimscript (yech).
Lebih jauh, setiap program commandline yang Anda tulis yang berhubungan dengan stdin / stdout sekarang tidak hanya menguntungkan Anda di terminal Anda, tetapi juga di dalam Vim.
Saya menemukan diri saya, misalnya, menjalankan tidy
dan json-format
dari dalam vim untuk membuat file yang saya lihat lebih mudah dibaca.
Anda dapat melakukan hal yang sama pada Windows, tetapi Windows tidak memiliki seperangkat perintah bawaan yang begitu banyak. Anda selalu dapat menginstal GNUWin32 atau serupa untuk mendapatkan manfaatnya.
Untuk cara terprogram dalam vimscript, ini bekerja untuk saya ketika seleksi dibatasi dalam satu baris:
let amount = virtcol("'>") - virtcol("'<")
(Menggunakan virtcol(..)
bukannya col(..)
, sehingga berfungsi seperti yang diharapkan saat :set ve=all
aktif.)