Rumah  >  Artikel  >  Tutorial sistem  >  Terokai kemahiran operasi lanjutan VIM

Terokai kemahiran operasi lanjutan VIM

WBOY
WBOYke hadapan
2024-01-05 10:52:02859semak imbas
Pengenalan Artikel ini mengumpulkan beberapa operasi VIM mudah yang sama ada tidak dapat diselesaikan oleh editor teks biasa yang lain, atau diselesaikan dengan sangat perlahan. Melalui pengenalan artikel ini, pemula dapat mengukuhkan keazaman dan keyakinan mereka dalam mempelajari VIM. Jika anda mempunyai sebarang teknik mudah yang bagus dan mudah ditunjukkan, sila tinggalkan mesej. Selain itu, melainkan dinyatakan sebaliknya, kunci yang disebut dalam artikel ini adalah sensitif huruf besar-besaran. Sebagai contoh, apabila teks mengatakan "tekan G," kekunci yang anda tekan hendaklah "Shift + G."

Terokai kemahiran operasi lanjutan VIM

1 Pertama, kami membuka VIM dan memasukkan sekeping teks untuk demonstrasi hari ini:

this is a test
2. Cari dan gantikan Tekan ESC beberapa kali untuk memasuki mod Normal dan masukkan arahan berikut:

:%s/ /r/g/ . Kesan yang diperoleh selepas menekan Enter adalah seperti berikut:

this
is
a
test
Penjelasan: Fungsi arahan ini adalah untuk menggantikan semua ruang dalam artikel dengan pemulangan pengangkutan. Hampir semua editor menyokong cari dan ganti, tetapi tidak semua editor menyokong menggantikan ruang dengan pemulangan pengangkutan, jadi fungsi ini agak menyusahkan untuk dilaksanakan dalam banyak editor lain.

3. Penyambungan talian Tadi kami memecahkan satu baris teks kepada 4 baris, jadi bagaimanakah cara kami menggabungkannya kembali? Sudah tentu, kita boleh menggunakan kaedah carian dan ganti yang disebutkan di atas untuk menyambung garisan dengan menggantikan pemulangan pengangkutan dengan ruang. Walau bagaimanapun, di sini kita menggunakan kaedah lain.

Tekan ESC beberapa kali untuk memasuki mod Normal, kemudian masukkan arahan ini:

ggVG. gg bermaksud lompat ke permulaan teks, V bermaksud masukkan mod pemilihan baris, dan G bermaksud pilih ke penghujung artikel. Dengan 3 arahan ini, 4 ketukan kekunci secara keseluruhan, kami memilih keseluruhan artikel.

Kemudian, tekan titik bertindih: untuk memasuki mod arahan Perkataan:

:'> muncul pada bar status Enter j selepas itu dan tekan Enter ​bersama-sama sekali lagi, keseluruhan operasi termasuk Enter hanya memerlukan 7 penekanan kekunci:

this is a test
4. Salin, tampal dan ulangi tindakan Tekan ESC beberapa kali untuk mengesahkan bahawa anda berada dalam mod Normal, kemudian tekan

yy untuk menyalin baris semasa ke daftar lalai (bersamaan dengan papan keratan). Kemudian tekan 12p, VIM akan melakukan tindakan tampal 12 kali, dan 13 baris aksara seperti ini akan muncul pada skrin:

this is a test
this is a test
this is a test
this is a test
this is a test
this is a test
this is a test
this is a test
this is a test
this is a test
this is a test
this is a test
this is a test
Penjelasan: Dalam VIM, operasi salin dan tampal adalah sangat pantas. Di samping itu, kebanyakan arahan dalam VIM boleh diulang beberapa kali dengan menambah nombor sebelum arahan.

5. Operasi lajur Seterusnya kita menukar huruf pertama pada permulaan setiap baris kepada huruf besar.

Tekan ESC beberapa kali untuk mengesahkan bahawa anda berada dalam mod Normal, kemudian tekan gg untuk melompat ke baris pertama, dan tekan

Ctrl + v untuk memasuki mod pemilihan lajur (jika anda menekan Ctrl + v dan gagal memasuki mod pemilihan lajur , sila lihat di sini), kemudian tekan G untuk melompat ke baris terakhir artikel Pada ketika ini anda akan melihat bahawa lajur pertama teks dipilih dan hanya lajur pertama dipilih. Tekan kekunci U dan anda akan melihat bahawa huruf pertama setiap baris menjadi huruf besar. Petua: Selepas memilih teks, tekan u untuk menukar teks kepada huruf kecil Selepas memilih teks, tekan ~ untuk membalikkan kes asal.

This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
Kemudian, kami menambah asterisk di hadapan setiap baris. Tekan gg untuk melompat ke baris pertama, tekan

Ctrl + v untuk memasuki mod pemilihan lajur, kemudian tekan G untuk memilih lajur pertama teks penuh, kemudian tekan I untuk memasukkan keadaan sisipan lajur, masukkan asterisk *, dan kemudian tekan ESC. Anda akan melihat bahawa semua baris didahului oleh asterisk:

*This is a test
*This is a test
*This is a test
*This is a test
*This is a test
*This is a test
*This is a test
*This is a test
*This is a test
*This is a test
*This is a test
*This is a test
*This is a test
Penjelasan: Bagi mereka yang menulis program, mengulas sekeping kod dalam kelompok adalah operasi yang sangat biasa. Ini boleh dilakukan dengan mudah menggunakan sisipan lajur. Di samping itu, anda boleh menekan x selepas memilih lajur untuk memadamkan blok yang dipilih, dan anda boleh menyahkomen dalam kelompok.

6. Rakaman makro Seterusnya, kami ingin menukar baris teks genap kepada:

Ini adalah ujian lain. Memandangkan semua baris bernombor genap perlu melakukan operasi yang sama, kami boleh menyelesaikan kerja dengan cepat dengan merakam operasi ini dan kemudian memainkannya berulang kali beberapa kali.

Mula-mula, tekan ESC beberapa kali untuk mengesahkan bahawa anda berada dalam mod Normal, kemudian tekan gg untuk melompat ke baris pertama dan bersedia untuk memulakan operasi. Kami mula-mula menekan kekunci q, dan kemudian tekan satu lagi huruf untuk merekodkan makro ini ke dalam daftar yang sepadan dengan huruf itu. Sebagai contoh, jika kita menggunakan daftar m di sini, tekan qm. Pada masa ini, perkataan "rakaman" muncul dalam bar status VIM, menunjukkan bahawa ia telah memasuki keadaan rakaman.

然后,我们把第二行的 a 修改为 another。首先按 j 进入第二行,然后按 $ 跳到行末,再按两下 b 往前跳两个单词,此时光标停在字母 a 上。然后我们按下 caw键删除 a 并进入插入状态,然后输入 another ,按 ESC 回到 Normal 状态,按 j 进入下一行,整个操作步骤就完成了。最后,我们再按一下 q,结束该宏的录制。

接下来我们播放这个宏,完成整个操作步骤。在键盘上输入 1000@m,表示将 m 寄存器里的宏播放 1000 次,马上可以看到,文章中所有偶数行的 a 都变成了 another。

*This is a test
*This is another test
*This is a test
*This is another test
*This is a test
*This is another test
*This is a test
*This is another test
*This is a test
*This is another test
*This is a test
*This is another test
*This is a test

解说:虽然我们指定播放 1000 次,但事实上,执行到第 6 次的时候,光标挪到了屏幕最下方,于是执行过程就自动停止了。因此,在批量操作的时候,我们可以指定足够大的数字,而不用担心出现问题。

另外,修改 a 的时候,我们跳到行末后再使用 b 命令以单词为单位跳转,而没使用 h 一个字母一个字母往回挪,我们使用caw 修改整个单词,而不使用 s 命令删除单个字母并进入 Insert模式。这些细节可以保证录制得到的宏更具有一般性。

7. 行尾块操作

注:本章由 Jason Han 网友贡献,感谢他来信指出滇狐原先对于行尾块操作理解的错误。

下面,我们要在每行的尾部都添加一个感叹号。之前我们在每行头部添加一个星号的时候,用的是 Ctrl-V 列操作。现在要在行尾添加,能不能继续用列操作呢?直观上似乎是不行的,每行的长度不一样,行尾位置参差不齐,如何使用列模式往行尾添加东西呢?

事实上,Vim 提供了一种特殊的列模式,叫做行尾块模式,也就是说,我们是可以通过 Ctrl-V模式来选中长度不同的行的行尾,然后对行尾作统一操作的,操作步骤如下:

按下 gg 跳到第一行,按 Ctrl-V 进入列选择模式,再按 G,选中全文的第一列,然后按下 $,进入行尾块模式,按下 A,进入块插入状态,输入星号 !,再按下 ESC,你会看到,所有行尾部都出现了一个感叹号:

*This is a test!
*This is another test!
*This is a test!
*This is another test!
*This is a test!
*This is another test!
*This is a test!
*This is another test!
*This is a test!
*This is another test!
*This is a test!
*This is another test!
*This is a test!
8. 点命令

接下来,我们在每行的末尾加上一个小于号 。

由于我们需要在每行后面添加新行,因此我们无法使用块选择方式批量添加小于大于号。使用宏录制的方式是可以做到这点的,但操作稍嫌繁琐了一些。使用点命令,可以非常方便地做到这一点。

先按几下 ESC 确认当前出于 Normal 模式,然后使用 gg 跳到第一行,按 A 进行行尾插入,输入 ,最后 ESC 回到 Normal 状态,第一行修改就完成了。

然后,我们按 j 进入下一行,也就是第三行,再按 .,可以看到,第三行尾部也出现了小于号,并且自动添加了第四行的大于号。反复按j.j.j. ,直到每一行都完成了这个编辑动作为止。

*This is a test!
*This is another test!
*This is a test!
*This is another test!
*This is a test!
*This is another test!
*This is a test!
*This is another test!
*This is a test!
*This is another test!
*This is a test!
*This is another test!
*This is a test!

解说:点命令的作用是,重复最近一次所做的编辑操作。由于在第一行里做的操作是行尾添加并插入新行,因此在第三行(原先的第二行)重复这个动作的时候,也会在行尾添加同样的字符。点命令功能不如宏强大,但它使用起来比宏简便,因此也有着广泛的用途。

Atas ialah kandungan terperinci Terokai kemahiran operasi lanjutan VIM. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:linuxprobe.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam