Saya baru-baru menemukan Ctrl+ Edan Ctrl+ Ycara pintas untuk Vim yang masing-masing bergerak layar atas dan ke bawah dengan langkah satu baris, tanpa menggerakkan kursor .
Apakah Anda tahu perintah yang membuat kursor berada di tempat itu tetapi memindahkan layar sehingga garis yang memiliki kursor menjadi baris pertama? (Memiliki perintah untuk baris terakhir akan menjadi bonus yang menyenangkan).
Saya dapat mencapai ini dengan secara manual menekan Ctrl+ E(atau Ctrl+ Y) beberapa kali, tetapi memiliki perintah yang entah bagaimana melakukan ini secara langsung akan menyenangkan.
Ada ide?
vim
scroll
cursor-position
sebelum
sumber
sumber
Jawaban:
( Hati-hati denganzz , jika Anda kebetulan Caps Lockkebetulan, Anda akan menyimpan dan keluar
vim
!)sumber
xdotool
atautriggerhappy
. Terakhir, perlihatkan status kunci caps Anda (tidak dapat dilakukan dalam Vimscript.) ...xev -q
,cat /proc/bus/input/devices
untuk menemukan perangkat untuk meminta danevtest
atauthd ... --dump /dev/input/event<#>
untuk memeriksa keadaan, dll. Jika Anda benar-benar harus membuat remapping seluruh sistem, setidaknya tukar dua kunci seperti caps <--> num - tetapi masalahnya lebih lupa bahwa itu aktif, karena jika Anda menginginkannya sebelumnya, Anda akan terus menggunakannya, dengan peta apa pun. Pemutusan risiko Vim sebelum file / pengguna / sistem.confirm()
. Selain itu, alih-alih memetakan caps lock ke ctrl, Anda dapat memetakannya ke kunci atau kombinasi yang dipahami tetapi tidak dipetakan oleh Vim, dan kemudian mengemulasi caps lock secara eksklusif saat dalam mode insert / replace, dengan tangan atau dengan sesuatu seperti github.com/tpope/ vim-capslock . Anda mungkin tidak akan membutuhkannya di luar Vim, tetapi jika Anda melakukannya, tulis skrip xmodmap untuk mengembalikan perubahan Anda, atau lihat apakah program mendukung pemetaannya sendiri (dan buat catatan.)Selain itu:
Ctrl- ydan Ctrl- ehanya mengubah posisi kursor jika akan dipindahkan dari layar.
Atas perkenan http://www.lagmonster.org/docs/vi2.html
sumber
:help CTRL-E
kataMnemonic: Extra lines.
Vim mengharuskan kursor berada di layar saat ini setiap saat, namun, Anda dapat membookmark posisi saat ini dan kemudian kembali ke posisi semula.
sumber
Ctrl-O
untuk yang lain benar-benar hebat, dan "backtick, titik" mengembalikan Anda ke tempat Anda terakhir mengedit.mg
, gulir sekitar, tandai goto dengan'g
dan Anda selesai. Sekarang Anda dapat memohon kunci yang dapat dikonfigurasi untuk berputar dan akan terasa seperti kursor tidak pernah meninggalkan posisi saat ini. Voilá!Inilah solusi saya di vimrc:
Sehingga kursor akan tetap di tengah layar, dan layar akan bergerak ke atas atau ke bawah.
sumber
Untuk meninggalkan kursor dalam kolom yang sama ketika Anda menggunakan Ctrl+ D, Ctrl+ F, Ctrl+ B, Ctrl+ U, G, H, M, L,gg
Anda harus menentukan opsi berikut:
sumber
Saya terkejut tidak ada yang menggunakan
Scrolloff
opsi yang menjaga kursor di tengah halaman. Cobalah dengan:Ini adalah metode yang direkomendasikan pertama pada Vim wiki dan berfungsi dengan baik.
sumber
:set scrolloff=4
akan membutuhkan kursor untuk selalu berada paling tidak 4 baris dari atas atau bawah jendela, sehingga Anda selalu memiliki setidaknya sedikit konteks.Saya telah menggunakan pintasan ini di masa lalu ( catatan: stroke tombol terpisah yaitu ketuk z , lepaskan, ketuk tombol berikutnya):
z enter -> Memindahkan garis saat ini ke atas layar
z . -> Memindahkan garis saat ini ke tengah layar
z - -> Memindahkan garis saat ini ke bawah
Jika tidak jelas:
enterberarti kunci Returnatau Enter.
. berarti kunci DOT atau "berhenti penuh" (
.
).- berarti kunci HYPHEN (
-
)Untuk apa nilainya, z.hindari bahaya menyimpan dan menutup Vi dengan mengetik secara tidak sengaja ZZjika caps-lock aktif.
sumber
Anda dapat mengawali perintah pemindahan kursor dengan angka dan itu akan mengulangi perintah itu berkali-kali
10Ctrl+ Eakan dilakukan Ctrl+ E10 kali alih-alih satu.
sumber
zEnter melakukan persis apa yang diminta pertanyaan ini.
Ini bekerja di tempat yang anehnya zztidak akan berfungsi (vim 7.4.1689 di Ubuntu 2016.04 LTS tanpa .vimrc khusus)
sumber
Anda mungkin menemukan jawaban untuk " Menggulir Vim relatif ke kursor, pemetaan khusus " berguna.
Anda dapat menggunakan
ScrollToPercent(0)
dari pertanyaan itu untuk melakukan ini.sumber
Terkadang berguna untuk menggulir teks dengan tombol Kdan J, jadi saya memiliki fungsi "mode gulir" ini di .vimrc saya (juga terikat pada zs).
Lihat scroll_mode.vim .
sumber
mnemonic saya untuk menggulir ...
Menambahkan ke jawaban lain juga memperhatikan
ze
danzs
, artinya: pindahkan layar ke kiri / kanan kursor (tanpa memindahkan kursor)juga lihat posisi
h
danl
dant
danb
dan (dengan keyboard qwertz)c-e
danc-y
(juga "y" entah bagaimana menunjuk ke bawah) pada keyboard untuk mengingat ke mana layar bergerak.sumber
Saya menulis sebuah plugin yang memungkinkan saya untuk menavigasi file tanpa memindahkan posisi kursor. Ini didasarkan pada melipat garis antara posisi Anda dan posisi target Anda dan kemudian melompati flip, atau membatalkannya dan tidak bergerak sama sekali.
Juga mudah untuk beralih cepat antara kursor di baris pertama, baris terakhir dan kursor di tengah hanya dengan mengklik j, katau lketika Anda berada dalam mode plugin.
Saya kira itu akan cocok di sini.
sumber
Masukkan vim dan ketik:
:help z
zadalah perintah vim untuk redraw, jadi itu akan redraw file relatif ke tempat Anda memposisikan kursor. Opsi yang Anda miliki adalah sebagai berikut:
z+- Gambar ulang file dengan kursor di atas jendela dan karakter non-blank pada baris Anda.
z-- Gambar ulang file dengan kursor di bagian bawah jendela dan karakter non-blank pada baris Anda.
z.- Gambar ulang file dengan kursor di tengah jendela dan karakter non-blank pada baris Anda.
zt- Gambar ulang file dengan kursor di bagian atas jendela.
zb- Gambar ulang file dengan kursor di bagian bawah jendela.
zz- Gambar ulang file dengan kursor di tengah jendela.
sumber