1
Anda dapat mencapai itu atau lebih baik (pinky) pemetaan perintah dengan sangat cepat. Saya tidak merekomendasikan solusi ini, tetapi sebagai contoh, jika Anda ingin memindahkan kursor ke awal baris dengan <C-a>
Anda dapat menjalankan baris berikut setelah memukul :
dari mode normal (atau menambahkan baris ke vimrc Anda)
inoremap <C-a> <C-o>0
atau, jika awal baris berarti karakter baris pertama yang tidak kosong
inoremap <C-a> <C-o>^
Penasaran, saya baru saja menguji pemetaan ini di buffer di mana saya menulis jawaban ini, dan saya bingung sejenak karena mereka tidak berfungsi. Kemudian saya menyadari bahwa saya lupa memasukkan mode. Anda merasa sulit untuk meninggalkan mode masukkan untuk menjalankan perintah mode normal. Anda mungkin menemukan setelah menggunakan Vim untuk sementara waktu bahwa itu adalah kebalikan - bahwa Anda berlama-lama dalam mode normal saat Anda berpikir dan hanya melakukan kunjungan ke mode insert untuk acara-acara tertentu. Vim mungkin hanya (atau sebagian besar) layak dipelajari jika Anda menemukan bahwa Anda melakukan lebih banyak pengeditan daripada menulis teks.
Jadi salah satu bagian dari jawaban untuk pertanyaan Anda tentang menjalankan perintah mode normal dengan cepat dari mode insert adalah <C-o>
, yang memungkinkan Anda meninggalkan mode insert sementara untuk menjalankan satu perintah mode normal, lalu masuk kembali. Membaca tentang itu di :help i_Ctrl-o
. Ini berguna untuk kenyamanan satu kali saja. Rute yang lebih berkelanjutan mungkin untuk mencoba merangkul mode normal sebagai default untuk navigasi dan pengeditan, dan hanya memasukkan mode insert ketika Anda benar-benar ingin memasukkan karakter baru dengan tangan ke buffer.
2
Contoh Anda sangat umum sehingga sulit untuk memberikan jawaban spesifik. Saya akan membuat contoh spesifik dengan harapan cocok atau dapat diterjemahkan ke sesuatu yang Anda temui. Untuk nomor 1 Anda, itu tergantung pada bagaimana Anda tahu di mana tanda kurung seharusnya pergi. katakanlah saya memiliki garis seperti
let cchar = s:cchar["atx"]
Ini dimaksudkan sebagai baris VimL, bahasa skrip vim, dan itu (atau sesuatu seperti itu) muncul dalam file sintaks Vim yang saat ini saya tidak setuju. Katakanlah saya ingin mengubah bagian kanan ungkapan ini menjadi pemanggilan fungsi, mungkin karena fungsi tersebut menyediakan default ketika kamus s:cchar
belum diberi nilai untuk "atx"
kuncinya. Dengan kursor saya (dalam mode normal) pada karakter pertama, 'l', saya bisa mengetik
f=wcf[MyFunction(<Esc>$r)
Secara singkat, ini mengatakan
f=
- maju ke '=' (saya bisa mengatakan fs
, tapi saya mungkin tidak akan berhenti cukup lama untuk melihat bahwa 's' yang ingin saya jangkau adalah yang pertama di telepon, jadi saya akan memilih karakter yang jelas unik, dan melanjutkan dari sana)
w
- kata berikutnya, sekarang kursor saya ada di 's' of: s: cchar '
cf[
- ubah untuk meneruskan ke '['
pada titik ini garisnya seperti
let cchar = |"atx"]
di mana |
kursor, dan saya dalam mode sisipkan. Saya kemudian mengetik MyFunction(
dan meninggalkan mode insert ( <Esc>
).
$
- Pindahkan kursor ke ujung garis. Saya bisa saja menggunakan E
kata-kata besar atau f]
maju-ke-] atau gerakan lain, tetapi $
terlintas di benak saya terlebih dahulu.
r)
- ganti karakter di bawah kursor dengan ')'
Sekarang saya telah mengubah ekspresi penugasan dari menugaskan dari kamus skrip-lokal untuk menggunakan nilai kembali fungsi, dan dengan melakukan itu saya memperkenalkan tanda kurung. Saya tidak tahu bagaimana kebutuhan khusus Anda untuk tanda kurung, mungkin itu sangat berbeda, dalam hal ini akan ada serangkaian perintah yang berbeda untuk mencapainya. Jika saya berhenti untuk memikirkan lebih lama tentang contoh saya yang dibuat-buat, saya mungkin akan menemukan cara yang lebih efisien untuk mencapainya juga, tetapi siapa yang punya waktu untuk berhenti dan berpikir.
(Cobalah, salin-tempel (maaf, nyentak-put) teks dan perintah ke buffer, dan dengan kursor Anda pada karakter pertama, 'f', dari perintah hit y$
. Sekarang perintahnya ada di register tanpa nama Anda. Pindah ke awal baris pertama dan tekan :normal <C-r>"
ke a) masukkan mode baris perintah, b) mulai jalankan perintah mode normal dari baris perintah, dan c) untuk menempelkan ( atchoo put) register yang tidak disebutkan namanya ke dalam baris perintah seperti biasa perintah mode yang akan dieksekusi. Satu-satunya hal yang perlu Anda ubah dalam perintah ini adalah mengganti <Esc>
serangkaian karakter palsu (karena Anda menyalin atchoo yang disisipkan dari browser Anda) dengan kode kunci Escape yang sebenarnya, jadi hapus dan tekan <C-v>
lalu tombol Esc Anda. Ini akan terlihat seperti^[
. Sekarang tekan kembali untuk menjalankan perintah. Atau ... ketikkan saja string tombol untuk menguji perintah, saya hanya ingin menunjukkan kepada Anda bahwa Anda dapat berinteraksi dengan mode normal dari mode cmdline juga, dan <C-v>
, dan <C-r>
, dan semua kejayaan lain dari Wonderland. Juga, lihat :help Cmdline-mode
.)
3
Untuk menghapus kata mundur Anda dapat menggunakan pemetaan standar <C-w>
(lihat :help i_Ctrl-w
). Saya tidak tahu apakah ada pemetaan default untuk menghapus kata ke depan, tapi saya kira Anda bisa membuatnya
inoremap <C-S-w> <C-o>dw
Sekali lagi, <C-o>
akan membawa Anda keluar dari mode penyisipan untuk perintah satu kali dan dw
akan "menghapus" atas gerakan "kata". Lihat :help d
, :help w
. Jika kata-kata penerusan yang Anda hapus bukanlah kata-kata aktual tetapi nama # fungsi, Anda mungkin ingin menggunakan W
(lihat :help W
). Jika Anda sebagian besar sudah dalam mode normal, Anda tidak perlu pemetaan ini, cukup lakukan dw
, db
atau teman.
Beberapa membantu bab untuk melihat lebih dekat
:help <C-o>
:help Insert
:help f
dan bagian berikut ( F
, t
, T
, ;
dan ,
)
:help word-motions