Sekitar 5 kali sehari, saya mengetik "vi" ketika saya maksud "cd", dan akhirnya membuka direktori di vi. Itu membuat saya NUTS. Sepertinya harus ada cara untuk mendeteksi ketika saya mengetik "vi + direktori" dan secara otomatis mengubahnya ke "cd + direktori". Pikiran?
bash
shell
alias
cd-command
Alex
sumber
sumber
Jawaban:
Dengan asumsi bahwa Anda memanggil
vi
dengan direktori sebagai argumen terakhir:sumber
rm
denganrm -i
, yang merupakan default di banyak distribusi. Saya biasanya berpikir bahwa cara terbaik untuk menyelesaikan masalah adalah dengan memecahkan pengguna daripada bekerja di sekitar mereka.rm
untukrm -i
bisa menyelamatkan Anda beberapa masalah di masa lalu tapi kekuatan (dan mungkin akan) membuat Anda dalam lebih banyak kesulitan di masa depan ...vi
dalam pertanyaan ...${!#}
secara tidak langsung merujuk argumen terakhir, dancommand
hanya diperlukan untuk menghindari rekursi fungsi dalam contoh ini.Terlepas dari jawaban @ChrisDown, berikut adalah pendekatan lain: memintas direktori
Dengan pendekatan ini, Anda dapat:
dan itu akan mulai vi pada semua file di direktori saat ini bahkan jika itu berisi subdir, melewati subdirs tersebut
Yang ini hanya melakukan vi, pada argumen apa pun yang bukan direktori ... Oleh karena itu tidak akan mengajarkan Anda untuk menggunakan "vi" untuk "cd";)
Dan itu tidak akan memanggil vi jika Anda baru saja melakukannya: vi somedirectory (mis., Salah ketik vi bukan cd). Tapi itu tidak akan cd ada secara otomatis, jadi Anda masih ingat Anda harus mengetikkan cd ^^
Saya menggunakan cara "kompatibel" untuk mengubah daftar argumen, sehingga mudah dibawa ke banyak platform.
sumber
command something
memulai perintah "sesuatu" (yaitu, kejadian pertama "sesuatu" ditemukan menggunakan $ PATH) alih-alih fungsi alias ATAU yang bernama "sesuatu".\something
hanya akan mem-bypass alias, tetapi akan tetap berfungsi jika ada (dan di sini, itu berarti fungsi "vi" akan memanggil dirinya sendiri, dan loop).Salah satu solusinya adalah berhenti menggunakan
cd
semuanya. Taruhshopt -s autocd
di.bashrc
atausetopt autocd
di.zshrc
. Kemudian untuk mengubah ke direktori yang berbeda, ketikkan nama direktori, tanpa perintah apa pun.Jangan lupa mengetik
vi
jika Anda ingin mengedit file.Jika Anda benar-benar menginginkan satu perintah untuk berubah ke direktori atau mengedit file, Anda dapat menjadikannya fungsi:
sumber
Gunakan fitur alias di Unix. Setelah Anda alias cd ke vi, masalah akan teratasi.
sumber
vi
tanpa mengabaikan alias secara manual, yang tampaknya sangat tidak diinginkan.vim
.vim
. Jika tidak tersedia, gunakanvi
dan harapkan set fitur yang lebih terbatas.