Emacs devrik gibi karakterleri veya kelimeleri nasıl çeviririm?


10

Bash'ın emacs modundaki readline'da, kısa bir süre önce devrik işlevselliği keşfettim ve bana böyle bir yazım hatasını hızlı bir şekilde düzeltme fırsatı verdim

dc dir

için

cd dir

karakter üzerinde CTRL+ tuşuna basarak .Tc

Vi / Vim'de karakterleri ve kelimeleri değiştirmeme izin veren benzer bir şey var mı?


1
Kesinlikle bunu yapan bir makro / bağlayıcı yapabilirsiniz. vim.wikia.com/wiki/Reverse_letters bir örnektir
fruglemonkey

Yanıtlar:


13

Karakterler için oldukça basittir: xpimlecin altındaki harfi aşağıdaki harfle Xpdeğiştirmek ve imlecin altındaki harfi bir önceki harfle değiştirmek.

xKomut sonraki karaktere imleci bırakarak imlecin altındaki karakteri siler. XKomut o vardı aynı karakter üzerine imleci bırakarak sadece imlecin önündeki karakteri siler.

pson silinen veya son çekilen metni geçerli imleç konumundan hemen sonra koyar (yapıştırır). ( Pgeçerli imleç konumundan hemen önce koyar xPve XPher ikisi de metni başlamadan önceki gibi bırakır.)

Kelimeleri değiştirmek için emin değilim; belki başka biri buna cevap verebilir. Sen yakın gelebilir dawwP(veya daha kısa olmasını yeniden eşleştirmek) ama bu bir satırın sonuna örneğin birkaç uç örnekleri üzerinde kıracak.


2
Çekirdek olmayan çözümler kabul edilebilirse, sadece kelime değil aynı zamanda tüm bölgeleri de değiştirmenize izin veren github.com/tommcdo/vim-exchange vardır vimcasts.org/episodes/…
dkns

2

Latin dilleri için kelime takas eşlemeleri

Vim wiki'sindeki kelime takas eşlemeleri, aksanlı karakterleri olan sözcüklerde düzgün çalışmaz .

Bu eşlemeler (Avrupa) ISO / IEC_8859-1 Latin-1 Ek karakterleriyle çalışacak şekilde uyarlanmıştır . Bu tüm örneklerini yerine yapılır \wile [0-9A-Za-zÀ-ÖØ-öø-ÿ_\-]ve tüm örneklerini \_Wbirlikte \_[^0-9A-Za-zÀ-ÖØ-öø-ÿ_\-].

Arama vurgulamasının silinmesi

Ayrıca, arama vurgulaması gerektiğinde temizlenir . Bu, :nohlsearch<return>gerektiğinde her eşlemenin sonuna eklenerek elde edilir .

İşte sonuç:

" Use gc to swap the current CHARACTER with the next, WITHOUT changing the cursor position.
nnoremap <silent> gc xph

" Use gw to swap the current WORD with the next, WITHOUT changing the cursor position.
nnoremap <silent> gw "_yiw:s/\(\%#[0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\)\(\_[^0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\)\([0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\)/\3\2\1/<CR><c-o><c-l>:nohlsearch<return>

" Disable Alt+[menukey] menu keys (i.e. Alt+h for help)
set winaltkeys=no

" Use Alt + ← or Alt + h to swap the current WORD with the previous, keeping the cursor on the current word. This feels like "PUSHING" the word to the left.
nnoremap <silent> <A-Left> "_yiw?[0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\_[^0-9A-Za-zÀ-ÖØ-öø-ÿ_\-]\+\%#<CR>:s/\(\%#[0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\)\(\_[^0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\)\([0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\)/\3\2\1/<CR><c-o><c-l>:nohlsearch<return>
nnoremap <silent> <A-h>    "_yiw?[0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\_[^0-9A-Za-zÀ-ÖØ-öø-ÿ_\-]\+\%#<CR>:s/\(\%#[0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\)\(\_[^0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\)\([0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\)/\3\2\1/<CR><c-o><c-l>:nohlsearch<return>
" <A-h> corresponds to è

" Use Alt + → or Alt + l to swap the current WORD with the next, keeping the cursor on the current word. This feels like "PUSHING" the word to the right.
nnoremap <silent> <A-Right> "_yiw:s/\(\%#[0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\)\(\_[^0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\)\([0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\)/\3\2\1/<CR><c-o>/[0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\_[^0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+<CR><c-l>:nohlsearch<return>
nnoremap <silent> <A-l>     "_yiw:s/\(\%#[0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\)\(\_[^0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\)\([0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\)/\3\2\1/<CR><c-o>/[0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+\_[^0-9A-Za-zÀ-ÖØ-öø-ÿ_\-\`]\+<CR><c-l>:nohlsearch<return>
" <A-l> corresponds to ì

" Use g{ to swap the current PARAGRAPH with the next.
nnoremap g{ {dap}p{
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.