답변:
문자의 xp
경우 커서 아래의 문자를 다음 문자 Xp
로 바꾸고 커서 아래의 문자를 이전 문자 로 바꾸는 것은 매우 간단 합니다.
이 x
명령은 커서 아래의 문자를 삭제하고 커서를 다음 문자에 둡니다. 이 X
명령은 커서 바로 앞에있는 문자를 삭제하고 커서를 원래 문자와 동일한 문자에 그대로 둡니다.
p
현재 커서 위치 바로 다음에 마지막으로 삭제 된 텍스트 또는 마지막으로 눌린 텍스트를 넣습니다 (붙여 넣기). ( P
풋 그것은 단지 현재 커서 위치 때문에 이전 xP
과 XP
모두 휴가 텍스트 당신이 시작 전의 상태.)
단어를 바꾸려면 확실하지 않습니다. 아마도 다른 누군가가 그 대답을 할 수 있습니다. 가까이 다가 dawwP
가거나 짧게 다시 매핑 할 수는 있지만 예를 들어 줄 끝 근처와 같은 여러 가지 가장자리에서 중단됩니다.
Vim 위키 의 단어 스왑 매핑은 악센트 부호가있는 단어에서 올바르게 작동하지 않습니다 .
이 맵핑은 (유럽) ISO / IEC_8859-1 Latin-1 Supplement 문자 와 함께 작동하도록 조정되었습니다 . 이것은 모든 인스턴스로 대체하여 수행됩니다 \w
와 [0-9A-Za-zÀ-ÖØ-öø-ÿ_\-]
와의 모든 인스턴스 \_W
와를 \_[^0-9A-Za-zÀ-ÖØ-öø-ÿ_\-]
.
또한 필요한 경우 검색 강조 표시가 지워집니다 . 이것은 :nohlsearch<return>
필요할 때 각 매핑의 끝에 추가함으로써 달성됩니다 .
최종 결과는 다음과 같습니다.
" 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{