Bir çizgiyi nasıl kolayca taşıyabilirim?


47

Bir çizgiyi vim içinde yukarı veya aşağı hareket ettirme komutu (veya kısayol) nedir? Şu andaki iş akışım çizgiyi yanklamak (kopyalamak) ve bu çizgiyi silmek ve bu çizgiyi koymaktan (yapıştırmak).


8
Aslında kesimler silme olduğundan, yank atlayabilirsiniz: ddkP, aşağı hareket daha kolaydır: ddp.
muru

Yanıtlar:


52

İlk önce, yank ve silmek gerekmez ; ikincisi ayrıca silinen içerikleri (varsayılan veya belirtilen) kayıt defterine koyacaktır. Bu nedenle, ddp/ ddkPbir satırı bir aşağı / yukarı hareket ettirmek için kullanılan yaygın komutlardır.

Alternatif olarak, kullanabileceğiniz :movekomutu, yani :move +1/ :move -2; Bu, kayıt defterini kapatmaz ve ayrıca tüm aralıkları da taşıyabilirsiniz. Bunu kısaltmak için anahtar eşlemeleri kolayca tanımlayabilirsiniz.

(Genellikle onlarla geldiğini ve ek konfor) Eklenti sakıncası yoksa, her iki Tim Pope en bozulmamış eklenti ve benim LineJuggler eklenti sağlamak ]e/ [eeşleştirmeleri hatları (ve birkaç fazla hareket etmeye; çeşitli kullanımlar için Tim, maden işleme odaklı çizgi (ler)).


36

En kolayı şudur: :m+veya Ingo'nun önerdiği gibi :m-2kısaltmasıdır :move.

Veya görsel modu ( V) kullanarak çizgiyi ( d/ x) keserek yapıştırın ( p- imlecin altında, imlecin Püstünde), imlecinizi yapıştırmadan önce doğru yere getirdikten sonra yapıştırın (bu nedenle Vxp/ özet olarak Vdp).

Görsel modda birden fazla satır taşırken, o zaman :m '>+1(bir satırı aşağı taşımak için) veya :m '<-2(bir satırı yukarı taşımak için) kullanmanız gerekir.


Örnek yararlı eşleme ( Shift+ ↑/ Shift+↓):

nnoremap <S-Up> :m-2<CR>
nnoremap <S-Down> :m+<CR>
inoremap <S-Up> <Esc>:m-2<CR>
inoremap <S-Down> <Esc>:m+<CR>

Yüce Metin ( Win / OSX ) benzer.

İşte vim wikia'da önerilenler :

nnoremap <A-j> :m .+1<CR>==
nnoremap <A-k> :m .-2<CR>==
inoremap <A-j> <Esc>:m .+1<CR>==gi
inoremap <A-k> <Esc>:m .-2<CR>==gi
vnoremap <A-j> :m '>+1<CR>gv=gv
vnoremap <A-k> :m '<-2<CR>gv=gv

Normal modda veya ekleme modunda, geçerli çizgiyi aşağı taşımak için Alt-j düğmesine veya geçerli çizgiyi yukarı taşımak için Alt-k düğmesine basın.

Görsel olarak bir satır bloğu seçtikten sonra (örneğin, V düğmesine basarak, sonra imleci aşağı hareket ettirerek), tüm bloğu aşağı taşımak için Alt-j düğmesine veya bloğu yukarı taşımak için Alt-k düğmesine basın.

Ayrıca bakınız:


2
Vim wikia bağlantısı için +1. Orada birkaç şey öğrendim.
Gonçalo Ribeiro

Nedenini bilmiyorlar, ama Gvim'de çok iyi çalışıyorlar, ama terminal vim'de beklendiği gibi çalışmıyorlar (Görünüşe göre
tmux'un

11

Bir satırın üstündeki satırla yer değiştirmek istersem genellikle aşağıdakileri yaparım.

ddkP

açıklama

  • dd satırı silecek ve varsayılan kayıt listesine ekleyecektir.
  • k bir satır yukarı hareket edecektir (j bir satır aşağı doğru hareket eder)
  • P geçerli çizginin üzerine yapıştırılır

3
Geçerli çizgiyi aşağı taşımak için,ddp
Qinjie

4

FWIW, işte yıllardır kullandığım şey. Girintiyi otomatik olarak ayarlarken mevcut çizgiyi normal modda yukarı veya aşağı, görsel moddaki seçimi hareket ettirir.

nnoremap ,<Up>   :<C-u>silent! move-2<CR>==
nnoremap ,<Down> :<C-u>silent! move+<CR>==
xnoremap ,<Up>   :<C-u>silent! '<,'>move-2<CR>gv=gv
xnoremap ,<Down> :<C-u>silent! '<,'>move'>+<CR>gv=gv
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.