2009-08-11 46 views
8

Tôi sử dụng các cửa sổ ngang và dọc trong phần tử tôn giáo trong VIM và cho đến gần đây, tôi rất thích sự thoải mái của hai lệnh để ẩn (hoặc thu nhỏ) hiệu quả phân chia ngang của mình. Tôi thiết lập chúng thêm các dòng sau vào tập tin .vimrc tôi:"Thu nhỏ" cửa sổ VIM dọc chia tách

set winminheight=0 
map <C-J> <C-W>j<C-W>_ 
map <C-K> <C-W>k<C-W>_ 

Hitting Control-j hoặc Control-k điều hướng thông qua các chia rẽ ngang bằng cách lên hoặc xuống. Những gì tôi muốn thực hiện là điều tương tự cho chia tách dọc bằng cách hiển thị hoặc ẩn phân chia trái hoặc phải bằng cách sử dụng Control-Shift-hControl-Shift-l; h di chuyển sang trái, l di chuyển sang phải. Tôi đã thử những điều sau với ít hoặc không thành công:

set winminwidth=0 
map <S-C-L> 500<C-W>h<C-W>_ 
map <S-C-H> 500<C-W>l<C-W>_ 

Hành động sẽ tương tự như sử dụng Control-w-<Control-w->, chỉ di chuyển các phân chia dọc hoàn toàn sang trái hoặc viết, không chỉ là một dòng tại một thời điểm .

Bất kỳ ý tưởng nào về cách thực hiện điều này? Cảm ơn.

Trả lời

11

Đầu tiên, bạn sẽ không thể sử dụng < S-C- (shift + control) trong mã của mình (xem bên dưới). Nhưng bạn có thể sử dụng 'mapleader' làm "shift" của bạn và sau đó sử dụng < C-h> và < C-l> như bạn muốn. Như thế này:

set winminwidth=0 
nmap <Leader><C-h> <C-W>h500<C-W>>    
nmap <Leader><C-l> <C-W>l500<C-W>>    

Các phím lãnh đạo phổ biến ở vim là dấu phẩy và back-slash:

:let mapleader = "," 

Nhưng bạn sẽ thấy rằng đây được gây phiền nhiễu để yêu cầu 3 tổ hợp phím cho điều này, vì vậy bạn có thể như chỉ cần thả đột quỵ phím điều khiển. Bằng cách này (nếu lãnh đạo của bạn là dấu phẩy), bạn có thể chỉ cần bấm "h" và "l" để đi đến chia rẽ sang bên trái và bên phải của bạn:

set winminwidth=0 
nmap <Leader>h <C-W>h500<C-W>>    
nmap <Leader>l <C-W>l500<C-W>>  

" (FTW) :D 

...

Một anh chàng tên Tony Chapman answers tại sao bạn không thể sử dụng kiểm soát + shift:

Vim bản đồ của nó Ctrl+printable_key kết hợp theo ASCII. Điều này có nghĩa rằng "Ctrl+lowercase letter" là giống như tương ứng "Ctrl+uppercase letter" và rằng Ctrl+<key> (nơi <key> là một in key) được chỉ định khi <key> là trong phạm vi 0x40-0x5F, một chữ thường, hoặc một dấu chấm hỏi.Nó cũng có nghĩa là Ctrl-[ cũng giống như Esc, Ctrl-M cũng giống như Enter, Ctrl-I là giống như Tab.

Vì vậy, có, Ctrl-sCtrl-S (ví dụ: Ctrl-sCtrl-Shift-s) đều giống nhau để Vim. Điều này là do thiết kế và không phải là sẽ thay đổi.

2

Hãy thử

set winminwidth=0 
map <S-C-L> <C-W>h<C-W>| 
map <S-C-H> <C-W>l<C-W>| 

này không di chuyển một cửa sổ hoàn toàn sang trái hoặc bên phải (đó là <C-W>H<C-W>L), nó chỉ di chuyển con trỏ sang trái (hoặc phải) cửa sổ và tối đa hóa cửa sổ đó theo chiều ngang .

Xem :help CTRL_W_bar để biết thêm.

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