Saya melihat suatu tempat di web seseorang menggunakan Ctrl-J
dan karena saya tidak tahu pemetaan ini, saya mencari di dokumen yang relevan dan menemukan yang berikut:
j or
<Down> or
CTRL-J or
<NL> or
CTRL-N [count] lines downward linewise.
Yang membawa saya ke beberapa pertanyaan:
- Apa itu
<NL>
: Saya akan melihatnya setara dengan<CR>
karena menekan Enterakan turun satu baris dalam mode normal secara default tetapi mengapa ada di<NL>
sini dan tidak<CR>
? - Apa perbedaan antara pemetaan ini : Apakah semua opsi 5 turun satu baris dengan cara yang sama? Menurut tes saya, saya akan menjawab ya tapi itu akan mengarah pada pertanyaan saya berikutnya.
- Mengapa ada 5 pemetaan untuk melakukan hal yang sama persis : Saya dapat memahami itu
j
dan<down>
disimpan untuk pengguna yang tidak terbiasa dengan vim pemetaan, tetapi mengapa pemetaan lain ada? - Kapan lebih menarik untuk menggunakan satu lebih dari yang lain : Itu adalah kelanjutan dari pertanyaan sebelumnya: jika ada begitu banyak kemungkinan saya kira mereka memiliki kelebihan yang berbeda atau lebih baik digunakan dalam kasus penggunaan tertentu. Apa itu kasus penggunaan?
Saya menemukan redundansi perintah ini bahkan lebih aneh ketika saya melihat :h k
: hanya ada 3 cara untuk naik: k
, <UP>
dan ctrl-p
. Jadi pertanyaan bonusnya adalah: Mengapa ada 5 cara untuk turun dan hanya 3 yang naik?
cursor-movement
statox
sumber
sumber
Ctrl-J
pengikatan default ? Tampaknya umum, setidaknya di antara yang saya tahu, untuk memetakanCtrl-J/K
"turun / naik sampai baris berikutnya dengan tingkat indentasi yang sama dengan garis awal".<CR>
sini"Jawaban:
Menarik yang Anda sebutkan
<CR>
.<CR>
atau carriage return, secara teknis digunakan berarti pergi ke awal baris .<NL>
, atau baris baru alias umpan baris (biasanya disebutLF
), digunakan untuk pergi ke baris berikutnya . Seiring waktu, perbedaan hilang di sebagian besar aplikasi. 1 Menekan Entersebenarnya menghasilkan carriage return, biasanya (coba tekan CtrlVEnter- Anda akan melihat^M
di terminal Unix).<NL>
Kode kontrol adalah CtrlJ.CtrlNmengejutkan saya. Menurut 2 , itu adalah karakter pergeseran :
man ascii
The pergeseran dan pergeseran keluar karakter, menurut Wikipedia :
Bagaimana akhirnya makna itu turun adalah misteri bagi saya.
Nah, tiga cara untuk naik semua memiliki cara yang sesuai untuk turun. ( CtrlPmungkin merupakan pelengkap dari CtrlN, menyiratkan bahwa pergeseran masuk / keluar tidak relevan di sini). Dua cara tambahan (
<NL>
atau CtrlJ) sebenarnya adalah dua representasi dengan cara yang sama.<NL>
adalah warisan dari zaman mesin tik - dan pada masa itu, saya tidak berpikir ada kunci untuk naik - hanya untuk turun.Lihat juga:
1 Masih ada masalah dalam beberapa kasus (pencetakan
\r
(carriage return) dan\n
(pengumpanan baris) menggunakan sebagian besar fungsi / alat cetak yang diformat masih mempertahankan makna lama.).2 Tabel ini disusun sedemikian rupa sehingga alfabet sesuai dengan kode kontrol karakter pada baris yang sama.
sumber
Ctrl-N
untuk selanjutnya , danCtrl-P
untuk sebelumnya . Itulah yang mereka perjuangkan di Emacs, di mana mereka terikatnext-line
danprevious-line
. Juga,Ctrl-P
tidak bergeser ; itu adalah pelarian tautan data . Pergeseran masuk adalahCtrl-O
.Lihat
:help key-notation
.<NL>
berarti "linefeed" dan<CR>
berarti "carriage return".Itu adalah dua cara berbeda untuk memutus garis saat ini. Mereka secara historis terikat dengan karakter kontrol yang berbeda (
ctrl-j
danctrl-m
) tetapi biasanya disisipkan dengan kunci yang sama<CR>
,. Saya setuju bahwa menggunakan<NL>
dalam konteks ini tampaknya berlawanan dengan intuisi.Semua "pemetaan" (mereka sebenarnya bukan pemetaan) berperilaku dengan cara yang persis sama.
Sejarah, sebagian besar, juga kendala lintas platform.
Tidak ada tombol gerak khusus terminal Bill Joy tetapi decals panah ada di
hjkl
tombol. Karena editor modal jarang pada saat itu, menekan tombol-tombol itu hanya menyisipkan karakter terkait dalam apa pun yang Anda lakukan. Anda harus menekan<C-h>
,<C-j>
,<C-k>
dan<C-l>
untuk memindahkan kursor di layar.Seperti yang Anda lihat, ada cukup tumpang tindih merupakan antara
j
,<C-j>
,<NL>
dan<Down>
.<C-n>
umumnya berarti "selanjutnya" di Vim, mudah untuk melihat bagaimana ia disatukan dengan kawan-kawannya.Karena semuanya sama, Anda bebas menggunakan yang paling cocok untuk Anda.
<CR>
, misalnya, adalah kunci yang menarik untuk digunakan untuk pemetaan Anda sendiri.sumber
<CR>
pemetaan. Juga satu pertanyaan lagi: Saya tahu bahwa "kombinasi tombol" itu sebenarnya tidak disebut pemetaan tetapi saya tidak yakin bagaimana saya harus memanggil mereka?:ls
,:substitute
,new
, dll ...?x
juga merupakan "perintah".x
,dd
,c
, dll "perintah". Jadi Anda pasti benar, saya kira ituj
atau^J
juga perintah.