Penyelesaian Kata-kata

13

<C-p>dan <C-n>memungkinkan penyelesaian kata-kata yang ditemukan dalam dokumen saat ini.

Saya mencatat dan menulis, {0,1}^ndan (E,D)berkali-kali. Ini adalah KATA-KATA yang dibentuk oleh beberapa kata.

Apakah ada cara untuk melengkapi KATA dengan <C-p>dan <C-n>(atau ins-completionperintah terkait lainnya )?

Gonçalo Ribeiro
sumber
1
Anda mungkin lebih baik menggunakannya :abbreviate. Misalnya, berikan :ab 01n {0,1}^nperintah. Lalu, setiap kali Anda mengetik 01nsebagai kata independen dalam mode Sisipkan, kata itu akan diperluas ke {0,1}^n.
200_sukses
@ 200_sukses, terima kasih. Saya sudah memikirkan singkatan, tetapi saya masih ingin tahu apakah itu mungkin ins-completion.
Gonçalo Ribeiro

Jawaban:

5

Sisipkan penyelesaian mode dengan Ctrl-n

Saya tidak tahu apakah Anda bisa menyelesaikan KATA di luar menulis fungsi Anda sendiri (seperti omnifunc). Namun, jika Anda tidak keberatan memperluas kata apa yang cocok dengan karakter Anda, Anda dapat menambahkan karakter tersebut ke 'iskeyword'

Misalnya, 'iskeyword' saya default ke

iskeyword=@,48-57,_,192-255

Saya kemudian mengaturnya untuk itu ditambah karakter tambahan di atas

:set iskeyword=@,48-57,_,192-255,{,},,,(,),^

Ini menambah {, }, ,, (, ), dan ^dengan karakter yang membentuk sebuah kata (selain apa yang sudah lakukan)

Setelah itu, mengetik {Ctrl-nselesai untuk {0,1}^n(dalam file yang hanya berisi dua contoh yang Anda berikan)

Catatan: Akan lebih baik melakukan :set iskeyword+=hanya dengan hal-hal tambahan, sebagai berikut:

:set iskeyword+={,},,,(,),^

Dengan cara ini, Anda meninggalkan apa pun yang sudah menjadi kata kunci dengan menambahkan karakter baru ke pengaturan yang ada.

Ekspansi dengan singkatan

Meskipun bukan bagian dari pertanyaan awal, fungsionalitas lain yang serupa (ish) adalah menggunakan fungsionalitas singkatan nvi atau Vim. Tidak seperti penyelesaian kata kunci, singkatan tidak harus terlihat seperti teks akhir. Juga tidak seperti penyelesaian kata kunci, singkatan diperluas secara otomatis, bukan hanya ketika Anda memintanya. Bergantung pada tujuan dan penggunaan Anda, ini dapat menyimpan banyak pengetikan, dan memungkinkan Anda mengetik banyak teks tanpa gangguan untuk meminta penyelesaian.

Singkatan yang baik untuk satu set kata kunci kecil dan ketika Anda dapat menentukan mereka sebelumnya (mereka tidak ditemukan dari teks Anda seperti penyelesaian kata).

Gagasan dasar di balik singkatan adalah bahwa Anda mengaitkan WORD dengan beberapa teks lain, dan setiap saat editor mendeteksi bahwa Anda mengetik WORD itu (yaitu, teks yang Anda ketikkan dikelilingi oleh ruang putih, di mana tindakan penyelesaiannya menambahkan spasi putih setelah kata kunci atau meninggalkan mode sisipan), itu diganti dengan teks lain.

Katakanlah file Anda mengandung {0,1}^nbanyak, dan tidak ada variasi lainnya. Mengetik sedikit peregangan jari, jadi mungkin Anda hanya ingin mengetik 01natau myvaluememperluasnya {0,1}^n, tetapi hanya ketika 01natau myvaluemerupakan kata sendiri (yaitu, jika itu muncul di kata lain, jangan ubahlah).

Di nvi, Anda bisa melakukannya :abbrev 01n {0,1}^n. Anda dapat melakukan hal yang sama di Vim, tetapi saya sarankan menggunakan :iabbrev 01n {0,1}^nuntuk membatasi ekspansi ke mode penyisipan saja.

Kemudian, jika Anda memiliki beberapa teks (yang |mewakili kursor)

We find that the value 01n|

Dan kemudian Anda menekan Escatau Spaceatau Tabatau memindahkan kursor, teks akan diganti, dan Anda miliki (contoh untuk menggunakan ruang)

We find that the value {0,1}^n |

dan Anda dapat terus mengetik tanpa gangguan.

Ini biasanya digunakan untuk mengoreksi kesalahan ketik umum (mis. Mengubah 'teh' menjadi 'the') tetapi ini juga dapat berguna untuk kasus penggunaan Anda, sekali lagi dengan asumsi bahwa Anda tidak keberatan mengatur pemetaan sebelumnya.

John O'M.
sumber
Bagi saya tampaknya itu :set iskeyword+={,},,,(,),^berfungsi seperti yang diharapkan.
Karl Yngve Lervåg
1
Memang benar. Ketika saya mencobanya terakhir kali, Vim terus mengatakan kepada saya bahwa itu adalah kesalahan sintaksis. Pasti ada di tempat lain. Memperbarui jawaban saya.
John O'M.
@ JohnO'M. dapatkah Anda menambahkan referensi tentang bagaimana abbreviatemungkin lebih cocok untuk pekerjaan ini?
Gonçalo Ribeiro
@ GonçaloRibeiro selesai. Saya harap ini membantu.
John O'M.