web-dev-qa-db-de.com

Klicken Sie auf "Strg x Strg", um die Strg mit dem Terminal zu ändern.

Po przeszukaniu trochę w sieci wydaje się, że nie mogę mapowaćCtrlSpacedo wszystkiego/dużo. Czy jest jakiś sposób na zrobienie tego dzisiaj, co znalazłem było zwykle 2 lata.

49
plitter

Ich bin auf das gleiche Problem gestoßen, die kurze Antwort lautet: Ja, du kannst, und nicht nur in der GUI-Version. Das Hinzufügen zu Ihnen .vimrc ist genug:

inoremap <C-Space> <C-x><C-o>
inoremap <[email protected]> <C-Space>

Das Problem scheint zu sein, dass Terminal.app <C-Space> nicht korrekt interpretiert und von Vim als <[email protected]> verstanden wird, bei dem es sich um ein integriertes Mapping (:help [email protected]) handelt. 

Vielleicht könnten Sie in Ihrem .vimrc so etwas wie das Folgende machen:

if !has("gui_running")
    inoremap <[email protected]> <C-x><C-o>
endif

das scheint hier zu funktionieren, aber ich mag es nicht, solche eingebauten Inserts zu überschreiben.

Stattdessen sollten Sie es mit <Leader> (:help leader) versuchen. Es gibt Ihnen riesige Möglichkeiten, Ihre eigenen benutzerdefinierten Zuordnungen zu definieren, und stört (abhängig von der von Ihnen gewählten mapleader) OS/App-spezifische Abkürzungen/Einschränkungen nicht.

Mit diesem in meiner .vimrc:

let mapleader=","
inoremap <leader>, <C-x><C-o>

Ich drückte einfach ,,, um die Methodennamen zu vervollständigen.

24
romainl

Der Nitpicker brach die Pablox-Lösung. Der Kern der Lösung war nur eine Neuzuordnung. Wenn Sie die Neuzuordnung deaktivieren, kann dies nicht funktionieren.
Wenn Sie wirklich eine noremap einfügen wollen, sieht es so aus:

inoremap <expr><C-space> neocomplete#start_manual_complete()
imap <[email protected]> <C-Space>

Was wird nicht funktionieren: inoremap <[email protected]> <C-Space> 'bewirkt, dass der <C-Space>-Teil nicht selbst neu zugeordnet wird. 

5
oliver

Fügen Sie den folgenden Code zu ~/.vimrc hinzu:

" Ctrl-Space for completions. Heck Yeah!
inoremap <expr> <C-Space> pumvisible() \|\| &omnifunc == '' ?
        \ "\<lt>C-n>" :
        \ "\<lt>C-x>\<lt>C-o><c-r>=pumvisible() ?" .
        \ "\"\\<lt>c-n>\\<lt>c-p>\\<lt>c-n>\" :" .
        \ "\" \\<lt>bs>\\<lt>C-n>\"\<CR>"
imap <[email protected]> <C-Space>

Quelle: https://coderwall.com/p/cl6cpq

3
  • Czy próbowałeś :inoremap <c-space> <c-x><c-o>?
  • RobiCtrlXCtrlOrobić wszystko, gdy wpisujesz w trybie wstawiania? Czy ustawiono omnifunc?
3
Benoit

Um sowohl Windows als auch Linux unterzubringen, habe ich dies auf ~/.vimrc angewendet.

if has("unix")
  inoremap <[email protected]> <c-x><c-o>
elseif has("win32")
  inoremap <C-Space> <c-x><c-o>
endif
2
Kidquick

Ich hatte mit diesem Satz von Zuordnungen in allen Modi unter Mac OS bessere Ergebnisse. Habe kein Windows oder Linux getestet.

Ich verstehe nicht, wie die ausgenommene Antwort im Terminalmodus funktionieren soll.

inoremap <C-space>   <ESC>
vnoremap <C-space>   <ESC>
cnoremap <C-space>   <C-c>
" When in terminal, <C-Space> gets interpreted as <[email protected]>
imap     <[email protected]>       <C-space>
vmap     <[email protected]>       <C-space>
cmap     <[email protected]>       <C-space>
0
cmcginty