2010-02-15 31 views

Trả lời

7

Nếu bạn muốn để ánh xạ nó vào, nói, Ctrl-E, nó muốn được một cái gì đó như:

inoremap <C-E> <C-N> 

Vấn đề với Ctrl - Space là hầu hết các thiết bị đầu cuối sẽ chỉ nhìn thấy nó như một không gian. Tôi sẽ giả sử bạn đang sử dụng một số chương trình thiết bị đầu cuối bên trong X; nếu bạn đang sử dụng một cái gì đó khác nhau, bạn sẽ phải cung cấp các thay thế có liên quan cho mình.

Đường dây của Bash thường có Ctrl - V ánh xạ tới "xử lý khóa tiếp theo dưới dạng chữ". Vì vậy, hãy nhấn Ctrl - V rồi Trang chủ tại dòng lệnh bash sẽ chèn ^[[H hoặc thứ gì đó giống như vậy trên dòng lệnh, thay vì bắt đầu dòng. Hãy thử nhấn Ctrl - V rồi Ctrl - Không gian. Có lẽ bạn sẽ chỉ nhìn thấy một không gian.

Trong trường hợp đó, bạn sẽ phải đánh lừa với xmodmap hoặc viết riêng của bạn/usr/share/X11/xkb/* các tập tin để nói với X để ra một cái gì đó khác nhau khi bạn nhấn tổ hợp phím Ctrl - Space. Các chương trình như Firefox không quan tâm; họ phát hiện ra khóa cơ sở nào đang được nhấn và tìm ra chính mình những gì modifiers đang được nhấn. Nhưng hầu hết các chương trình thiết bị đầu cuối dựa trên sẽ chỉ thấy Ctrl - Space như một không gian, trừ khi bạn nói với X để điều trị không gian và Ctrl - Space khác nhau.

Tôi nghi ngờ bạn có thể thực hiện thay đổi này chỉ với xmodmap; có thể bạn sẽ cần phải thực hiện các cuộc tấn công cấp thấp hơn/usr/share/X11/xkb/*. Điều này phức tạp, và tôi thậm chí không biết nếu bạn đang sử dụng X ở nơi đầu tiên, vì vậy tôi sẽ để nó ở đó.

Một số thiết bị đầu cuối như urxvt cho phép bạn chỉ định keybindings của riêng bạn. Giống như Firefox, họ có thể biết khi nào là Không gian và khi đó là Không gian Điều khiển ngay cả khi bạn không làm bất kỳ điều gì đặc biệt để định cấu hình X. Vì vậy, bạn có thể yêu cầu xuất urxvt "\ 033I_TYPED_CONTROL_SPACE_DAMMIT" khi bạn nhấn Ctrl - Không gian. Và sau đó bạn có thể yêu cầu vim lập bản đồ rằng đến <C-N>.

EDIT: Tôi quên rằng Ctrl-Space được sử dụng để xuất \0 (Tôi đã remapped rằng một nơi khác trên bàn phím của tôi). Trong trường hợp đó, tất cả sự phức tạp mà tôi mô tả ở trên là không cần thiết. Những gì tôi đã nói sẽ áp dụng cho người muốn sử dụng bản đồ kỳ lạ hơn, như Ctrl -colon hoặc Alt - Không gian.

+1

Tuy nhiên, một người nào đó đã nỗ lực để mô tả những gì đang diễn ra ở đây. Các câu trả lời khác thiếu bất kỳ mô tả về lý do tại sao giải pháp của họ làm việc :-) – JepZ

18

Tôi thích chế độ Ctrl + Space.

" Remap code completion to Ctrl+Space {{{2 
inoremap <Nul> <C-x><C-o>

Trong trường hợp của bạn, bạn muốn:

inoremap <Nul> <C-n>
+7

Nếu bạn đang ở trong gvim, bạn sẽ muốn thay vì . – tghw

+0

'<[email protected]>' được sử dụng cho C-Space trong một số thiết bị đầu cuối (PuTTY tôi nghĩ), tôi đoán giống với C- @ –

29
if has("gui_running") 
    " C-Space seems to work under gVim on both Linux and win32 
    inoremap <C-Space> <C-n> 
else " no gui 
    if has("unix") 
    inoremap <Nul> <C-n> 
    else 
    " I have no idea of the name of Ctrl-Space elsewhere 
    endif 
endif 
+3

Lưu ý: bạn có thể phải sử dụng 'has (" gui_running ")', như 'has ("gui") 'đơn giản trả về nếu vim của bạn được biên dịch với tùy chọn' gui', không phải là bạn đang sử dụng nó ngay bây giờ. – Dogbert

+0

Nó không được kết nối trực tiếp với unix. '' được dịch sang ' 'bởi trình giả lập thiết bị đầu cuối, vì vậy nếu bạn tìm thấy trình giả lập thiết bị đầu cuối thực hiện cùng một công việc trên các cửa sổ, nó cũng sẽ hoạt động. Và ' 'là ** không ** a * tên * của' ' ở bất kỳ đâu, vì cùng một lý do ' [B' không phải là tên của '', nó chỉ là biểu tượng được tạo bởi terminal khi bạn nhấn' '. – ZyX

Các vấn đề liên quan