Itu terjadi, karena biasanya Vim beralih ke layar alternatif dan berfungsi di sana. Setelah keluar, Vim akan beralih kembali dan karena itu Anda tidak melihat apa pun yang tersisa dari sesi Vim Anda, tetapi hasil dari perintah dieksekusi bahkan sebelum memulai Vim.
Fitur ini dijelaskan di :h xterm-screens
(tautan)
Jadi pada dasarnya Anda tidak menginginkan itu dan karena itu ingin menonaktifkannya. Anda dapat melakukannya, dengan mengatur :set t_ti= t_te=
kode terminal yang melakukan ini menjadi kosong.
Menyatukan semuanya, Anda ingin memulai Vim seperti ini:
vim -c ':set t_ti= t_te= nomore' -c 'scriptnames|q!'
Kami mengatur ulang 'more'
opsi, sehingga Anda tidak melihat klik-tekan-masuk.
Christian Brabandt
sumber
less
. Hanya pipa itu menjadi kurang seperti ituvim -c ':set t_ti= t_te= nomore' -c 'scriptnames|q!' | less
. Tata letak mungkin kacau pada awalnya (ada di terminal saya), tapi setelah menekan <CL> semuanya bagus dan keren.vim -c ':set t_ti= t_te= nomore' -c 'scriptnames|q!'
, hanya ada "flash cepat", perintah keluar dengan kode 0, tidak ada output. Apakah saya melewatkan sesuatu?Kita juga bisa menggunakan
:redir
perintah untuk mengarahkan ulang hasil perintah vim ke fileSebagai contoh,
Ini mengarahkan ulang output
scriptnames
ke dalam file "vimout"sumber
Saya menghargai jawaban yang diberikan oleh Christian Brabandt tapi saya pikir jawaban yang lebih baik adalah dengan memisahkan perintah berhenti menggunakan perintah -c seperti:
Menggunakan metode ini berarti Anda dapat merangkai sejumlah perintah yang berbeda bersama-sama dan kemudian menggunakan 'q!' Akhir untuk keluar dari vim.
sumber
Untuk situasi di mana Anda membutuhkan vim untuk dimuat penuh seolah-olah Anda memulainya secara manual, ini berfungsi:
Sebagai contoh, saya ingin mengarahkan output
:map
ke file dari shell, tetapi saya ingin menangkap pemetaan yang vim-airline ciptakan hanya setelah itu ditampilkan tabline-nya (baris di atas menunjukkan semua buffernames terbuka.) Karena sepertinya melakukan ini tidak sinkron, hanya menjalankan-c
redirect ke file tidak memberikan waktu untuk membuat pemetaan. Mungkin ada cara yang lebih baik, tetapi ini bekerja untuk saya, terutama karena saya sudahupdatetime
mengatur ke100
(0,1 detik), yang mempengaruhi berapa lama sampaiCursorHold
acara tersebut menyala. Secara default, vim menetapkannya menjadi 4 detik.sumber