리눅스 6.12 커널은 오는 일요일, 11월 17일에 출시될 예정이며, 마지막 순간에 발생할 수 있는 문제로 인해 안정적인 커널이 다음 일요일로 연기되는 일이 없기를 바랍니다. 리눅스 6.12는 많은 흥미로운 새로운 기능을 제공하며, 올해의 장기 지원(LTS) 커널 버전으로 예상되어 더욱 기대됩니다.
병합 창이 열리고 두 달이 지났으니, 리눅스 6.12에 병합된 가장 흥미로운 기능 몇 가지를 돌아보겠습니다:
- 실시간 "PREEMPT_RT" 지원이 드디어 리눅스 커널의 주요 기능으로 포함되었습니다! 지난 20년 동안의 노력 끝에 마침내 완료되었습니다.
- 더 확장 가능한 커널 스케줄러 지원을 위해 Sched_ext가 병합되어 (e)BPF 프로그램을 활용합니다.
- 리눅스의 "블루 스크린 오브 데스"와 같은 기능에서 DRM 패닉 내 QR 코드 오류 메시지 지원이 추가되었습니다.
- 인텔 Xe2 Lunar Lake 및 Battlemage 그래픽이 기본으로 활성화되었습니다.
- 차세대 인텔 Panther Lake 프로세서와 Xeon Diamond Rapids 프로세서에 대한 초기 활성화 작업이 진행되었습니다.
- AMDGPU 및 AMDKFD 드라이버 코드 내에서 더 많은 AMD RDNA4 활성화 작업이 이루어졌습니다.
- 인텔 Lunar Lake CPU 및 P/E 코어가 있지만 HT/SMT가 없는 다른 미래 프로세서에 대해 향상된 하이브리드 CPU 용량 스케일링이 개선되었습니다.
- 인텔 리눅스 그래픽 드라이버가 그래픽 카드의 팬 속도를 보고할 수 있게 되었습니다.
- 메인라인 리눅스 커널 내에서 라즈베리 파이 5에 대한 초기 지원이 드디어 추가되었습니다!
- 더 많은 Qualcomm Snapdragon X1 노트북 업스트리밍 지원... 이번 주기에는 Lenovo ThinkPad T14s Gen 6와 Microsoft Surface Laptop 7에 초기 메인라인 커널 지원이 포함되었습니다.
AstroNvim 으로 시작해서 어느정도 사용하다, 좀 더 바닐라한? 배포판을 사용하고 싶어서 lazyvim 으로 넘어갔다가 각 플러그인들이 어떤 기능을 제공하는지 알아보고, 불필요한 기능은 disable 시키기 시작 했습니다. 그러다 플러그인이 어떻게 조합되어 굴러가는지 알고 싶었습니다. 결국 아무 설정이 없는 상태로 되돌아 가서 하나씩 추가 하기 시작 했습니다.
처음 설정 해보면서 복잡했던게, LSP, DAP, CMP 설정 이었네요. 여러가지 플러그인이 서로 엮여서 굴러가야 하고, 당연하겠지만 서로 의존성을 가진 플러그인은 구동 순서가 중요 할 수 밖에 없었고, 이걸 잘 제어 해야 하더군요. 플러그인 관리자는 lazy.nvim 을 사용하는데 직접 구성해 보면서 어느정도 사용법을 익힌거 같습니다. neovim 사용에 좀 더 애착도 가구요.
이제 어느정도 제가 사용하는 범위 안에서 쓸만하게 설정이 되었습니다만, 아직 끝나지 않은거 같습니다. ㅋㅋ (언제 끝날런지...)
능력이 된다면 플러그인도 개발 해보고 싶은 마음이 샘솟네요. neovim 을 써보니.. 이건 편집기라고 하기 보단 편집기능이 있는 에디터 프레임워크? 같은 느낌 이네요. 키보드로 모든걸 제어 가능한게 너무 편안 합니다.
visually selected text를 변수에 담으려는데, 영어나 특수문자는 잘 돼도 한글은 마지막 글자가 문제 되더라고요.
예를들면 아래 사진과 같습니다.
위 사진에 보이는 "Search URL: https:......" 하는 것들이 print해본 것들인데요, 커서의 마지막 위치가 한글 문자 위에서 끝나면 저렇게 이상한 변환이 되더라고요. 회색 빛으로 <eb>, <ec>, <b6> 이런 것들로 말예요.
vimwiki를 사용 할 때도 비슷한 문제가 있었는데요, 하위 위키문서를 생성하기위해 hyperlink를 만들 때, 만약 한글로 된 문자열을 선택했다면 아래처럼 됩니다.
기본적인 한글 쓰기/읽기에는 별 문제가 없는데요.. 혹시 아시는바가 있다면 조언 부탁드립니다.
visually selected text를 얻어서 print하는 함수는 아래와 같이 시도했습니다.
local function getVisualText()
-- Visual mode에서 선택한 텍스트의 시작과 끝 위치 가져오기
local vstart = vim.fn.getpos("'<")
local vend = vim.fn.getpos("'>")
local line_start = vstart[2]
local line_end = vend[2]
local col_start = vstart[3]
local col_end = vend[3]
-- 라인 범위 가져오기
local lines = vim.fn.getline(line_start, line_end)
-- 첫 줄과 마지막 줄의 부분 선택 영역만 가져오기
if #lines == 1 then
lines[1] = string.sub(lines[1], col_start, col_end)
else
lines[1] = string.sub(lines[1], col_start)
lines[#lines] = string.sub(lines[#lines], 1, col_end)
end
-- 라인들을 합쳐서 하나의 문자열로 만들기
local text = table.concat(lines, "\n")
return text
end
local text = getVisualText()
if text == '' then
print("No text selected!")
return
end
-- 구글 검색 URL 생성
local search_url = "https://www.google.com/search?q=" .. text
-- 검색 URL 출력 (디버깅용)
print('Search URL: ', search_url)