perintah vi untuk menambahkan baris kosong?

24

Dalam vi, saya bisa menggunakan oatau Omenambahkan baris kosong dan masuk ke mode penyisipan. Tetapi bagaimana jika saya ingin tetap dalam mode perintah, apakah ada perintah untuk ini?

Dalam googling, saya melihat saran untuk menambahkan hal-hal ke vimrc saya, tetapi sepertinya harus ada cara yang lebih mudah (itu akan selalu berhasil.)

Eric Wilson
sumber

Jawaban:

25

Menurut FAQ VIM Anda dapat menggunakan :putperintah:

12.15. Bagaimana cara saya menyisipkan baris kosong di atas / di bawah garis saat ini tanpa masuk ke mode insert?

Anda dapat menggunakan perintah ex:: put "untuk memasukkan baris kosong. Misalnya, coba

: put = ''
: put! = ''

Untuk informasi lebih lanjut, baca

: help: put

tapi sebenarnya lebih mudah untuk menambahkan:

map <Enter> o<ESC>
map <S-Enter> O<ESC>

untuk Anda .vimrc. Dengan cara ini Anda dapat menekan Enteratau Shift-Entermasuk normal modeuntuk memasukkan garis kosong di bawah atau di atas garis saat ini. Tentu saja gantikan <Enter>dan <S-Enter>dengan kunci pilihan Anda.

Tuan Shunz
sumber
15

Bagian dari daya pikat penggunaan VIadalah memiliki mode perintah untuk memanipulasi teks, dan mode edit untuk menambahkan teks. Ini membuat Anda tidak perlu menekan CTRL-apa pun untuk mencapai hal-hal.

Saran lain mungkin bekerja - saya belum mencobanya - tetapi mereka tampaknya memerlukan beberapa karakter atau memanipulasi VIlingkungan Anda terlalu banyak.

Coba gunakan o[ESC]diikuti oleh .untuk setiap baris baru yang ingin Anda tambahkan, atau 5.untuk menambah 5 baris. Ini jauh lebih cepat, dan akan selalu berfungsi pada setiap pemasangan VI.

Glorytoad
sumber
1
Anda dapat menggunakannya .untuk mengulang, tetapi Anda juga dapat melakukannya <number>o<esc>, misalnya:5o<esc>
bollovan
1
Itu pasti akan berhasil. Tapi saya suka melihat bagaimana perintah itu akan berdampak pada dokumen sebelum saya melakukannya berkali-kali. Saya tidak bisa memberi tahu Anda berapa kali saya telah o'dmenambahkan paragraf baru dalam VI, hanya untuk mengetahui bahwa paragraf yang cantik itu sebenarnya adalah enam baris yang rusak / dibungkus dengan kata-kata.
Glorytoad
2

Di vim, ada juga :normal oatau :normal O.

Steven Pritchard
sumber
1

Ini akan menambahkan baris kosong setelah baris saat ini:

:put _ 

Atau, tentukan garis di awal.

Justerman
sumber
0

Pada Vim 7.3: <number>o<esc>hanya membuat satu baris kosong.

Hakim
sumber
Nah, dengan menambahkan <esc>Anda pergi lagi dari mode insert ke mode perintah. Saya pikir dia sedang mencari jawaban yang tidak masuk ke mode menyisipkan sama sekali.
Bernhard
Oh! Saya lupa untuk berhenti memasukkan mode dengan <esc>. Dalam hal ini, itu akan berhasil. Bahkan akan menduplikasi baris yang diedit pada semua baris berikut.
Hakim
0

Untuk memasukkan baris kosong setelah baris saat ini sambil tetap dalam mode perintah, gunakan:

: r !echo

Ini adalah perintah " read in a file", tetapi alih-alih memberikannya nama file, kami memerintahkannya untuk membaca output dari perintah shell ( !); perintah shell itu echo,, cukup mencetak baris kosong. Setelah baris kosong dimasukkan, Anda tetap dalam mode perintah.

Jeff Schaller
sumber
-2

Saya terkejut tidak ada orang lain yang menyebutkan ini:

Gunakan 'r' diikuti oleh 'Enter key' dalam mode baris perintah.

Terlambat ke pesta sebelum 7 tahun :)

Akhilesh Siddhanti
sumber
1
Kecuali bahwa ini akan membawa Anda keluar dari mode perintah dan mengganti baris saat ini dengan yang kosong.
Jeff Schaller
Saya tidak yakin apa yang dikatakan @Jeff. Pengamatan saya mengenai perintah ini adalah (1) itu tidak berfungsi jika Anda saat ini berada pada baris kosong, dan (2) jika tidak, itu menghapus karakter di bawah kursor.
Scott
Saya salah bicara; rmemang menggantikan karakter saat ini. Masih membawa Anda ke mode perintah.
Jeff Schaller
Sepakat. Ini adalah batasan: Ini harus dilakukan pada baris non-kosong + pada ruang kosong sebelum baris. Tidak memikirkan hal ini. Terima kasih.
Akhilesh Siddhanti