Di saya ~/.vimrc
, saya memiliki perintah yang kira-kira seperti ini:
nnoremap <expr> <Leader>n ':new ~/Notes/' . strftime('%F') . '-'
Ini dirancang untuk membuat file catatan yang berisi tanggal saat ini di nama file. Pengikat tombol dirancang untuk meninggalkan kursor saya di baris perintah sehingga saya bisa mengetik topik catatan dan tekan Return.
Ini berfungsi dari dalam vim baik. Namun, saya juga mencoba menentukan perintah terminal yang dapat saya gunakan untuk membuka vim dan kemudian jalankan perintah ini. Saya sudah mencoba:
vim -c '\n'
(Pemimpin saya diatur ke default \
, yang saya lebih suka tidak berubah)
Namun, ini tidak berfungsi - alih-alih saya hanya mendapatkan Kesalahan terdeteksi saat memproses baris perintah: E10: \ harus diikuti oleh /,? atau & . Saya tidak yakin apakah ini bug di vim atau jika saya melakukan sesuatu yang salah. Saya juga mencoba:
vim -c '<Leader>n'
Tapi ini memberi: Kesalahan terdeteksi saat memproses baris perintah: E488: Karakter tertinggal: n Tekan ENTER atau ketik perintah untuk melanjutkan .
Apakah ada cara untuk mencapai apa yang saya inginkan?
sumber
-c
tidak mengeksekusi keybinds dalam mode normal; menjalankan perintah (apa yang biasanya Anda lakukan dengan :). Jadi, Anda perlu menggunakanexecute
perintah, yang sepertinya berfungsi:Kami membutuhkan ganda
\\
karena kami mengeluarkan perintah shell (dan tidak ingin shell mengartikan ini sebagai urutan keluar).Diuji dengan keybind:
Saya tidak bisa mulai
:execute "normal <Leader>t"
bekerja; mendapatkan nilaimapleader
juga sedikit lebih terlibat karena Anda mendapatkan kesalahan jika Anda tidak mengaturmapleader
apa pun dan menggunakan default\
.sumber
nnoremap <Leader>x ':new ~/Desktop/x.txt'
untuk menghapus <expr>. Tetapivim -c 'execute "normal \\x"'
memberi "Kesalahan terdeteksi saat memproses baris perintah: E78: Tanda tidak dikenal". Adakah pemikiran mengapa?VimEnter
autocmd atau semacamnya? ... Saya tidak punya waktu untuk menyelidiki sekarang, jika tidak ada orang lain yang memberikan jawaban malam ini, saya akan memeriksanya (saya akan membiarkan jawaban ini untuk saat itu), karena ini sepertinya semacam jika saya ingin memiliki / menggunakan juga :-)Jika tujuan Anda adalah menggunakan mapleader dan Anda telah mendefinisikannya kembali di .vimrc Anda
biarkan mapleader = ','
itu tidak akan berhasil. Kamu bisa menggunakan
sebagai gantinya.
tetapi jika Anda berencana untuk menggunakan fungsionalitas itu dari baris perintah, lebih baik merangkum fungsionalitas pada suatu fungsi dan memanggilnya langsung.
sumber