Saya telah mencoba untuk menemukan sesuatu yang akan memungkinkan saya menjalankan beberapa perintah pada baris yang sama di Vim, mirip dengan menggunakan titik koma untuk memisahkan perintah di sistem * nix atau &
di Windows. Apakah ada cara untuk melakukan ini?
188
;
alih-alih&&
memisahkan perintah shell Unix juga!&&
'boolean dan' dalam perintah shell jadi jika sudahcommand1 && command2
,command2
hanya akan dijalankan jikacommand1
dieksekusi dengan sukses. dengan;
Anda hanya secara manual menentukan akhir dari baris itu dan memulai yang baru. Itu sama dengan menulis setiap perintah pada baris berbeda di skrip shell.Jawaban:
Bilah
|
akan memungkinkan Anda melakukan ini. Dari:help :bar
Contoh:
:echo "hello" | echo "goodbye"
Keluaran:
NB: Anda mungkin menemukan bahwa Anda
~/.vimrc
tidak mendukung pemetaan|
, atau\|
. Dalam kasus ini, coba gunakan<bar>
sebagai gantinya.sumber
|
!map
pernyataan (dan percayalah, Anda akan), periksa:help map_bar
..vimrc
tidak mendukung bilah lolos (\|
) untuk pemetaan. Saya belajar saya harus benar-benar mengetik<bar>
.:help bar
menunjukkan motion.txt dan tidak tentang banyak perintah.:help <bar>
Masukkan
<CR>
(Pengembalian / Masukkan Kereta) di antara dan setelah perintah. Sebagai contoh:Jangan gunakan
|
karena:Beberapa perintah memiliki masalah jika Anda menggunakannya
|
setelahnya|
tidak bekerja secara konsisten dalam file konfigurasi, lihat:help map_bar
sumber
Anda bisa mendefinisikan fungsi yang mengeksekusi perintah Anda.
Dan letakkan ini di, misalnya, vimrc Anda. Jalankan fungsinya dengan
sumber
:call Func()
karena:execute Func()
berarti sesuatu yang lebih. Ini berarti melakukan nilai pengembalian fungsi sebagai perintah. Fungsi yang dijelaskan di sini biasanya tidak memiliki perintah yang dimulai:return
, sehingga nilai kembalinya akan menjadi angka nol. Melakukan itu sebagai perintah akan memindahkan kursor ke baris pertama dari buffer saat ini, yang tidak selalu seperti yang Anda pikirkan.Pemisah perintah dalam vim adalah
|
.sumber
Saya selalu terbiasa
^J
memisahkan beberapa perintah dengan menekan Ctrl+ v, Ctrl+ j.sumber
^J
sebagai pemisah perintah dalam sebuah string karena itu memasukkan karakter NULL yang mengakhiri string. namun Anda dapat menggunakan <CR> = "\ n".exe "echo 'foo' \n echo 'bar'"
exe "echo 'foo'" . nr2char(0x0a) . "echo 'bar'"
map aa :echo 'foo' <C-V><C-J> echo 'bar'<CR>
Berpikir ini mungkin membantu seseorang yang mencoba melakukan pergantian rantai dan satu gagal
dari komentar
Anda dapat menggunakan
e
bendera untuk mengabaikan kesalahan saat string tidak ditemukan.sumber
Anda dapat membuat file baru, dan menulis perintah Anda di atasnya. Kemudian
:so %
, yang berarti sumber file saat ini.sumber