2016-07-21 6 views
0

Es gibt ein paar Zuordnungen, die ich arbeiten möchte, damit ich VIM mehr wie einen normalen Texteditor verwenden kann, fand ich this answer, die für die meisten Leute zu arbeiten scheint, die meisten Menschen mich nicht einschließen.Ich versuche, einige Zuordnungen in vim zu arbeiten

Die Idee ist, die Umschalttaste und die Pfeiltasten für die Auswahl aus dem normalen Modus zu verwenden, aber stattdessen bewirkt es nur, dass mein Cursor steckenbleibt und nichts anderes tut.

Auch versuche ich multi-cursors zu bekommen in vim arbeiten, aber wenn ich meine Tastenzuordnungen verwenden bekomme ich diesen Fehler

E78: Unknown mark 

Hier meine sind key-mappings:

" Buffer switching 
map <leader>p :bp<CR> " \p previous buffer 
map <leader>n :bn<CR> " \n next buffer 
map <leader>d :bd<CR> " \d delete buffer 

" Increment numbers 
nnoremap <A-a> <C-a> 
nnoremap <A-x> <C-x> 

map <Leader>c :call vroom#RunTestFile()<CR> 
map <Leader>s :call vroom#RunNearestTest()<CR> 
map <leader>t :A<CR> " \t to jump to test file 
map <leader>r :r<cr> " \t to jump to related file 
map <leader>E :Explore .<cr> " \E to open file explorer in root 
map <leader>e :Explore<cr> " \e to open file explorer in current dir 

"nerd tree mapings 
map <C-n> <plug>NERDTreeTabsToggle<CR> 

"shit plus arrow for selectio mode 
" shift+arrow selection 
nmap <S-Up> v<Up> 
nmap <S-Down> v<Down> 
nmap <S-Left> v<Left> 
nmap <S-Right> v<Right> 
vmap <S-Up> <Up> 
vmap <S-Down> <Down> 
vmap <S-Left> <Left> 
vmap <S-Right> <Right> 
imap <S-Up> <Esc>v<Up> 
imap <S-Down> <Esc>v<Down> 
imap <S-Left> <Esc>v<Left> 
imap <S-Right> <Esc>v<Right> 

"copy and pasting 
vmap <C-c> y<Esc>i 
vmap <C-x> d<Esc>i 
map <C-v> pi 
imap <C-v> <Esc>pi 
imap <C-z> <Esc>ui 

"multi-cursor mappings" 
let g:multi_cursor_next_key='<leader>d' 
let g:multi_cursor_prev_key='<leader>s' 
let g:multi_cursor_skip_key='<C-x>' 
let g:multi_cursor_quit_key='<Esc>' 

" Removing escape 
ino jj <esc> 
cno jj <c-c> 
vno v <esc> 

" Remove highlights with leader + enter 
nmap <Leader><CR> :nohlsearch<cr> 

" Ruby hash syntax conversion 
nnoremap <F12> :%s/:\([^ ]*\)\(\s*\)=>/\1:/g<return> 

ich auch möchte hinzuzufügen, ich bin sehr neu zu vim jenseits der grundlegenden Textbearbeitung, so zweifle ich nicht daran, dass ich Dinge falsch mache, unwissend zu einem Aspekt, usw., also bitte berücksichtigen Sie dies bei der Beantwortung.

Durch Drücken von shift+left wird an das Terminal ausgegeben.

Durch Drücken von shift+right wird C an das Terminal ausgegeben.

+0

Sind Sie sich bewusst von visuellen Modus? Warum hast du das lieber nicht gewählt? Sie können das zusammen mit Textbewegungen verwenden und ein Wort, eine Zeile oder einen Absatz oder sogar mehrere davon auswählen! – SibiCoder

+1

Ist das im Terminal? Es gibt keine Garantie, dass das Terminal diese Tastencodes tatsächlich sehen und erkennen kann. –

+0

@ Christian Brabandt es erkennt, dass ich Shift gedrückt habe, nur etwas anders, nicht sicher, was es eigentlich tbh tut. Was ist der beste Weg zu testen, ob es die Schlüssel erkennt? – Thermatix

Antwort

0

Ich fand die Antwort (schließlich) und löste auch das andere Problem.

Die Lösung liegt in dieser answer auf einer Unixstack-Frage.

Zuerst müssen Sie vim die von Ihrem Terminal verwendeten Escape-Tastencodes mitteilen. Ich lege nur die Befehle, die ich zu den deklarierten Tastenzuordnungen wollen

function Allmap(mapping) 
    execute 'map' a:mapping 
    execute 'map!' a:mapping 
endfunction 

call Allmap(' <ESC>[1;2  <S>') 
call Allmap(' <ESC>[1;2A  <S-Up>') 
call Allmap(' <ESC>[1;2B  <S-Down>') 
call Allmap(' <ESC>[1;2C  <S-Right>') 
call Allmap(' <ESC>[1;2D  <S-Left>') 
call Allmap(' <ESC>[1;2d  <S-d>') 
call Allmap(' <ESC>[1;2s  <S-s>') 

Dann: Ich habe dies getan here

map <S-Up> v<Up> 
nmap <S-Down> v<Down> 
nmap <S-Left> v<Left> 
nmap <S-Right> v<Right> 
vmap <S-Up> <Up> 
vmap <S-Down> <Down> 
vmap <S-Left> <Left> 
vmap <S-Right> <Right> 
imap <S-Up> <Esc>v<Up> 
imap <S-Down> <Esc>v<Down> 
imap <S-Left> <Esc>v<Left> 
imap <S-Right> <Esc>v<Right> 


"multi-cursor mappings" 
let g:multi_cursor_next_key='<S-d>' 
let g:multi_cursor_prev_key='<S-s>' 
+0

Was Sie tatsächlich tun, ist die Auswahl durch visuelle Modus, die bereits verfügbar ist. – SibiCoder

Verwandte Themen