2021년 2월 27일 토요일

vscode + vim plugin

* vscode vim plugin 설치
sidebar > extensions > vim > install

* 클립보드 사용
설정 > Vim: Use System Clipboard 입력 > 해당 항목 체크
x, y, p (이름 없는 레지스터)가 클립보드와 연동된다.

* 자동완성 끄기
설정 > Editor: Auto Closing Quotes 입력 > 해당 항목 에서 never 선택
설정 > Editor: Auto Closing Brackets 입력 > 해당 항목 에서 never 선택

* vim 모드 토글
ctrl + shift + p > vim toggle 입력 > tab > enter

아직 많이 안써봐서 이 동작을 얼마나 자주하게 될지는 모르겠지만
해보니 상당히 귀찮다. 다음과 같이 키바인딩 설정

* 키바인딩 추가
ctrl + shift + t 를 vim 모드 토글로 설정
ctrl + k s > Vim: Toogle Vim Mode 입력 > 마우스를 올렸을 때 왼쪽에 나타나는 + 클릭
ctrl + shift + t > enter

디폴트로 View: Reopen Closed Editor 가 같은 키를 사용하고 있음.
중복이지만 조건이 같을 때 사용자 바인딩이 우선하는지 vim 모드 토글로 잘 동작함.
혹시 문제가 생긴다면 다음과 같이 기존 바인딩을 지울 수 있음.

* 키바인딩 삭제
ctrl + k s > ctrl+shift+t (빈칸 없이) 입력 > View: Reopen Closed Editor 선택 > delete

* 기본 키바인딩 (vim 모드에서도 동작)
동작
ctrl + tab탭 이동
alt + shift + f문서 포멧
ctrl + shift + drun
ctrl + shift + eexplorer
ctrl + shift + gsource control
ctrl + shift + pprompt
ctrl + `터미널 토글
ctrl + ,설정

* 기본 키바인딩 (vim 모드 끄고 동작)
동작
ctrl + k s키보드 단축키
ctrl + b 사이드바 토글

# 링크가 자동으로 생성되고 ctrl + ], ctrl + t 를 그대로 쓸 수 있어 좋다.

* vim 에서 사용하지 않는 키바인딩 해제
vim 에서 ctrl + k 를 사용하지 않도록 설정하면 ctrl + k 로 시작되는 vscode 의 키바인딩을 vim 모드에서도 사용할 수 있음.
예) Markdown: Open Preview to the side (ctrl + k, v),
Format Selection (ctrl + k f) 등

설정 > Vim: Handle Keys 입력 > Edit in settings.json 클릭 > 마지막의 settings.json 예제와 같이 원하는 키(<C-k>)에 false 값을 설정

* alt 이용
ctrl + b 의 경우 vscode 의 '사이드바 토글'과 vim 의 '앞 페이지로 이동' 이 충돌.
마우스 스크롤, page up 등을 좋아하지 않아 vim 의 기능을 포기할 수 없음.
vim 모드 중에도 alt 를 누르면 메뉴로 포커스가 옮겨져 ctrl + b 가 '사이드바 토글'로 동작함. 

vim 만으로 작업할 수 있는 환경에서는 vim 을 쓰겠지만 그게 아닌 경우는
vscode + vim plugin 도 꽤 매력적이다.
vscode 와 vim 의 좋은 점만 골라 쓰기 위해서는 키바인딩을 어떻게 하느냐가
제일 중요한 것 같다. 

# settings.json
{
    "editor.autoClosingBrackets": "never",
    "editor.autoClosingQuotes": "never",
    "editor.fontFamily": "'Bitstream Vera Sans Mono', Consolas, 'Courier New', monospace",
    "editor.fontSize": 16
    "editor.linkedEditing": true,
    "html.autoClosingTags": false,
    "python.formatting.autopep8Args": ["--max-line-length", "120"],   
    "vim.useSystemClipboard": true,
    "vim.handleKeys": { 
        "<C-k>": false
    },
    "editor.fontSize": 16,
    "editor.minimap.enabled": false
}
# keybindings.json
[
    {
        "key": "ctrl+shift+t",
        "command": "toggleVim"
    }
]
# %%  jupyter-like code cell

2021년 2월 26일 금요일

GitLab 레파지토리 이전

GitLab Community Edition 12.7.5

A 레파지토리의 master 브렌치를 B 레파지토리의 a 브렌치로 이전

1. A 레파지토리의 master 에서 a 브렌치 생성
GitLab 사이트의 A 레파지토리 홈에서 + 버튼 > New branch > a 로 생성

2. 이전에 사용할 A 레파지토리 클론 생성(a 브렌치)
git clone <레파지토리 A URL> -b a a
cd a

3. 이전 할 브렌치 checkout 및 태그 패치
(필요한 것은 2에서 다 해서 그냥 건너 뜀. 내용은 참고 페이지 참고.)
 
4. 현재 origin 삭제
git remote rm origin

5. 새 origin 설정
git remote add origin <레파지토리 A URL>

6. a 브렌치 push
git push origin a

참고:
https://www.atlassian.com/git/tutorials/git-move-repository

2021년 1월 10일 일요일

서버 A 를 통해 서버 B 에 ssh

로칼에서 서버 B 에 직접 SSH 가 안되어
X) local ---> B

로칼에서 서버 A 에 SSH 한 후, 서버 A 에서 다시 서버 B 로 SSH 하는 경우
O) local ---> A ---> B

--------------------------------------------------------------------------------

$ cat ~/.ssh/config
Host A
    HostName 서버A의 이름 또는 IP 주소
    #Port 22
    User 서버A 의 사용자 이름
    #IdentityFile 비밀키 경로(로컬 PC)

Host B
    HostName 서버B의 이름 또는 IP 주소
    #Port 22
    User 서버B 의 사용자 이름
    #IdentityFile 비밀키 경로(로컬 PC)
    ProxyJump A                     # Host A 의 설정 사용
    #ProxyJump userA@A:portA # 서버 A의 계정정보 지정

# ProxyJump 가 안먹는 경우 ProxyCommand 사용 가능
Host B
    ProxyCommand ssh -W <서버B의 이름 또는 IP 주소>:<서버B의 포트> A
    User 서버B 의 사용자 이름
    #IdentityFile 비밀키 경로(로컬 PC)

--------------------------------------------------------------------------------

$ ssh B


참고: https://en.wikibooks.org/wiki/OpenSSH/Cookbook/Proxies_and_Jump_Hosts#Passing_Through_One_or_More_Gateways_Using_ProxyJump

https://qgp9.github.io/blog/2016/03/26/ssh-proxy-jump-host

2020년 11월 9일 월요일

WSL2 사용

다음 페이지를 따라서 실행
https://docs.microsoft.com/ko-kr/windows/wsl/install-win10

문제 1.
* 윈도우즈 10 빌드 버전이 낮아서 WSL2 를 사용 못함.
* 윈도우즈 업데이트를 회사가 관리해서 업데이트가 안 됨
해결 1.
위 페이지중 2단계에 나오는 Windows Update Assistant 를 선택하여 업그래이드 (이건 되네요).
- 기존 Windows 폴더가 Windows.old 로 남아서 디스크 용량을 차지함.
- 문제 없으면 '디스크 정리 기능'을 통해서 '이전 Windows 설치'를 지우면 될 듯 

문제 2.
* 회사에서 막고 있는지 Microsoft Store 에서 Ubuntu 20.04 다운로드가 안 됨
해결 2.
수동 설치를 따라 수동으로 다운로드 및 설치(이것도 되네요).

Ubuntu-20.04 를 디폴트 배포로 설정
>wsl -s Ubuntu-20.04

Ubuntu-20.04 의 디폴트 사용자 지정
>ubuntu2004 config --default-user <ubuntu 사용자명>

Ubuntu 에서 C 드라이브 접근
/mnt/c

탐색기에서 Ubuntu 접근(네트워크 드라이브 설정 가능)
\\wsl$\Ubuntu-20.04

 

2020년 10월 3일 토요일

MS 입력기의 일본어 단축키

MS 입력기 사용시

히라가나-영어 전환: Shift+CapsLock


더 많은 단축키

https://blog.naver.com/joju1200/50017535855

2020년 6월 7일 일요일

wol

#! /bin/bash

# name    mac    ip_or_broadcast
list=(
    'win    11-22-33-44-55-66    192.168.0.255'
)

wakeonlan() {
    local mac="$1"
    local ip="$2"

    echo "wake $2"
    echo -n $mac | sed 's/[-:]//g; s/.*/FFFFFFFFFFFF&&&&&&&&&&&&&&&&/' | xxd -r -p | nc -nuw 1 $ip 7

    exit 0
}

for l in "${list[@]}"; do
    li=($l)
    [ x$1 = x${li[0]} ] && wakeonlan "${li[1]}" "${li[2]}"
done

echo "unknown: $1"

2020년 5월 24일 일요일

vscode 에서 PlantUML 사용

Host: ubuntu 18.04

* java 와 grphviz 패키지 설치
$ sudo apt install default-jre graphviz

* vscode 다운로드
https://code.visualstudio.com/docs/?dv=linux64_deb

* vscode 설치
$ sudo apt install ~/다운로드/code_1.45.1-1589445302_amd64.deb

* vscode 실행
$ code

* PlantUML 플러그인 설치
vscode 의 왼쪽바에서 Extensions > 검색창에서 plantuml 입력 > PlantUML 2.13.11 선택(install)

* 다이어그램 표시
https://plantuml.com/ko/ 를 참고로 uml 을 작성
Alt + D로 Preview창 열기 (한 번 열면 입력할 때마다 자동으로 갱신)
또는
View > Command Palette... (Ctrl+Shift+P)
PlantUML: Preview Current Diagram  입력 및 선택

* 다이어그램 저장
View > Command Palette... (Ctrl+Shift+P)
PlantUML: Export Current File Diagram 입력 및 선택
png 확장자 선택  (그림 파일 이외의 확장자는 패키지 추가 설치가 필요한 것으로 보임)
Succeeded exporting diaram(s) 알림창의 View Report 를 선택하면 저장된 경로 표시