Vim에 en dash를 삽입하는 가장 쉬운 방법은 무엇입니까?


33

삽입하기 위해 대시를 , 내가 사용하는 ^v u 2014일곱 키 누르기이다. 더 쉬운 방법이 있습니까? (나는 지리를보고 있었고 거기에서 대시를 찾지 못했습니다.)


4
참고로 U + 2014는 EM DASH입니다. U + 2013은 EN DASH입니다. fileformat.info/info/unicode/char/2014/index.htm , fileformat.info/info/unicode/char/2013/index.htm
Quincy Bowers

7
X11을 사용한다면 XCompose라고 말할 것입니다 ... Vim뿐만 아니라 모든 응용 프로그램에서 작동합니다. 또는 OSX 또는 Windows를 사용하는 경우 해당 OS가 제공하는 기능.
Martin Tournoij

아마도 가장 쉬운 방법은 아니지만 <Ctrl-Shift-U>2013<Space>모든 곳에서 작동 하기 때문에 사용하는 경향이 있습니다. 몇 가지 키 코드는 먼 길을갑니다 (주로 U + 2013, U + 2014, U + 2026, U + 2212, U + 2192, U + B0; – / — /… /-/ → / ° 사용).
wchargin

호기심에서 어떻게 대시 를 표시 합니까? AFAIK에서는 고정 너비가 아닌 글꼴을 올바르게 표시 할 수있는 방법이 없습니다 (예 : 균일하지 않은 문자 너비 및 커닝). 대시 및 대시는 항상 문자 경계의 끝까지 확장되는 하이픈처럼 보입니다. Vim에서 캐릭터가 표시되는 방식과 다른 곳에서 렌더링되는 방식 사이의 연결이 크게 끊어지지 않습니까?
Kyle Strand

2
나는 @Carpetsmoker와 함께 있습니다 : Compose - - -em-dash, Compose - - .en-dash. 특히 완전히 사용하지 않는 Caps-Lock에 매핑하는 경우 작성은 마술입니다.
Rmano

답변:


42

당신은 digraphs를 사용할 수 있습니다 : Ctrl+k-N(자본과 함께 N)

삽입 모드에서, digraphs가 입력되고 Ctrl+k두 문자 시퀀스 가 이어집니다. en-dash의 경우 시퀀스는 -N입니다.

Quincy가 지적했듯이, U+2014대시입니다. digraphs를 사용하여 입력하려는 경우 순서는 -M입니다.


마찬가지로 <Ck> -M을 사용하여 EM DASH를 삽입 할 수 있습니다.
Quincy Bowers

U+2014en-dash가 아닌가? 내 평생은 거짓말이었다! 편집 : 이제 얻습니다. 내 터미널 글꼴 (Inconsolata)은 두 대시를 같은 방식으로 렌더링합니다.
Tomas Tomecek

3
이 대답에 도달하려면 16 진수 2013은 10211입니다.이 :digraphs명령을 사용하여 모든 digraph 를 표시하고 8211을 찾으십시오.
200_success

10

사전 정의 된 digraph가 없거나보다 기억에 남는 키 시퀀스를 원하는 경우 vimrc에서 digraph를 정의 할 수 있습니다. 예를 들어, 아래는 XCompose 시퀀스를 반영하는 en dash (8211) 및 em dash (8212)에 대한 두 개의 digraph를 정의합니다.

digraph -. 8211 -- 8212

:digraph명령은 16 진수가 아닌 10 진수로 값을 지정해야하므로 2013이 아닌 대시로 8211 인 이유입니다.


엔 대시 digraph가 내장되어 있습니다.
200_success

1
@ 200_success 나는 그렇지 않다고 말하지 않았습니다. :) Vim의 digraph 선택은 항상 더 표준적인 것과 일치하지는 않으므로 자신의 digraph를 정의하는 방법을 아는 것이 유용합니다.
jamessan

8

Vim에 en 대시를 삽입하는 표준 방법은 tommcdo가 설명한 것처럼 digraph를 사용하는 것 입니다.

그러나, 나는 일반적으로 이중 음자를 찾고, 특히 이 하나 ( Ctrl+k, -, Shift+N) 꽤 어색 입력합니다. 보다 빠른 대시 입력을 위해 다음과 같은 파일 형식 파일에 다음과 같은 삽입 모드 매핑 쌍을 추가 할 수 있습니다 .vim/after/ftplugin/markdown.vim.

en / em 대시의 경우 :

inoremap <buffer> --<space> –<space>
inoremap <buffer> -- —

NB <buffer>이 매핑은 마크 다운 파일에만 적용됩니다. 이것은 두 개의 하이픈을 대시로 바꾸고 싶지 않은 컨텍스트 (예 : 프로그래밍)가 있기 때문에 필요 합니다.

이러한 매핑은 내가 일반적으로 사용하는 컨텍스트에서 대시가 공백으로 둘러싸이고 엠 대시가 아닌 사실을 이용 합니다. * 따라서 이러한 매핑을 사용한다는 것은 때때로 사용하도록 강요되고 합리적인 출력을 얻는 능력이 떨어지는 텍스트 편집기에서 정확히 동일한 키 누르기를 사용할 수 있음을 의미합니다. **

인쇄상의 이유로 나는 머리 공간으로 엠 대시를 둘러싸고 있기 때문에 실제로는 위보다 약간 더 복잡한 솔루션을 사용 합니다 . 마크 다운에 이것들을 포함 시키면 읽을 수는 없지만 운 좋게도 Vim은 "숨김"기능을 사용하여 커서가 다른 줄에있을 때 특정 구문 항목을 숨길 수있는 솔루션을 제공합니다. ***

inoremap <buffer> --<space> –<space>
inoremap <buffer> -- &#8202;—&#8202;

syntax match entity_hairspace "&#8202;" conceal
setl conceallevel=2

* 공백이없는 대시를 사용해야하는 경우 매핑을 입력 한 후 백 스페이스를 누르면됩니다.
** 일반적으로 이와 같은 대시를 사용하지 않거나 Vim을 사용하지 않는 경우 다른 것을 사용하여 매핑을 트리거 할 수 있습니다 (예 : --.및) ---. 다른 트리거를 사용하는 경우이를 .vimrc에 직접 배치하고 <buffer>옵션을 제거 할 수도 있습니다.
*** 은닉 문자 cchar를 사용하여 구문 항목을 완전히 숨기지 않고 단일 문자로 바꿀 수도 있습니다. 인코딩 문제가 걱정된다면이를 사용하여 Vim &ndash;이 파일에 HTML 엔티티를 대시로 표시 할 수 있습니다 .


Vim에서 대시를 사용하십니까? 열 너비가 하나만 주어지기 때문에 이상한 것처럼 보이지 않습니까? em-dash가 실제로 많은 양의 공간을 차지할 수있는 트릭을 알고 있습니까?
Kyle Strand

@KyleStrand 어떻게 해키를 원하십니까? 다음을 시도해보십시오. set conceallevel=1 | syntax match longdash '—' conceal cchar=-(이 명령의 첫 번째 대시는 em- 대시이고 두 번째는 전체 너비 하이픈 빼기입니다.)
Rich

디스플레이에 차이가 없거나 왜 디스플레이가 두 열을 차지하는지 알 수 있습니다. 우연히 내 질문을 오해 했습니까, 아니면 내가 당신의 제안을 오해했을 가능성이 있습니까?
Kyle Strand

.... 실제로 Vim 구문 사양에 대해서는 아무것도 모릅니다. syntax match명령이 구문 파일의 컨텍스트 밖에서도 작동 합니까 ?
Kyle Strand

@KyleStrand 귀하의 질문을 이해했습니다. 그 줄을 vimrc에 복사하려고 했습니까? 아니면 그냥 Vim에서 실행합니까? :)
Rich

3

프랑스어 AZERTY Mac 키보드에서 Alt+를 사용 하여 en dash를 삽입 할 수 있습니다 -. 마일리지가 다를 수 있습니다.


2
Alt+-(또는 오히려 Option+-pedantic) 맥 전용 단축키입니다. OS X의 모든 곳에서 작동하지만 vi 또는 vim과 관련이 없습니다.
ash108

1
MacVim에서는 작동하지만 터미널 vim에서는 [Esc]와 같이 작동 -하여 일반 모드로 전환하고 커서를 이전 줄의 시작 부분에 놓습니다.
200_success


0

Rich의 훌륭한 답변에서 영감을 얻어 vimrc에 다음 줄을 추가했습니다.

" For en/em dashes, respectively
autocmd FileType markdown imap -- –
autocmd FileType markdown imap --- —

치료처럼 작동합니다!


0

여러 다른 답변에서 제안한 것처럼, 대시는 가장 좋은 방법입니다. 그러나 임의의 유니 코드 문자의 경우 다른 방법은 ^V삽입 모드에서 사용하는 것 입니다 (참조 :he i_CTRL-V_digit).

예를 들어 엔 대시의 경우 ^Vu2013.


나는 이것이 실제로 OP가 이미하고있는 것임을 알고 있습니다! (그러나 대시는 2014가 아니라 2013 년이지만 그것은 대시입니다.) 그러나 나는 이것이 여전히 답의 더미에 어딘가에있는 것이 좋을 것이라고 생각합니다.
tremby
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.