Yanıtlar:
Vim, geçerli tamponu referans almak için yüzde işaretini kullandığından, her şeyi hızlı bir şekilde almak için kullanabilirsiniz.
:%y
Tamponun tamamını
:%y+
çalacak +
(ve vim'in uygun seçeneklerle derlenmesi şartıyla, muhtemelen pano).
:%d
ve :%d+
silme için aynısını yapacağız.
Bu durumların her birinde imleç yerinde kalır.
C-o
geri dönmek için iki kez kullanabilirsiniz .
Başka bir çözüm, vim-textobj-whole adında bir eklenti kullanmaktır . Varsayılan olarak, bu eklenti, boş ve boş satırlar dışındaki tüm tampon için ae
tamponun tamamı için metin nesnesi sağlar ie
.
Bu eklenti , aynı yazar tarafından vim-textobj kullanıcısına bağlı olup, kullanıcıların herhangi bir metin nesnesini rahatça tanımlamasına olanak tanır. Bunu iyi kullanan birçok eklenti var.
Varsayılan olarak tüm dosya için metin nesnesi yoktur, ancak bunları kullanarak oluşturmak mümkündür omap
. Bu durumda, şuna benzer bir şey olurdu:
onoremap f :<c-u>normal! mzggVG<cr>`z
İşte nasıl çalıştığının bir dökümü:
onoremap f " make 'f' the text object name
:<c-u> " use <c-u> to prevent vim from inserting visual selection marker at the beginning of the command automatically.
normal! " use normal to make key presses ignoring any user mappings
mzggVG<cr>`z " make a marker in register z, select the entire file in visual line mode and enter the normal command, and go back to the z marker
Notlar:
Ctrluİmleç pozisyonunun solundaki her şeyi silmek için komut satırı modunda kullanılabilir. Bunun yapılmasının nedeni, komut satırına doğrudan görsel moddan girerseniz, komut satırına otomatik olarak girecektir ve '<,'>
istediğimiz şey bu değildir. Ben de başka bir şey kullanmak öneririm f
çünkü f
normalde sonraki satırda karakteri arandı geçmek için kullanılır. Örneğin , geçerli satırda bir fi
sonrakine gidecektir i
.
İlgili yardım konuları:
:help omap-info
:help :normal
:help c_CTRL-U
:help v_:
``
, imleci bir önceki konuma döndürür.
İşte görevi tamamlamak için bazı hızlı n 'kirli eşlemeler:
nnoremap yY :%yank <c-r>=v:register<cr><cr>
nnoremap dD :%delete <c-r>=v:register<cr><cr>
Şimdi sırasıyla yY
ve dD
yank / delete kullanabilirsiniz . Tam gelişmiş bir metin nesnesi kullanmak kadar hoş değil, ancak bazen en basit çözümler en iyisidir.
Daha fazla yardım için bkz:
:h :y
:h :d
:h [range]
:h v:register
:h c_ctrl-r
:h @=
mmgg"+yG`m
ve bunu hiç düşünmedim. Teşekkürler, bu doğru .vimrc de gidiyor.