2016-05-21 2 views
2

Я очень новичок в vim, и есть несколько вещей, которые я не могу сделать.vim mapping keys + listchars

1) СПИСОК ЛИТЕРАТУРЫ. Я установил vim, чтобы поместить точки в конечные пробелы, но я хочу, чтобы vim заменил пробелы точками в файлах, потому что теперь vim сохраняет точки только после последних слов в конце строк. Кроме того, я хочу, чтобы vim помещал знак> в начале текущей строки и помещал что-то вместо TAB.

2) Как я могу переопределить привязки ключевых слов по умолчанию? Например, если у Vim есть собственное обязательство [Ctrl + A] что-то делать, и я хочу, чтобы Shift + T делал то же самое - что мне делать? Расширение этого вопроса: по умолчанию для перехода между разделенными окнами в vim существует привязка [CTRL+W, arrow] (это похоже на два последовательных клика). Как я могу переопределить это? Я хочу использовать alt + arr вместо [ctrl+w, arrow].

3) я сделал:

nmap <C-Space> :NERDTreeToggle<CR> 

для переключения на боковой панели, но он не работает. Я прочитал ctrl-space, но это не так легко переопределить, но я все же хочу использовать его для переключения боковой панели.

ответ

0

1) Если вы читали vim help on 'listchars', вы увидите, что он обеспечивает trail:c вариант, который может быть использован для обозначения завершающих пробелов с помощью пользовательского характера c. Я предполагаю, что это вариант, который вы используете в настоящее время. К счастью, начиная с patch 7.4.711 (см. Также changelog), 'listchars' теперь поддерживает опцию space:c, которая может использоваться для обозначения всех пробелов символом c. Поэтому вы можете использовать это, если ваша версия vim достаточно недавняя. (Обратите внимание, что онлайн-ВИМ страница помощи я просто связан, кажется, немного устарелый в данный момент, так что не упоминает вариант space:c). Например:

:set lcs+=space:. 

Что касается положив > в начале текущей строки, я считаю, что это невозможно. Поэтому я боюсь, что вам не повезло, если кто-то еще не знает трюк, о котором я не знаю.

Наконец, вы можете использовать опцию tab:xy, чтобы поместить что-то вместо вкладок. Я на самом деле хотел бы использовать пару символов Unicode для этого:

:set lcs+=tab:•· 

2) Что вы ищете здесь mapping. Вы должны отметить, что «Shift + T» на самом деле является просто капиталом T, так как смена буквенного ключа отправляет вариант капитала буквы на всех современных компьютерах. Таким образом, вы можете делать то, что вы хотите с этим:

nmap T <C-a> 

Это создаст T, чтобы увеличить число под курсором, который является нормальной функцией .

Наконец, что касается сопоставления клавиш со стрелками со стрелками, это может быть сложно, потому что это зависит от того, на какой платформе вы работаете vim, например. используете ли вы gvim для Windows или терминал, основанный на платформе Unix.Если Gvim, вы можете использовать простые <M-...> коды:

nmap <M-Left> <C-w>h 
nmap <M-Down> <C-w>j 
nmap <M-Up> <C-w>k 
nmap <M-Right> <C-w>l 

Но на других платформах, вам необходимо выяснить, управляющие последовательности, которые могут быть отправлены при нажатии мета-модифицированный ключ со стрелкой, и карта тех. Например, когда я запускаю Cygwin Vim в mintty на Windows, я могу использовать это:

nmap <Esc>[1;3D <C-w>h 
nmap <Esc>[1;3B <C-w>j 
nmap <Esc>[1;3A <C-w>k 
nmap <Esc>[1;3C <C-w>l 

Вы должны быть в состоянии выяснить, управляющие последовательности, посылаемые комбинации клавиш, введя режим вставки в буфер (или команда режим линии тоже должен работать), нажимая ^v, а затем нажимая комбинацию клавиш. Вводимые символы - это escape-последовательность, отправленная комбинацией клавиш.

3) Я никогда не использовал плагин дерева NERD раньше или не пытался сопоставить контрольное пространство, поэтому я не могу говорить с этим. Возможно, вы могли бы задать новый вопрос, который фокусируется на этом вопросе.

+0

Я уже пытался установить lcs, как и предложил be4, я написал эту проблему. это то, что было в моем .vimrc ":" listchars set list set lcs = trail: set lcs + = space: · set lcs + = tab: →→ set listchars = eol: ¬, который не работал. только eol работал и около 2) в возвышенном тексте или атоме легко писать keybinding. например, в возвышенном тексте есть синтаксис для двойного привязки клавиш ["ctrl + k", "ctrl + b"] для переключения боковой панели.какой синтаксис существует в vim для двойных привязок? например, для стрелки C-W + было бы ? – Max

+0

1) Моя гипотеза заключается в том, что вы перезаписываете настройки 'set lcs + = space: c' и' set lcs + = tab: xy', когда вы запускаете настройку 'set listchars = eol: c'. Обратите внимание, что в предыдущих двух настройках используется '+ =', в то время как последний параметр использует '=', без плюса. Это перезапишет все предыдущие настройки. Вам нужно изменить его на '+ =', чтобы предыдущие настройки оставались в силе. 2) Исправить. – bgoldst

+0

Вы были правы, мой eol перегрузил предыдущие lcs. но, однако, lcs + = tab • ·. или lcs + = tab: →→. не работает. Я даже пытался удалить все остальные lcs и оставил только один с вкладкой - он не работал. и btw, как я могу поставить> - в начале строки, где im в настоящее время? – Max

0

1)

Если вы только что сделали:

set listchars=... 

это не будет работать, потому что вы должны также включить опцию списка с:

set list 

Я неправильно понял вашу проблему. Вы должны использовать trail:., как рекомендовал bgoldst.

2)

Во-первых, вы должны решить, как вы хотите переназначение работать, так как перераспределяет являются модальными, например, они работают в определенных режимах. Если, например, вы хотите, чтобы <shift-t> равнялся <C-a> в обычном режиме, вы должны сделать nnoremap.

nnoremap T <C-a> 

Вы также можете сделать это для визуального, вставки или режим управления с

vnoremap 
inoremap 
cnoremap 

Рекомендованное чтение: What is the difference between the remap, noremap, nnoremap and vnoremap mapping commands in vim?

3)

<C-space> не отображает в реальном ASCII символа , что затрудняет отображение. Однако вы все равно можете это сделать. Войдите в режим вставки, и введите

<C-v><C-space> 

(Ctrl + v затем Ctrl + пробел) Это будет вставить значение, которое ВИМ видит при нажатии Ctrl + Space. Скорее всего, вы увидите ^@, например. нулевой байт. Если это так, вы можете сопоставить ctrl + пробел с

nnoremap <NUL> :NERDTreeToggle<CR> 
+0

примерно 3) что у меня есть, чтобы вставить vimrc? nnoremap : NERDTreeToggle эти две строки после того, что ctrl-v + ctrl-space будет переключать боковую панель? – Max

+0

@Max No, просто посмотрим, что вим видит, когда вы нажимаете . Если ввести текст, вставляющий '^ @' (это, скорее всего, будет), тогда vim увидит байты , так что вы можете сделать 'nnoremap : NERDTreeToggle ' – DJMcMayhem

+0

и я попытался установить список, а затем в следующей строке установить lcs + = tab: • · Как предлагалось bgoldst - это не сработало. – Max

Смежные вопросы