Sık sık vim'deki yeni bir satıra bir şeyler yapıştırmam gerekiyor. Genelde yaptığım şey:
o<Esc>p
Bu, yeni bir satır ekler ve ekleme modundan çıkar ve nihayet yapışır.
Üç tuş vuruşu. Çok verimli değil. Daha iyi bir fikrin var mı?
Sık sık vim'deki yeni bir satıra bir şeyler yapıştırmam gerekiyor. Genelde yaptığım şey:
o<Esc>p
Bu, yeni bir satır ekler ve ekleme modundan çıkar ve nihayet yapışır.
Üç tuş vuruşu. Çok verimli değil. Daha iyi bir fikrin var mı?
Yanıtlar:
Kısa bir süre sonra :help p
:
:[line]pu[t] [x] Put the text [from register x] after [line] (default
current line). This always works |linewise|, thus
this command can be used to put a yanked block as
new lines.
:[line]pu[t]! [x] Put the text [from register x] before [line]
(default current line).
Maalesef, farklı bir yanıtta önerildiği gibi bazı klavye haritalarıyla birleştirmediğiniz sürece mevcut çözümünüzden daha kısa değildir. Örneğin, herhangi bir tuşla eşleştirebilirsiniz (çift p
):
:nmap p :pu<CR>
:pu[t]
metni geçerli satırdan sonra yeni bir satıra :pu[t]!
koyar, metni geçerli satırdan önce yeni bir satıra yerleştirir. Cevabımı buna göre düzenleyeceğim. (Yaşasın :help p
.)
:nmap p :pu<CR>
.vimrc dosyanıza koyun ve yola çıkın :)
Seçenekler:
1) yy
Tüm satırı (satır sonu karakteri dahil ) çekmek için kullanın . p
daha sonra satırı geçerli satırdan sonra yeni bir satıra yapıştırır ve P
( Shift-P yapıştırır ) geçerli satırın üzerine yapıştırır.
2) Bir eşleme yapın: o zaman sadece bir veya iki tuş vardır:
:nmap ,p o<ESC>p
:nmap <F4> o<ESC>p
3) Eşleştirmenin işlev sürümü (gerçekten gereksiz, ancak tamlık için):
:nmap <F4> :call append(line('.'), @")<CR>
" This one may be a little better (strip the ending new-line before pasting)
:nmap <F4> :call append(line('.'), substitute(@", '\n$', '', ''))<CR>
:help let-register
:help :call
:help append()
:help line()
:help nmap
Yapıştırılacak arabellek <C-R>
adını izleyerek arabellek ekleme modunda yapıştırabilirsiniz. Varsayılan arabellek "
, yani
o<C-R>"
Ben <C-R>"
çok sık kullandığımı buldum ve <C-F>
benim vimrc için bağlı :
inoremap <C-F> <C-R>"
Bu hala üç tuş vuruşu kullanıyor, ancak Esc'den daha kolay buluyorum:
o<Alt-p>
O tuşuna bastıktan sonra ekleme modunda olduğunuz için, Alt değiştirici bir komutu siz değilmiş gibi kullanmanıza izin verecektir.
Bu eklentiyi kullanarak: https://github.com/tpope/vim-unimpaired
]p
aşağıdaki satırdaki macunlar
[p
yukarıdaki satırdaki macunlar
avantajları:
tpope/vim-unimpaired
Bunun çalışması için ihtiyaç duyduğunuzdan bahsetmeye değer olabilir 😉.
Şahsen ben Enter (CR) bu şekilde nmapped :
nmap <CR> o<Esc>k
... bu Vim Wikia makalesine dayanarak .
Bu şekilde doğrudan normal moddan yeni satırlar yapabilirim ve bunu aşağıdaki yeni satırlara yapıştırmak istemekle birleştiririm:
<CR>jp
Ayrıca atlamak k sizden ne tercih işlevselliği bağlı olarak yukarıdaki nmap'e içinde Enter sadece olurdu bu yüzden,<CR>p
.
Ben de bu durumda yardımcı olacaktır Esc jj imapped . Esc , vim'de ne kadar önemli olduğu için ana sıradan çok uzakta.
Diğer çözümlerden daha kısa değil, ama bazılarından daha az tıknaz olduğunu düşünüyorum ve başka kullanımları da var.
Bir çizginin tamamını kopyalayıp ardından bir çizginin tamamını yapıştırıyorsanız Y
, çizgiyi veya çizgileri (satır sonu dahil olmak üzere) ilk etapta p
yapıştırmak ve yapıştırmak için kullanın. V
Görsel çizgi modu olan düzü v
, görsel mod için düz ile de kullanabilirsiniz .
Haritam var inoremap jj <ESC>
. Bu yüzden birlikte yeni bir satır eklemek kolaydır ojj
ve Ojj
daha sonra p
.
bu yüzden ojjp
yeni bir satırsonu yapıştırın. o zaman bir vuruş daha var o<esc>p
ama ojjp
benim için kolay.
Bunun için zarif bir çözüm buldum. Yank kaydını işletim sisteminizin panosuna (yine de harika) koyuyorsanız,
set clipboard+=unnamed
yapabileceğinizden daha fazla o<Ctl-v>
.
Daha az kontur olmanın yanı sıra, bu her ikisinde de gelişir o<Esc>p
ve :pu
girintiyi koruduğu için: diğer seçeneklerin her ikisi de yeni satırda sıfır karakterinde başlar.
Uyarı, bunun işletim sistemine bağlı olabileceği veya olmayabileceğidir. Tek bildiğim, OS X'in son sürümünde çalıştığı, ancak pano OS panosunda yank almanın birçok yolundan sadece biri.
Ekleme modunda da bitirmek isterseniz, ekleme modundayken yapıştırma yapmak mümkündür CTRL-R "
. https://stackoverflow.com/a/2861909/461834
Yine de üç tuş vuruşu, ancak kaçış yok ve yine de eklemek istediğinizde bir tuş vuruşu kaydedersiniz.
Neovim yapılandırmamda aşağıdaki eşlemeyi kullanıyorum:
nnoremap <leader>p m`o<ESC>p``
nnoremap <leader>P m`O<ESC>p``
Biraz açıklama:
m`
: geçerli imleç konumunda bir işaret ayarlamanızı sağlar.o<Esc>p
: aşağıdan yeni bir satır oluşturun ve metni bu satıra yapıştırınO<Esc>P
: yukarıda yeni bir satır oluşturun ve metni bu satıra yapıştırın``
: imleci orijinal konumuna getir:h mark
Vim'deki işaretler hakkında daha fazla bilgi için bkz .
Ekleme modunda kalmak istiyorsanız, o ctrl+o p
o
- ekleme modu ve yeni satıra gitmectrl+o
- normal modda olduğu gibi tek bir komut çalıştırınp
- yapıştırmakÜç tuş vuruşu var ama ekleme modunda kalıyorsunuz ve aynı zamanda o ctrl+o
oldukça hızlı, bu yüzden kişisel olarak 2,5 tuş vuruşu olarak davranıyorum.
Bu çözüm, yalnızca kopyalanan metin bloğu yeni bir satırda başladığında (satırın herhangi bir yerinde bir metin snippet'i almak yerine) geçerli gibi görünür, ancak kopyanızı her zaman almak istediğiniz son karakterde başlatabilir, ardından gezinebilirsiniz. istediğiniz kopya bloğunun başlangıcından önce satır sonundaki son karaktere kadar. Sonra yapıştırmak istediğinizde, imleci metninizin altına yapıştırılmasını istediğiniz satırın sonuna getirin ve p tuşuna basın. Açıklamayı berbat etmediysem, bu aradığınız etkiyi sağlamalıdır.