Textmate: повторно отобразите Escape для завершения слова

Примечание. Этот ответ на самом деле относится к вопросу Как напрямую инициализировать HashMap (в буквальном смысле)? , но поскольку он помечен как [дубликат] этого ...


До Java 9 с его Map.of () (который также ограничен 10 отображениями) вы можете расширить реализацию Map по вашему выбору, например:

public class InitHashMap extends HashMap

повторно реализуют конструкторы HashMap:

public InitHashMap() {
    super();
}

public InitHashMap( int initialCapacity, float loadFactor ) {
    super( initialCapacity, loadFactor );
}

public InitHashMap( int initialCapacity ) {
    super( initialCapacity );
}

public InitHashMap( Map m ) {
    super( m );
}

и добавляют дополнительный конструктор, который вдохновлен ответом Aerthel , но является общим с использованием Object... и типов:

public InitHashMap( final Object... keyValuePairs ) {

    if ( keyValuePairs.length % 2 != 0 )
        throw new IllegalArgumentException( "Uneven number of arguments." );

    K key = null;
    int i = -1;

    for ( final Object keyOrValue : keyValuePairs )
        switch ( ++i % 2 ) {
            case 0:  // key
                if ( keyOrValue == null )
                    throw new IllegalArgumentException( "Key[" + (i >> 1) + "] is ." );
                key = (K) keyOrValue;
                continue;
            case 1:  // value
                put( key, (V) keyOrValue );
        }
}

Выполнить

public static void main( final String[] args ) {

    final Map map = new InitHashMap<>( 1, "First", 2, "Second", 3, "Third" );
    System.out.println( map );
}

Выход

{1=First, 2=Second, 3=Third}

Вы также можете расширить интерфейс Map:

public interface InitMap extends Map {

    static  Map of( final Object... keyValuePairs ) {

        if ( keyValuePairs.length % 2 != 0 )
            throw new IllegalArgumentException( "Uneven number of arguments." );

        final Map map = new HashMap<>( keyValuePairs.length >> 1, .75f );
        K key = null;
        int i = -1;

        for ( final Object keyOrValue : keyValuePairs )
            switch ( ++i % 2 ) {
                case 0: // key
                    if ( keyOrValue == null )
                        throw new IllegalArgumentException( "Key[" + (i >> 1) + "] is ." );
                    key = (K) keyOrValue;
                    continue;
                case 1: // value
                    map.put( key, (V) keyOrValue );
            }
        return map;
    }
}

Выполнить

public static void main( final String[] args ) {

    System.out.println( InitMap.of( 1, "First", 2, "Second", 3, "Third" ) );
}

Выход

{1=First, 2=Second, 3=Third}

11
задан Julius Eckert 17 July 2009 в 18:35
поделиться

2 ответа

Чтобы переназначить ключ esc , вам нужно скопировать

/Applications/TextMate.app/Contents/Resources/KeyBindings.dict

в

~/Library/Application Support/TextMate/KeyBindings.dict

, а затем отредактировать его, желательно с помощью TextMate :), поскольку редактор списка свойств испортил коды .
Найдите nextCompletion и previousCompletion и замените их значения на то, что лучше всего соответствует вашим потребностям.
Например, вы можете заменить \ 033 (код для esc ) на \ t ( -> | ).

13
ответ дан 3 December 2019 в 03:36
поделиться

Намного лучший способ сделать это (и это относится ко всем приложениям Mac в целом) - это

  • Открыть Системные настройки> Клавиатура и мышь> Сочетания клавиш
  • Щелкните значок + внизу
  • Выберите TextMate в меню приложения
  • Введите точное имя команды меню для следующего и предыдущего завершения
  • Теперь введите ярлык, который вы хотите использовать, и нажмите кнопку «Добавить»
14
ответ дан 3 December 2019 в 03:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: