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.